用戶權限
在Linux系統(tǒng)中,一個用戶對文件所能執(zhí)行的權力稱為用戶權限
文件屬性
權限位
rwx rwx rwx
從做到右,三個一組,分別定義了文件所有者,所屬組,other對文件擁有的權限
權限
r: Readable 讀
w: Writable 寫
x: eXcutable 執(zhí)行
對文件的權限意義:
r: 可使用文件查看類工具獲取其內容
w: 可修改其內容
x: 可以把此文件提請內核啟動為一個進程
對目錄的權限意義:
r: 可以使用ls查看此目錄中文件列表
w: 可在此目錄中創(chuàng)建文件,也可刪除此目錄中的文件
x: 可以使用ls -l查看此目錄中文件列表,可以cd進入此
用戶訪問文件得到的權限的判斷過程
先看是不是所有者,如果是所有者,直接匹配權限,后面的就不看了,不是就往下看,一旦匹配,不往下走,匹配順序:所有者,所屬組,other
文件權限操作命令
chmod
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
特殊權限
SUID, SGID, Sticky
三種常用權限:r, w, x user, group, other
安全上下文
前提:進程有屬主和屬組;文件有屬主和屬組
(1) 任何一個可執(zhí)行程序文件能不能啟動為進程,取決發(fā)起者對程序文件是否擁有執(zhí)行權限
(2) 啟動為進程之后,其進程的屬主為發(fā)起者,進程的屬組為發(fā)起者所屬的組
(3) 進程訪問文件時的權限,取決于進程的發(fā)起者
(a) 進程的發(fā)起者,同文件的屬主:則應用文件屬主權限
(b) 進程的發(fā)起者,屬于文件屬組;則應用文件屬組權限
(c) 應用文件“其它”權限
SUID
suid 放在所有者權限的x位,表現(xiàn)為大S
只能作用在二進制的可執(zhí)行的程序上才有意義,不能作用在非二進制可執(zhí)行程序,所有用戶在執(zhí)行可執(zhí)行二進制程序時繼承所有者的權限
權限設定:
chmod u+s FILE...
chmod u-s FILE...
SGID
sgid 放在所屬組權限的x位,表現(xiàn)為大S
同suid,所有用戶在執(zhí)行可執(zhí)行二進制程序時繼承所屬組的權限
權限設定:
chmod g+s FILE...
chmod g-s FILE...
Sticky
Sticky (粘滯位) 放在other權限的x位,表現(xiàn)為大T(原本有執(zhí)行權限表現(xiàn)為t,原本沒有執(zhí)行權限變現(xiàn)為T)
具有寫權限的目錄通常用戶可以刪除該目錄中的任何文件,無論該文件的權限或擁有權
在目錄設置Sticky 位,只有文件的所有者或root可以刪除該文件
sticky 設置在文件上無意義
權限設定:
chmod o+t DIR...
chmod o-t DIR...
大X
X(x權限特殊形式)
針對目錄增加x權限
對文件
1 無執(zhí)行的文件,不會增加x權限
2 任意三種人有執(zhí)行權限,也會增加x權限
ACL
ACL:Access Control List
除了文件的所有者,所屬組和其它人,可以對更多的用戶設置權限
CentOS7默認創(chuàng)建的xfs和ext4文件系統(tǒng)具有ACL功能
CentOS7之前版本,默認手工創(chuàng)建的ext4文件系統(tǒng)無ACL功能,需手動增加
tune2fs –o acl/dev/sdb1
mount –o acl/dev/sdb1 /mnt/test
ACL生效順序:所有者,自定義用戶,自定義組,其他人
為多用戶或者組的文件和目錄賦予訪問權限rwx
?mount -o acl /directory
?getfacl file |directory
?setfacl -m u:wang:rwx file|directory
?setfacl -Rm g:sales:rwX directory
?setfacl -M file.acl file|directory
?setfacl -m g:salesgroup:rw file| directory
?setfacl -m d:u:wang:rx directory
?setfacl -x u:wang file |directory
?setfacl -X file.acl directory
ACL文件上的group權限是mask 值(自定義用戶,自定義組,擁有組的最大權限),而非傳統(tǒng)的組權限
getfacl可看到特殊權限:flags
通過ACL賦予目錄默認x權限,目錄內文件也不會繼承x權限
base ACL 不能刪除
setfacl-k dir 刪除默認ACL權限
setfacl–b file1清除所有ACL權限
getfaclfile1 | setfacl--set-file=-file2 復制file1的acl權限給file2
mask只影響除所有者和other的之外的人和組的最大權限
Mask需要與用戶的權限進行邏輯與運算后,才能變成有限的權限(Effective Permission)
用戶或組的設置必須存在于mask權限設定范圍內才會生效setfacl-m mask::rxfile
--set選項會把原有的ACL項都刪除,用新的替代,需要注意的是一定要包含UGO的設置,不能象-m一樣只是添加ACL就可以
示例:
setfacl --set u::rw,u:wang:rw,g::r,o::-file1
備份和恢復ACL
主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 參數(shù)。但是tar等常見的備份工具是不會保留目錄和文件的ACL信息
getfacl -R /tmp/dir1 > acl.txt
setfacl -R -b /tmp/dir1
setfacl -R --set-file=acl.txt /tmp/dir1
setfacl --restore acl.txt
getfacl -R /tmp/dir1