linux用戶權限管理

   在linux文件系統中使用ls -l命令可以查看文件的屬性,但是我們明白其中屬性各自代表的意思嗎?下面我們就來看一看,這其中的奧義。。。

文件屬性

使用ls命令查看文件,可以發現列表分為幾個部分,各自所代表的意義如圖所示:

linux用戶權限管理1.PNG

文件屬性操作

    chown 設置文件的所有者

    chgrp 設置文件的屬組信息

修改文件的屬主:chown

語法:chown[OPTION]… [OWNER][:[GROUP]] FILE…

用法:

    OWNER

    OWNER:GROUP

    :GROUP

命令中的冒號可用.替換;

    -R: 遞歸

chown[OPTION]… –reference=RFILE FILE…

linux用戶權限管理2.png

修改文件的屬組:chgrp

語法:

    chgrp[OPTION]… GROUP FILE…

    chgrp[OPTION]… –reference=RFILE FILE…參考RFILE文件的屬組,將FILE的修改為同RFILE

linux用戶權限管理3.png

用法:-R 遞歸

4.png

linux用戶權限管理

文件權限

文件的權限主要針對三類對象進行定義:

    owner: 屬主, u

    group: 屬組, g

    other: 其他, o

每個文件針對每類訪問者都定義了三種權限:

    r: Readable

    w: Writable

    x: eXcutable

同樣的權限作用于不同的文件是所代表的意義有所不同:

文件:

    r: 可使用文件查看類工具獲取其內容

    w: 可修改其內容

    x: 可以把此文件提請內核啟動為一個進程

目錄:

    r: 可以使用ls查看此目錄中文件列表

    w: 可在此目錄中創建文件,也可刪除此目錄中的文件

    x: 可以使用ls -l查看此目錄中文件列表,可以cd進入此目錄

    X:只給目錄x權限,不給文件x權限

文件權限對照表:

linux用戶權限管理5.png

權限也可以使用八進制數字表示,相對應的

—  000 0

–x  001 1

-w-  010 2

-wx  011 3

r–  100 4

r-x  101 5

rw-  110 6

rwx  111 7

例如:

rw- r– —:640

rwx r-x r-x: 755

修改文件權限

語法:

    chmod[OPTION]… OCTAL-MODE FILE…

        -R: 遞歸修改權限

    chmod[OPTION]… MODE[,MODE]… FILE…

MODE:

    修改一類用戶的所有權限:

    u= g= o= ug= a= u=,g=

    修改一類用戶某位或某些位權限

    u+ u-g+ g-o+ o-a+ a-+ –

    chmod[OPTION]… –reference=RFILE FILE…

    參考RFILE文件的權限,將FILE的修改為同RFILE;

6.png   linux用戶權限管理

X:只給目錄x權限,不給文件x權限(若文件初始有x權限,則增加)

linux用戶權限管理7.png

也可數字表示權限

linux用戶權限管理8.PNG

新建文件和目錄的默認權限

新建普通文件

用戶新建文件就會發現新建文件的權限不是完整的權限,

linux用戶權限管理9.png

而普通用戶所新建的文件的權限和root所創建的文件的權限又有所不同

linux用戶權限管理10.png

新建目錄

新建目錄可以發現新建目錄的權限也是不完整,但是和新建的普通文件的權限還是有些不同

linux用戶權限管理11.png

普通用戶所新建的目錄的權限也和root新建的目錄權限有所不同。

linux用戶權限管理12.png

這是因為有umask的存在:

什么是umask?

      umask一般是用在你初始創建一個目錄或者文件的時候賦予他們的權限,umask設置了用戶創建文件的默認權限,它與chmod的效果剛好相反,umask設置的是權限“補碼”,而chmod設置的是文件權限碼。一般在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中設置umask值。

系統管理員可以根據需要來自己設定一個合理的umask值,

root和普通用戶的 umask值有所不同

非特權用戶umask是002

root的umask是022

linux用戶權限管理13.png

這四個數字分別代表著什么意思?( 注:一般使用時只使用后三位)

    前面提到用戶的權限可以使用數字的方式來表達,這里同樣是使用數字來表達權限的意思,只是這里的數字代表的是賦值權限的時候所舍棄的值。

這里首先要說明兩點:

  1、針對目錄來說x權限代表可以進入該目錄,所以說對于這個權限初始賦值是沒什么問題的;

  2、針對文件的x的權限代表執行,這個風險太高,所以一般權限初始賦值必須去掉x的;

第一個數字表示:suid丟棄的權限

第二個數字表示:文件或目錄屬主所需要丟棄的值

