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)文件權限
- ? ? ? ?????????對文件而言:
? ? ? ? ? ? ? ? r:表示可獲取文件的數據;cat、nano等查看類工具獲取文件內容
w:表示可修改文件的數據;可修改內容,不能刪除文件本身,但文件內容可以刪
x:表示可將此文件發起運行為進程(針對可執行程序文件或腳本,一般的文件不需要加x權限)
- ? ? ? ? ? ? ? ?對目錄而言:
? ? ? ? ? ? ? ? ?r:表示可使用ls命令獲取其下的所有文件列表信息,但是獲取不到ls -l的詳細信息
w:表示可修改此目錄下的文件列表,即創建或刪除文件
x:表示可cd至目錄中,且可使用ls -l來獲取所有文件的詳細屬性信息
- ? ? ? ? ? ? ? ? 除了以上三種常見的權限表示外,還有一個權限表示:
? ? ? ? ? ? ? ? ?X:功能是遞歸賦權時,只給目錄加上x權限,但如果文件之前有x權限就+x權限,文件之前沒有x權限,就不加。
(3)文件權限表示法
針對各個權限的表示,除了常規的r、w、x之外,還有另外數字方法進行表示
? ? ? ? ? ? ?例如:常見的權限:
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