Permissions
ACL default::mask 未用於新文件
我有一個具有以下 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,則文件的權限
mode
與umask
.如果父目錄確實有預設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
.