第三個數字表示:文件或目錄屬組所需要丟棄的值

第四個數字表示:文件或目錄的其他用戶所需要丟棄的值,

因為文件一般情況下不給予執行權限,所以:

新建FILE權限: 666-umask

    如果所得結果某位存在執行(奇數)權限,則將其權限+1

那么現在就可以解釋root用戶創建新文件的權限為:

    666 – 022 = 644,與上圖相對應

因為要進入目錄需要執行權限,所以:

    新建DIR權限: 777-umask


umask命令:

    umask: 查看

    umask#: 設定

    umask002

    umask –S 模式方式顯示

linux用戶權限管理14.png

    umask –p 輸出可被調用(經常使用于腳本文件)

使用命令設置只在當前shell有效,要永久生效就需要寫入配置文件了。

    全局設置:/etc/bashrc       用戶設置:~/.bashrc

這里可以使用umask命令設置后在使用的-p選項寫入文件:

linux用戶權限管理15.png

例:誤刪除了用戶user1的家目錄,請重建并恢復該用戶家目錄及相應的權限屬性

1、[root@localhost ~]# cp -r  /etc/skel/.   /testdir/user1name

2、[root@localhost ~]# chown -R user1:user1 /testdir/user1name/

3、[root@localhost ~]# chmod 700 /testdir/user1name/

linux用戶權限管理16.png

linux文件系統上的特殊權限:

  linux文件系統中不僅僅只有rwx三種權限,為了滿足工作的需要,linux文件系統中還有三種特殊權限,SUID,SGID,Sticky,他們所面對的對象分別是 USER,GROUPS,OTHER.說著三種特殊權限 ,就要提一下linux中的安全上下文觀念了,

什么是安全上下文呢?

linux安全上下文:

   用戶不同,所擁有的權限也有所不同,不同的用戶可以使用同一個命令,但是所達到的效果往往有所不同,這是因為,用戶在系統中所發起的進程,能夠訪問資源的權限取決于進程的運行者身份。

運行中的程序以進程發起者的身份運行:

root: /bin/cat

mage: /bin/cat

17.pnglinux用戶權限管理

18.png

可以看到,root用戶和普通用戶執行同一個命令出現了兩種不同的現象。

linux用戶權限管理

文件有屬主和屬組;進程也有屬主和屬組;

(1) 任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限

(2) 啟動為進程之后,其進程的屬主為發起者;進程的屬組為發起者所屬的組

(3) 進程訪問文件時的權限,取決于進程的發起者

    (a) 進程的發起者,同文件的屬主:則應用文件屬主權限

    (b) 進程的發起者,屬于文件屬組;則應用文件屬組權限

    (c) 應用文件“其它”權限


可執行文件上SUID權限

任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限

啟動為進程之后,其進程的屬主為原程序文件的屬主

SUID只對二進制可執行程序有效

SUID設置在目錄上無意義

權限設定

chmod  u+s  FILE…

chmod  u-s   FILE…

權限位映射:

SUID: user,占據屬主的執行權限位

s: 屬主擁有x權限

S:屬主沒有x權限

文件必須有x權限才能生效,若沒有x權限,加上SUID權限后不生效,而且將以“S”的形式展現

例:linux用戶權限管理

19.png

   平時用戶修改密碼使用passwd命令,可以看下passwd命令的二進制文件權限和/etc/passwd文件的屬性可以發現普通用戶可以更改密碼的原因;

   因為:/etc/passwd文件屬組和其他用戶是沒有寫權限的,所以普通用戶無法更改密碼文件,可以平時普通用戶確實可以修改自己的密碼,這是因為當普通用戶執行passwd命令時,因為/bin/passwd文件具SUID權限,所以當執行passwd命令時,是以進程屬主身份也就是root發起的,這樣就可以修改密碼了。

linux用戶權限管理20.png



可執行文件上SGID權限

任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限

啟動為進程之后,其進程的屬主為原程序文件的屬組

權限設定:

    chmod g+s FILE…

    chmod  g-s FILE…

權限位映射:

SGID: group,占據屬組的執行權限位

s: group擁有x權限

S:group沒有x權限

例:

如cat命令文件原本權限為755其他用戶也有執行權限,更改為750,使其他用戶沒有執行權限;

linux用戶權限管理21.png

賦予cat文件SGID權限

linux用戶權限管理22.png

將user1用戶加入root組,再使用cat命令可以正常查看。

linux用戶權限管理23.png

所以:具有SGID權限的可執行文件,啟動為進程之后,其進程的屬主為原程序文件的屬組

目錄上的SGID權限

