Linux 筆記分享九:ACL 許可權

yuanshang發表於2019-01-08

Linux下使用者對檔案的操作許可權有r-讀w-寫x-可執行三種,而對linux下的檔案而言,使用者身份分為:所有者,所屬組,其它人; 且檔案的所有者,所屬組都只能是一個,所以在對檔案分配使用者的使用許可權時,只能對這三種身份進行分配rwx許可權,Linux 主要作為伺服器系統使用,使用者眾多;所以在實際使用場景中,這三種身份並不能很好地實現資源許可權分配問題,所以就有了ACL許可權

ACL許可權就是為了解決linux下三種身份不能滿足資源許可權分配需求的問題的

file

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 協議》,轉載必須註明作者和本文連結

我們是一群被時空壓迫的孩子。 ---- 愛因斯坦

相關文章