-
文件屬性
在linux系統中一切皆文件,所有的數據都是以文件的形式存儲在系統中,我們可以通過ls命令可以查看文件的相關屬性,如下圖:
圖1-1 文件權限及屬性
從上圖中,可以看到該boot文件權限是r-xr-xr-x(d表示該文件是一個目錄),在linux系統中對文件進行操作的一共三類對象,分別是:
owner 所屬主: 即創建該文件的人 u
group 所屬組: 即文件所屬群組 g
other 其他人: 即屬主和屬組之外的人 o
每個文件對每類用戶都定義了三種權限:
Readable:可讀 文件-可以獲取文件的內容 目錄-可以使用ls命令查看文件列表 r
Writable:可寫 文件-可以對文件進行修改 目錄-可以在目錄中創建和刪除文件 w
Excutable:可執行 文件-可以對文件執行操作 目錄-可以ls查看文件列表,cd進入目錄 x
注:X表示只給目錄x權限,不給文件x執行權限
圖1-2 X權限
八進制下權限的表現形式:
圖1-3 八進制下的權限表現形式
2.文件權限及屬性修改命令
2.1 chmod
改變文件權限
圖2-1 chmod幫助手冊
從幫助文檔中,可以獲取chmod命令的相關信息,它語法格式有如下幾種:
chmod [OPTION]…MODE[,MODE]…FILE…
chmod [OPTION]…OCTAL-MODE FILE…
chmod [OPTION]…–REFERENCE=RFILE FILE…
-R 遞歸修改權限
修改一類用戶的所有權限:
u= g= o= ug= a= u= ,g=
修改某類用戶一位或多位權限
u+ g+ o+ u- g- o- a+ a-
圖2-2 chmod命令使用
2.2 chown
修改文件的屬主和屬組
圖2-3 chown幫助手冊
chown改變文件所有者和所屬組,語法格式:
chown [option]…[owner][:[group]] file…
chown [option]…reference=rfile file…
-R:遞歸
圖2-4 chown命令使用
3.文件系統上的特殊權限
a.任何一個可執行程序文件能不能執行為進程,是由它的發起者是否有執行權限決定的
b.啟動為進程后,進程的屬組為發起者,屬組為發起者所屬的組
c.進程訪問文件時的權限,取決于進程的發起者
3.1 SUID
圖3-1 SUID文件
SUID只對二進制文件可執行程序有效
SUID設置在目錄上是無效的
chmod u+s file…
chmod u-s file…
3.2 SGID
可執行文件上的SGID權限
啟動為進程后,其進程的屬主為原程序的屬組
圖3-2 SGID文件
chmod g+s file…
chmod g-d file…
目錄上的SGID權限
默認情況下,用戶創建文件,其屬組為此用戶所屬的主組,一旦某目錄被設置為SGID,則對此目錄有些的權限的用戶在此目錄創建的文件所屬的組為此目錄的屬組
通常用于創建一個協作目錄
圖3-3 SGID目錄
chmod g+s dir…
chmod g-s dir…
3.3 Sticky位
當一個用戶對一個目錄具有寫權限時,就可以對目錄中的任何文件執行刪除操作,而不需要看該文件的權限。即便該文件由他人創建,并且有嚴格的讀寫權限,只要該文件是創建在該用戶擁有讀寫權限的目錄下,那么該用戶就可以直接對文件進行刪除操作,這樣就不利于數據的安全性,完整性…所以,就有了sticky位,它的作用就是用來約束用戶的行為,在有sticky位的目錄中創建文件,那么只有文件所有者和root才能對文件進行刪除操作,即使,他人有對該目錄的讀寫執行權限,也無法對非本人創建的文件進行刪除。
圖3-4 sticky位目錄及操作
從上圖也可看出,普通用戶想要刪除不是由他創建的目錄時,顯示不允許的操作,即使該用戶對該目錄有讀寫執行的權限。
sticky位設置在文件上無意義
chmod o+t dir…
chmod o-t dir…
3.4 SUID SGID STICKY
SUID:user 占據屬主的執行權限位 4
s:屬主具有x權限
S:屬主沒有x權限
SGID:group 占據數組的執行權限位 2
s:group擁有x權限
S:group沒有x權限
STICKY:other 占據other的執行權限位 1
t:other擁有x權限
T:other沒有執行權限
3.5 文件特定屬性設定
chattr
圖3-5 chattr幫助手冊
chattr:改變linux文件系統中文件屬性
+i:當為某個文件設置了i屬性,那么該文件就不能被刪除或者重命名,也不能創建鏈接,也不能將任何數據寫入到該文件中,只有超級管理員和文件的擁有者才能設置或清除這個屬性
+a:當給某個文件設定了a屬性,那就表明只能往該文件寫入數據,其他操作均不能實現
lsattr:可以查看文件的這些特定屬性
圖3-6 chattr命令操作
4.訪問控制列表ACL
ACL: Access Control List 訪問控制列表(實現靈活的權限管理)
作用: 除了文件的所有者,所屬組和其他人,可以對更多的用戶進行權限設置
ACL生效順序:所有者 自定義用戶 自定義組 其他人
4.1 setfacl
圖4-1 setfacl幫助手冊
setfacl:設置文件訪問控制權限列表
setfacl -m u:user:rwx file|directory 對指定用戶設置rwx的acl權限
setfacl -m g:group:rwx fiel|directory 對指定的組設置rwx的acl權限
setfacl -Rm g:group:rwX directory 對指定的組設置rwx遞歸目錄的acl權限
setfacl -x u:user file | directory 刪除指定用戶的acl權限
setfacl -X facl.acl directory 刪除指定的acl權限文件
setfacl -k dir 刪除默認的acl權限
setfacl -b file 清除所有的acl權限
4.2 getfacl
圖4-2 getfacl幫助手冊
getfacl:獲取文件訪問控制列表信息
getfacl file | directory 查看文件或目錄的acl權限
圖4-3 getfacl命令使用
備份和恢復ACL
getfacl -R /tmp/dir1 > acl.txt
setfacl -R -b /tmp/dir1
setfacl -R –set-file=acl.txt /tmp/dir1
getfacl -R /tmp/dir1
5.umask和acl mask的聯系與區別
5.1 umask
當我們登錄系統后創建文件總是有一個默認的權限,普通用戶創建文件默認權限664,創建文件夾默認權限是775,root用戶默認創建文件權限644,創建的目錄默認權限755.這是由umask來限定的,它的參數設置在/etc/profile中,我們可以在/etc/bashrc或家目錄下的.bashrc進行自定義的設置。
圖5-1 umask參數
root用戶的umask碼為022,普通用戶的umask碼為002.
圖5-2 root用戶
圖5-3 普通用戶
5.2 acl mask
ACL中的mask只影響出所有者和other的之外的人和組的最大權限,mask需要與用戶的權限進行邏輯與運算后,才能變成有效的權限。也就是用戶或組的設置必須存在于mask限定的范圍內才會生效,即當給予了用戶或者組rwx的權限,但是mask碼為rw,那么x的權限就不會生效,有限的就只是rw的權限,有限權限就是不能大于mask碼的權限,可以小于或者等于mask碼的權限。
圖5-4 ACL中的mask碼
ACL中的mask碼規定了用戶或組的默認最大權限,超過這個權限的權限會變成無效的權限,即便給了額外的權限,該權限也無法進行操作,文件中的umask碼則是用文件666(目錄777)-umask,與umask位相同的權限就會被屏蔽掉,從而得出最終的權限。
原創文章,作者:Stupid_L,如若轉載,請注明出處:http://www.www58058.com/28085