我想用設定值dir
為使用者群組設定權限。我做了這樣的事情:
mkdir /Employee
chgrp employeers /Employee
setfacl -m d:g::rwx /Employee
現在,當我嘗試建立檔案(來自該群組的成員的使用者)時,我收到有關「無權限」的錯誤。
root@debian:~# ls -la /Employee
all 8
drwxr-xr-x+ 2 root employeers 4096 maj 21 14:50 .
drwxr-xr-x 23 root root 4096 maj 21 14:50 ..
我究竟做錯了什麼?
答案1
d
是 的縮寫default
。預設權限和實際權限是獨立的。再次執行 setfacl 指令(不帶 )d:
,那麼權限就應該按需要運作。我假設您想要這兩個命令的效果。
的輸出getfacl
可以向您建議這個結論,透過
- 顯示
default:
展開 - 顯示不包含「default」的原始存取控制條目,表示您所做的條目有些不同。
反過來,+
的輸出ls -l
顯示存在 ACE,它們允許基本模式之外的存取(標準 POSIX ACE 無法拒絕您所看到的基本模式允許的存取)[1]。在第二個 setfacl 指令之後,您會注意到基本模式會變更為rwxrwxr-x
。這是因為employeers
是檔案的主要群組,而 setfacl 避免建立重複條目。
[1] Windows 和 NFSv4 ACL 允許拒絕條目。許多人認為這是一個複雜性陷阱,包括 nfs4_acl 的線上說明頁。當然,這意味著 ACL 順序很重要。顯然,Windows GUI 將它們變更為「首選」順序,首先明確拒絕條目,最後繼承條目。