全名是 Access Control List
三種 owner, group, others 對應 read, write, execute
如果有一個目錄底下有一堆人要使用,每個人或群組所需要的權限每個都不一樣,而基本的權限管理只有檔案擁有者、群組、其他人,沒辦法針對 aming 這個單一用戶設定權限,因此就有以下的 ACL 概念。
dmesg | grep -i acl
我們來針對特定使用者 aming 來設定權限 r,x,一開始先建一個檔案並檢視其一般權限。
root$> touch test
root$> ll test
-rw-r--r--. 1 root root 0 八 07 08:07 test
接下來使用 ACL 權限設定:
setfacl -m u:aming:rx test
ll test
接下來檔案權限會變成這樣:
-rwxr-xr--+. 1 root root 0 八 07 08:07 test
我們來比較一下兩個檔案權限,會發現差了一個 + 號還有 owner 的 x、group 的 x。
getfacl test
這樣就會列出詳細資訊,其中最重要的
user::rwx
user:aming:r-x
凸顯了透過 AC 使 aming 和其他使用者權限的產生差異。
root$> setfacl -m g:groooop:wx test
getfacl test
一樣我們看群組的欄位:
group::r--
group:groooop:wx
這樣 groooop 的權限就與一般群組不同了。
我們可以透過 mask 來規範最大允許的權限,能夠避免不小心開放權限給其他使用者或群組。
設定方法如下:
setfacl -m m:x test
getfacl test
user:aming:r-x #effective:--x
group:groooop:-wx #effective:--x
#effective
代表有效權限,我們會發現 aming 和 groooop 的權限都是 --x
aming:
r-x ---> aming
--x ---> mask
================ 取交集
--x ---> 有效權限
groooop:
-wx ---> groooop
--x ---> mask
================ 取交集
--x ---> 有效權限
setfacl -x u:aming test