權限管理(接上篇)

本文主要介紹:1、文件的屬性 2、特殊權限:SUID、SGID、Sticky 3、訪問控制列表ACL

1、文件的屬性

(1)文件屬性

1

在Linux系統上,普通權限分為三類:讀(r)、寫(w)、執行(x)

文件的從屬關系也分為三類:

屬主(u):標明這個文件是誰的

屬組(g):標明該文件屬于哪個用戶組

other(o):除開文件屬主和屬組之外的所有

  • chown 修改文件屬主

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

chown [OPTION]…–reference=RFILE FILE…參照RFILE賦予FILE同樣的屬主、屬組

選項:

-R:表示遞歸修改

例如:chown -R u+r? dir1

chown wang dir1

chown wang:g1 dir1

  • chgrp? ?修改文件屬組 (語法同chown,但只能修改文件及目錄屬組)

(2)文件權限

2

  • ? ? ? ?????????對文件而言:

? ? ? ? ? ? ? ? r:表示可獲取文件的數據;cat、nano等查看類工具獲取文件內容

w:表示可修改文件的數據;可修改內容,不能刪除文件本身,但文件內容可以刪

x:表示可將此文件發起運行為進程(針對可執行程序文件或腳本,一般的文件不需要加x權限)

  • ? ? ? ? ? ? ? ?對目錄而言:

? ? ? ? ? ? ? ? ?r:表示可使用ls命令獲取其下的所有文件列表信息,但是獲取不到ls -l的詳細信息

w:表示可修改此目錄下的文件列表,即創建或刪除文件

x:表示可cd至目錄中,且可使用ls -l來獲取所有文件的詳細屬性信息

  • ? ? ? ? ? ? ? ? 除了以上三種常見的權限表示外,還有一個權限表示:

? ? ? ? ? ? ? ? ?X:功能是遞歸賦權時,只給目錄加上x權限,但如果文件之前有x權限就+x權限,文件之前沒有x權限,就不加。

(3)文件權限表示法

針對各個權限的表示,除了常規的r、w、x之外,還有另外數字方法進行表示

3

? ? ? ? ? ? ?例如:常見的權限:

644 ?rw-r–r–

600 rw——-

755 ?rwxr-xr-x

750 ?rwxr-x—

775 ?rwxrwxr-x

(4)新建文件和目錄的默認權限:umask值

? ? ? ? ? ? 在我們創建文件或目錄時,系統會根據umask值自動為我們分配一些權限

umask:文件的權限反向掩碼

  • ? ? ? ? ? ? 在創建文件時的默認權限為:666-umask(之所以文件用666去減,表示文件默認不能擁有執行權限,如果得到的結果中,仍然有執行權限,這需要將其+1)
  • ? ? ? ? ? ? 在創建目錄時的默認權限為:777-umask

 

  • ? ? ? ? ? ? 系統上默認的umask值為:
  • ????????????root:默認umask是022
  • ????????????普通用戶:默認umask是002

 

  • ????????查看umask值:? ? ? umask
  • ? ? ? ? umask #? ? :? ?來指定umask值,值只能是3位數字,不大于777
  • ????????umask -S? ? ?:模式方式顯示,結果類似這種格式:u=rwx,g=rx,o=rx
  • ????????umask -p? ? ?:顯示uamsk本身和其值,顯示結果類似這種格式:umask 0022

 

  • ????? ? 注意:在命令行里設置的umask只對當前shell有效,退出登錄后失效
  • ? ? ? ? 永久生效,用戶設置:? ~/.bashrc? ? ? ?全局設置:? ? /etc/bashrc

(5)文件權限操作命令

普通用戶僅能夠修改屬主為自己的文件的權限

方法一:chmod [OPTION]… MODE[,MODE]… FILE…模式法

  • ? ? ? ? ? ? ? ? ? ?賦權表示法(直接操作一類用戶的所有權限位):u=、g=、o=、a=、ug=、uo=、…..

