我已經能夠為新檔案設定預設 ACL 權限,如下所示:
sudo setfacl -Rdm u:usernamehere:rwx /var/www/path/to/files
這似乎賦予所有新文件以下權限:
-rw-r-----+
我希望新文件獲得以下權限:
-rw-r--r--+
如果有什麼區別的話,我正在運行 CentOS。
非常感謝對此的任何幫助。
謝謝!
答案1
首先,請注意,具有指定使用者或群組的 ACL 條目的檔案 ACL 也具有一個ACL遮罩限制這些 ACL 條目和群組擁有者條目授予的權限的條目。遮罩條目顯示為群組權限ls
和其他僅查看傳統權限位元的實用程式。
因此,如果您ls
顯示-rw-r--r--+
,ACL 遮罩為r--
,這表示權限 ACLu:usernamehere:rwx
將充當u:usernamehere:r--
。那可能不是你想要的。另一方面,請注意u:usernamehere:rwx
與 不同u::rwx
,即使對於擁有的文件usernamehere
。第一個是命名條目,受遮罩限制,而第二個是檔案擁有者的條目不是有限的。
掩碼的想法是,運行相當於的工具chmod go-rwx
仍然可以使文件除所有者之外的任何人都無法訪問。您可以使用 刪除遮罩條目setfacl -x m:: filename
,但它僅在沒有指定使用者或群組條目時才有效。
在任何情況下,您都可以在同一命令上新增多個預設條目。這將設定預設條目,以便檔案擁有者獲得權限rwx
,掩碼設定為r--
,「其他」的權限設定為r--
:
$ setfacl -R -d -m u::rwx -m m::r-- -m o::r-- /path
您可能還想為群組擁有者明確設定預設 ACL ( g::
),因為該條目在任何情況下都會出現(其值可能取自權限位)。例如,在這裡,群組所有者的條目並不完全有效,因為遮罩對其進行了限制:
default:user::rwx
default:group::r-x #effective:r--
default:mask::r--
default:other::r--
在目錄中建立的檔案顯示為ls
as -rw-r--r--+
。
話又說回來,如果您只是希望指定使用者獲得您所說的權限,您可以省略掩碼字段,系統setfacl
會根據您用於實際 ACL 條目的權限為您設定它:
setfacl -R -d -m u::rwx -m u:usernamehere:rwx -m o::r-- /path
在目錄中建立的檔案現在顯示在ls
as-rw-rw-r--+
和 in 中getfacl
:
user::rw-
user:usernamehere:rwx #effective:rw-
group::r-x #effective:r--
mask::rw-
other::r--
x
自從我使用 創建文件以來,掩碼丟失了touch
,並且它使用了權限0666
,屏蔽了這些x
位。