Linux下使用者對檔案的操作許可權有
r-讀
,w-寫
,x-可執行
三種,而對linux下的檔案而言,使用者身份分為:所有者,所屬組,其它人; 且檔案的所有者,所屬組都只能是一個,所以在對檔案分配使用者的使用許可權時,只能對這三種身份進行分配rwx許可權,Linux 主要作為伺服器系統使用,使用者眾多;所以在實際使用場景中,這三種身份並不能很好地實現資源許可權分配問題,所以就有了ACL許可權ACL許可權就是為了解決linux下三種身份不能滿足資源許可權分配需求的問題的
1、檢視分割槽ACL許可權是否支援
ACL許可權是作用於分割槽的一種許可權
例如:
dumpe2fs -h /dev/sda5
-h: 僅顯示超級塊中資訊,而不顯示磁碟塊組的詳細資訊
返回:
... ...
Default mount options: user_xattr acl
... ...
如果看到上面這一行含有acl,證明分割槽支援ACL許可權
- 如果不支援ACL許可權
臨時開啟根分割槽ACL許可權支援
mount -o remount,acl /
永久開啟根分割槽ACL許可權支援
vim /etc/fstab
修改成:
... ...
UUID=xxxxx-xxxx-xxxx / ext4 defaults,acl 1 1
... ...
加入
,acl
重新掛載:
mount -o remount /
其實
defaults
預設帶有ACL許可權,加入ACL是明確指定開啟ACL許可權
1、getfacl
檢視ACL許可權
getfacl 檔名
2、sefacl
設定ACL許可權
setfacl 選項 檔名
- 選項
-m: 設定ACL許可權
-x: 刪除指定的ACL許可權
-b: 刪除所有的ACL許可權
-d: 設定預設ACL許可權
-k: 刪除預設ACL許可權
-R: 遞迴設定ACL許可權
例如:
setfacl -m u:lw:rx /home/av
-m
選項後面跟使用者或組識別符號(u|g):使用者或組:執行的許可權
- 注意
當檔案或目錄加入acl許可權後,
ll
檢視命令會看到標示ACL的點變成加
1、最大有效許可權
當一個目錄或檔案加入ACL許可權後,用
getfacl
看到多出一個mask許可權,這個就是最大有效許可權即,mask是用來指定最大有效許可權的。如果我給使用者賦予了ACL許可權,是需要和mask的許可權"邏輯與"才能得到使用者的真正許可權
- 邏輯與
A | B | and |
---|---|---|
r | r | r |
r | - | - |
- | r | - |
- | - | - |
2、修改最大有效許可權
setfacl -m m:rx 檔名
設定指定檔案的mask許可權為
r-x
。使用m:許可權
格式
- 注意
這個馬賽克許可權一般不用,除非ACL非常多時
3、刪除ACL許可權
setfacl -x u:lw 檔案或目錄
4、刪除所有ACL許可權
setfacl -b 檔案或目錄
1、遞迴ACL許可權
遞迴是父目錄在設定ACL許可權時,所有的子檔案和子目錄也會擁有相同的ACL許可權
setfacl -m u:使用者名稱:許可權 -R 目錄檔案
例如:
setfacl -m u:lw:rx -R /home/av/
- 許可權溢位
目錄賦予執行許可權時,遞迴到檔案也會獲得執行許可權,這樣就造成了許可權溢位,沒有辦法解決
因此,ACL許可權盡量少用,能用普通許可權解決的就用普通許可權解決
- 目錄和檔案馬賽克許可權
目錄的是
rwx
檔案的是
r-x
- 注意
遞迴許可權僅能賦予目錄,不能賦予檔案
2、預設ACL許可權
預設ACL許可權的作用是如果給父目錄設定了預設ACL許可權,那麼父目錄中所有==新建==的子檔案都會繼承父目錄的預設ACL許可權
setfacl -m d:u:使用者名稱:許可權 目錄檔案
例如:
setfacl -m d:u:lw:rw /home/av/
本作品採用《CC 協議》,轉載必須註明作者和本文連結