如:chmod u=rwx? /data/file

  • ? ? ? ? ? ? ? ? ? 授權表示法:直接操作一類用戶的一個權限位:u+、u-、g+…..

如:chmod u-x? /data/file

方法二:chmod [OPTION]… OCTAL-MODE FILE…八進制數字法

? ? ?? ? ? ? ? ? ? ??例如:chmod 660? /data/file

方法三:chmod [OPTION]… –reference=RFILE FILE…(參考RFILE文件權限,給FILE文件賦權)

? ? ?? ? ? ? ? ? ? ??例如:chmod –reference=/etc/issue ?/data/file

2、特殊權限:SUID、SGID、Sticky

(1)SUID

  • ? ? ? ? ? ? ? ?功能:設置了SUID權限后,當用戶運行某二進制程序文件時,暫時擁有文件屬主權限。
  • ? ? ? ? ? ? ? ?作用對象:二進制可執行程序文件
  • ? ? ? ? ? ? ? ?前提條件:該文件屬主原本具有執行權限
  • ? ? ? ? ? ? ? ?展示位置:屬主的x位,如果屬主有x,則顯示為s,如果屬主沒有x,則顯示為S

????????設置方法:

chmod u+s FILE

chmod 4XXX FILE

取消方法:

chmod u-s FLIE

(2)SGID

  • ? ? ? ? ? ?功能:(?針對二進制可執行程序文件)設置了SGID權限,當用戶運行某二進制程序文件時,暫時擁有文件屬組權限。
  • ? ? ? ? ? ? ?常用(針對目錄而言)?當目錄屬組有寫權限,且有SGID權限時,那么所有屬于此目錄的屬組的用戶,在此目錄中新建文件或目錄時,新文件的屬組自動歸為此目錄的屬組;

? ? ? ? ? ? ? ?(可理解為:一般是一個小組協同工作時,創建一個協作目錄,讓這個目錄擁有SGID權限,然后小組內的用戶都在同一個屬組內,讓此屬組對該目錄有寫w權限,這樣,小組內的人在這個目錄下創建文件時,文件的屬組就變成了該目錄的屬組,這樣組內的其他人就對文件具有寫權限了,實現了小組工作的協同,但此時組內的人也能刪出其他人創建的文件,為了防止這種情況發生,就有了STICKY權限)

  • ????????作用對象:二進制程序文件和目錄
  • ????????前提條件:對二進制程序文件有x權限,對目錄而言有w和x權限
  • ????????展示位置:文件或目錄的屬組的執行權限位,如果屬組有x,則顯示為s,如果屬組沒有x,則顯示為S

????????設置方法:

chmod g+s FILE|DIR

chmod 2XXX FILE|DIR

取消方法:

chmod g-s FILE|DIR

(3)Sticky

  • ? ? ? ? ?功能:對目錄設置Sticky權限,每個用戶能創建新文件,但只能刪除自己的文件,無法刪除組內其他用戶創建的文件(對于屬組或全局可寫的目錄,組內的所有用戶或系統上的所有用戶,在此目錄中都能創建新文件或刪除所有的已有文件)
  • ????????作用對象:目錄
  • ????????前提條件:屬組或全局可寫的目錄,目錄有執行權限
  • ????????展示位置:other的執行權限位,如果other原本有執行權限,顯示為小寫t,否則,顯示為大寫T

????????設置方法:

chmod o+t DIR

chmod 1XXX? DIR

取消方法:

chmod o-t ?DIR

3、設定文件特定屬性

chatter

? ? ? ? chattr +A FILE ? 可以禁止訪問時更改訪問時間atime

chattr +i? FILE? ?只讀,不能刪除,修改內容,改名

chattr +a FILE? ?只讀,能修改內容(echo aaa >> file追加,不能nano),不能刪除,改名,移動