默認情況下,用戶創建文件時,其屬組為此用戶所屬的主組

一旦某目錄被設定了SGID,則對此目錄有寫權限的用戶在此目錄中創建的文件所屬的組為此目錄的屬組

通常用于創建一個協作目錄

權限設定:

chmod g+s DIR…

chmod g-s DIR…

linux用戶權限管理24.png

更改目錄權限[root@localhost ~]# chmod g+s /home/user1/ff

再創建文件可以看到屬組和目錄屬組一致:

linux用戶權限管理25.png



Sticky 位

 具有寫權限的目錄通常用戶可以刪除該目錄中的任何文件,無論該文件的權限或擁有權

 在目錄設置Sticky 位,只有文件的所有者或root可以刪除該文件

sticky 設置在文件上無意義

權限設定:

chmod o+t DIR…

chmod  o-t DIR…

權限位映射:

  Sticky: other,占據other的執行權限位

    t: other擁有x權限

    T:other沒有x權限

如:在/testdir目錄下有三個文件屬主屬組都不同

linux用戶權限管理26.png

使用任意用戶可以刪除其他用戶的文件

linux用戶權限管理27.png

給/testidr目錄加上Sticky權限后,可以發現只能刪除屬于自己的文件

linux用戶權限管理28.png

linux中普通權限可以使用使用數字使用,特殊權限同樣可以使用數字表示

計算方法和普通權限的計算方法相同

SUID SGID STICKY

000 0

001 1

010 2

011 3

100 4

101 5

110 6

111 7

如:添加SUID權限

chmod 4777  FILENAME

linux用戶權限管理29.png

有時為了保護重要文件,可能需要設定一些特定的屬性,如:不能更改,刪除。這是就需要用到

命令:chattr

禁止刪除,改名,更改:

chattr +i

取消:chattr -i

30.pnglinux用戶權限管理

只能增加:

  chattr +a

取消:chattr -a

linux用戶權限管理31.png

lsattr 顯示特定屬性

linux用戶權限管理32.png


訪問控制列表

   上述介紹的幾種權限只是針對三種用戶,屬主,屬組,其他人。遠遠不夠滿足平時的使用,如想讓某個用戶查看文件,而又不影響屬組其他人的權限,這時就需要使用訪問控制列表了。它可以實現靈活的管理權限管理。

ACL:Access Control List,實現靈活的權限管理

  除了文件的所有者,所屬組和其它人,可以對更多的用戶設置權限

在CentOS7.0默認創建的xfs和ext4文件系統有ACL功能。CentOS7.X之前版本,默認手工創建的ext4文件系統無ACL功能。需手動增加:

    tune2fs –o acl/dev/sdb1

    mount –o acl/dev/sdb1 /mnt

ACL生效順序:所有者,自定義用戶,自定義組,其他人


setfacl設置文件的ACL權限

-m :修改后續的acl參數給文件使用    u:USERNAME:權限   filename

-x: 刪除后續的參數    u:USERNAME

-b:刪除所有的acl設置參數

-k:刪除默認的acl參數

-R:遞歸設置acl

-d:設置默認的acl參數,只對目錄有效。

–set選項會把原有的ACL項都刪除,用新的替代,需要注意的是一定要包含UGO的設置,不能象 -m一樣只是添加ACL就可以.如:

    setfacl –set u::rw,u:wang:rw,g::r,o::-file1

遞歸創建ACL權限:

    setfacl -Rm g:GROUP:rwX directory

對目錄下新建的文件繼承目錄ACL權限:

    setfacl -m d:u:USER:rx directory

setfacl-k dir 刪除默認ACL權限

setfacl -b file1清除所有ACL權限


getfacl:查看文件的acl權限

參數基本和setfacl相同

getfacl  file1 | setfacl  –set-file=-  file2 復制file1的acl權限給file2

批量修改acl權限:

1、編輯一個文件,

格式: u:USERNAME:權限

    g:GROUPNAME:權限

2、setfacl -M file.acl  file|directory

批量刪除acl權限:

1、編輯一個文件

格式:u:username

   g : groupname

2、setfacl -X file.acl  file|directory

ACL文件上的group權限是mask 值(自定義用戶,自定義組,擁有組的最大權限),而非傳統的組權限

getfacl可看到特殊權限:flags

默認ACL權限給了x,文件也不會繼承x權限。


mask權限:

   mask權限惡意理解為“有效權限”的意思,它的意思為用戶或組所設置的權限必須要存在于mask的權限范圍內才會生效。

   mask只影響除所有者和other的之外的人和組的最大權限,mask需要與用戶的權限進行邏輯與運算后,才能變成有限的權限(Effective Permission)

