Permissions

ACL default::mask 未用於新文件

  • July 8, 2020

我有一個具有以下 ACL 規則設置的目錄:

cd /nobackupp13/jrwrigh7
getfacl .

我明白了

# file: .
# owner: jrwrigh7
# group: a1983
user::rwx
group::r-x
group:a1983:r-x
mask::r-x
other::---
default:user::rwx
default:group::r-x
default:group:a1983:r-x
default:mask::r-x
default:other::---

但是,當我在此目錄中創建 testfile 時,mask它不會採用預設值並將文件的權限限制為,r--而不是r-x

cd /nobackupp13/jrwrigh7
touch testfile
getfacl testfile

我明白了

# file: testfile
# owner: jrwrigh7
# group: a1983
user::rw-
group::r-x                      #effective:r--
group:a1983:r-x                 #effective:r--
mask::r--
other::---

據說umask應該被 ACL 覆蓋(請參閱https://serverfault.com/q/349145/530204 ),但umask無論如何,以下是結果:

cd /nobackupp13/jrwrigh7
umask

我明白了

077

是否有其他一些權限系統阻止它工作?

最終目標是讓該目錄中創建的每個文件r-x都由該組創建a1983。我經歷這個的全部原因是我的研究小組總是遇到在我們沒有管理員控制權的電腦上訪問/執行彼此文件的問題。我們希望確保每個腳本文件都是可執行的,無論所有者是否已將其設置為執行檔。

一般資訊

open()當系統呼叫創建文件時,會有一個mode設置。必須在此mode參數中請求文件獲得的每個權限。

如果父目錄沒有預設 ACL,則文件的權限modeumask.

如果父目錄確實有預設ACL,那麼這些並mode確定所有者權限和其他人的權限。

所有其他 ACL 條目與預設 ACL 保持不變。為了達到相同的效果,ACL 遮罩不是從ACL_USER, ACL_GROUP, 條目中計算出來的ACL_GROUP(就像顯式設置 ACL 時一樣),而是將它設置為mode.

遮罩值由預設 ACL 和mode預設遮罩確定。它僅包含所有三個元素中包含的權限。所以通常預設遮罩會減少,但它也可以用於減少其他值。

如果程序行為“奇怪”,結果可能會令人困惑。例如gcc,使用 mode 創建輸出文件,666然後chmod()使用777. 但這只會影響所有者和其他人的權限,因為 ACL 條目具有優先權。

你的情況

  • touch使用 mode 創建文件666
  • 預設 ACL 設置為750
  • 結果(兩者都包含的權限)是640.

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