取消對應的權限可以將+改為-

lsattr

? ? ? ? ?lsattr file 查看文件的特定屬性

lsattr? /data/* 查看目錄/data/下所有文件的特定屬性

4、訪問控制列表ACL

ACL:Access Control List,實現靈活的權限管理,除了文件的屬主、屬組和其他人,可以對更多的用戶設置權限(CentOS7之前的版本無ACL功能,需手動增加 tune2fs -o acl /dev/sdb1 或者mount -o acl /dev/sdb1 /mnt/data)

ACL生效順序:所有者,自定義用戶,自定義組,其他人。(按順序匹配,點到即止)

mask起到限定設置acl的最高權限的作用,只影響除了所有者和other的之外的人和組,類似于“馬路限高桿”,

setfacl

  • ? ? ? ? 語法:setfacl [-bkndRLP] { -m|-M|-x|-X … } file …

????????選項:

?-b FILE|DIR? ? ?刪除所有自定義的acl規則,基本的acl規則(所有者,群組,其他)將被保留

?-k DIR? ? ?刪除默認的acl規則

-R? ? ?–recursive:遞歸的對所有文件及目錄進行操作

-m ?表示設置ACL規則

-x? ?表示取消ACL規則

-M acl.txt FILE? 表示從指定的文件中讀取規則,并以此為模板,設置指定文件FILE中的規則(?acl.txt格式為:u:username:rx或g:groupname:rw等)

-X acl2.txt FILE ?表示從指定的文件中讀取規則,并以此為模板,刪除指定文件FILE上的規則(acl.txt格式為:u:username 或 g:groupname 等)

-n? ? ? ?–no-mask:不要重新計算有效權限。setfacl默認會重新計算ACL mask,除非mask被明確的制定。

–mask? ? ?重新計算有效權限,即使ACL mask被明確指定

–set? ? ?表示清空原ACL的權限,用新的代替,需要注意的是,新的ACL規則中必須要包含文件自身的權限(UGO)定義,也就是類似:( 如 setfacl –set u::rwx,g::r,o::,u:bican:rwx – FILE

–set-file 以文件為模板,創建指定文件的ACL。如:(getfacl FILE1 | setfacl –set-file=- ?FILE2表示復制FILE1的ACL權限給FILE2)

?加上d:設置了默認規則之后,表示在此之后在該目錄下新建的文件或目錄都默認具有的ACL權限,但現有文件和目錄本身還是要另外單獨設置ACL規則

權限表達式:

[d:] u:username:mode 指定用戶的權限,如果username為空,表示設置文件所有者的權限。加d:表示設置的是默認規則

[d:] g:groupname:mode 指定群組的權限,如果groupname為空,表示設置文件所有群組的權限。加d:表示設置的是默認規則

[d:] m: :mode 指定mask權限,?加d:表示設置的是默認規則

示例:setacl -m u:bican:0 f1? 設置用戶bican對文件f1權限為0

setfacl -m u::rw f1 設置文件f1屬主權限為讀寫

setfacl -x g:g2 f1? ?刪除文件f1的g2附屬組

setfacl -m mask::r f1? 設置文件f1屬主和other之外的用戶或組最高權限為r

getfacl

getfacl FILENAME? ?查看文件或目錄ACL權限的詳細信息

備份和恢復ACL

? ?getfacl -R /tmp/dir1 > acl.txt? ? 保存/tmp/dir1目錄的ACL設置

? ?setfacl -R -b/tmp/dir1? 遞歸刪除dir1的ACL

? ?setfacl -R –set-file=acl.txt /tmp/dir1? 或者? ?setfacl –restore acl.txt? ? 恢復dir1的ACL設置

? ?getfacl -R /tmp/dir1? 查看dir1的ACL,完成

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/96151

(1)
bican813bican813
上一篇 2018-04-15
下一篇 2018-04-15

相關推薦

欧美性久久久久