設置mask值

   setfacl-m mask::rx file

前文曾提到umask,那么和這個mask有什么區別呢?

     umask:是在設置初始文件時賦予它們默認的權限,是做 “減法”,通過文件的最大權限減去umask的值就是文件初始的權限的值。也可以叫做權限的“補碼”。

     而acl中的mask值,是針對特定的對象,設置一個硬性的標準,針對的對象所有權限不能超過mask權限。 umask與mask相同點就是都是對權限進行限制。不同點就是umask是文件權限的“補碼”,而mask是針對對象的權限最大值。


備份和恢復ACL

       有時備份或轉移文件時,文件會丟失ACL權限,而主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 參數。但是tar等常見的備份工具是不會保留目錄和文件的ACL信息。這是就需要先將文件的acl屬性保存至一個文件,備份文件后,在用保存的屬性文件恢復本份文件的acl權限。

    #getfacl -R /tmp/dir1 > acl.txt

    #setfacl -R -b /tmp/dir1

    #setfacl -R –set-file=acl.txt /tmp/dir1

    #getfacl -R /tmp/dir1

  在/data/testdir里創建的新文件自動屬于g1組,組g2的成員如:user2能對這些新文件有讀寫權限,組g3的成員如:user3只能對新文件有讀權限,其它用戶(不屬于g1,g2,g3)不能訪問這個文件夾。

1、將文件的屬組更改為g1,

·#  chgrp g1 /data/testdir/

2、將文件加上SGID權限,其他人權限為0

·#chmod 2770 /data/testdir/

3、設置acl權限

·#setfacl -m g:g2:rwx /data/testdir/

·#setfacl -m g:g3:rx /data/testdir/

·#setfacl -m d:g:g2:rw /data/testdir/

·# setfacl -m d:g:g3:r /data/testdir/

目錄的acl權限:

linux用戶權限管理33.png

目錄下新建文件的acl權限

linux用戶權限管理34.png

user2可以讀寫:

linux用戶權限管理35.png

user3只有寫權限:

linux用戶權限管理36.png

其他人不能訪問文件夾:

linux用戶權限管理37.png

原創文章,作者:Groot,如若轉載,請注明出處:http://www.www58058.com/29029

(0)
GrootGroot
上一篇 2016-08-04
下一篇 2016-08-04

相關推薦

  • Package Manager

    Package Manager Package 管理工具的分類 rpm yum Source Code Install 管理工具的分類 前段管理工具:Debian:debRedhat,Suse…:rpm 前端管理工具:Debian:apt-getRedhat:yum,dnf RPM RPM是什么?RPM全稱是RPM Package Manager…

    2016-03-27
  • 一個簡單的負載均衡集群:web服務

    一個簡單的負載均衡集群:以web服務為例 實驗環境:三臺主機(CentOS 7.3)             主機1:IP地址 172.18.0.88(Haproxy代理服務器)             主機2:IP地址 172.…

    Linux干貨 2017-05-17
  • yum倉庫配置

    yum倉庫搭建 yum客戶端在安裝之前要在服務器下載相關的源數據緩存在 cachedir=/var/cache/yum/$basearch/$releasever中 gpgcheck=1檢查數據包的簽名完整性 導入鑰匙或gpgcheck=0就不檢查否側安裝不了yum 在/etc/yum.conf設置配置文件 在/etc/yum.repos.d中創建一個后綴是…

    2017-12-03
  • Raid的工作原理

    1,什么是Raid Raid的基本原理就是把多個磁盤組合到一起,組成一個磁盤組,使性能達到或超過一個容量巨大價格昂工藝的磁盤,當然基于硬件的RAID解決方案比基于軟件RAID技術在使用性能和服務性能上稍勝一籌,具體表現在檢測和修復多位錯誤的能力、錯誤磁盤自動檢測和陣列重建等方面。 2.RAID級別介紹;一般常用的RAID階層,分別是RAID 0、RAID1、…

    Linux干貨 2017-06-19
  • Shell編程基礎

    1.編程的基本概念 程序:指令+數據   程序編程風格:   過程式:以指令為中心,數據服務于指令。   對象式:以數據為中心,指令服務于數據。    shell程序:提供了編程能力,解釋執行。    計算機:只識別二進制指令;    編程語言: &…

    Linux干貨 2016-08-15

評論列表(1條)

  • rex
    rex 2016-08-04 22:50

    寫的很好,對特殊權限的用法和應用場景有了不錯的了解。但是為什么文章中會有損壞的文件?這需要自己找找原因了。

欧美性久久久久