Permissions

ACL 和經典權限

  • October 10, 2015

我正在嘗試在我的 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 是如何處理的。

試一試並在此處發布您的發現。

引用自:https://unix.stackexchange.com/questions/211210