ACL 和經典權限
我正在嘗試在我的 FreeNAS 伺服器上設置一個 git 伺服器。我遇到的問題是根據需要為不同的使用者/組設置權限。
基本上我有兩個不同的組:
git-auth-user
其中包含應該有權rwx
訪問包含所有儲存庫的目錄的所有使用者(我應該x
只限於我認為的目錄,但現在這是一個小細節)並且git-unauth-user
基本上只是 git 守護程序應該分發只讀訪問權限。我認為跑步
setfacl -m "g:git-auth-user:rwx:fd:allow" git/
可以賦予我git-auth-user
所有的權利,但那並沒有發生。從搜尋來看,經典權限似乎仍然限制 ACL 可以分發的整體權限,這是否意味著我必須基本上授予
others
全部權限(所以基本上chmod 777 dir
)?但是我假設每個沒有通過 ACL 限制其權利的人也將擁有完全訪問權限,這顯然不是我想要的。有什麼辦法可以繞過
other
我想通過 ACL 分發的最寬鬆的權限設置經典權限,或者如果沒有,是否有一個 ACL 完全拒絕沒有特殊訪問權限的每個人的訪問權限?編輯:
ls -la
(所以chmod 770
對於目錄)drwxrwx---+ 2 root wheel 2 Jun 22 23:45 git
和
$ getfacl git/ # file: git/ # owner: root # group: wheel group:git-auth-user:rwx-----------:fd----:allow owner@:rwxp--aARWcCos:------:allow group@:rwxp--a-R-c--s:------:allow everyone@:------a-R-c--s:------:allow
現在,當該組的使用者
git-auth-user
嘗試在目錄中生成一個新目錄時,git
我得到$ mkdir test.git mkdir: test.git: Permission denied
另一方面,如果我使用
chmod -R 777 git
它工作得很好,但這顯然是一個非常糟糕的解決方案,因為我讓每個人都可以完全訪問該目錄,而我夢想的解決方案將是每個人都無法訪問,除了git-auth-user
(即我的使用者git-ro
也有寫入權限目錄,現在我可以根據 ACL 專門刪除該使用者的所有權限,但這顯然無法擴展。我確信必須有一個更好的解決方案,但我忽略了)。
ACL(如果存在)覆蓋通常的 chmod 位。此外,NFSv4 ACL 沒有遮罩。
我相信這裡的問題是你只設置了’rwx’,而不是’rwxp’。‘p’ 是 APPEND_DATA/ADD_SUBDIRECTORY,它控制…好吧,添加子目錄。
如果您使用 ACL,經典的組權限會變成所謂的遮罩,它決定了您可以為每個 setfacl 有效授予的最大權限,例如。
ls -k shows -rw-r--r--+ root root
你有
setfacl -m g:users:rw
因為遮罩是只讀的,所以 getfacl 會告訴你:
group:users:rw effective r
因此,通過經典 chmod 將組設置為 rw 或 rwx,您可以通過 setfacl 授予所有權限。
PS。
這是 Linux ACL 處理,帶有 ZFS 的 afaik Solaris 有點不同,我不完全確定帶有 ZFS 的 BSD 是如何處理的。
試一試並在此處發布您的發現。