為 -rw-r--r--+ 正確設定 ACL

為 -rw-r--r--+ 正確設定 ACL

我已經能夠為新檔案設定預設 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--

在目錄中建立的檔案顯示為lsas -rw-r--r--+


話又說回來,如果您只是希望指定使用者獲得您所說的權限,您可以省略掩碼字段,系統setfacl會根據您用於實際 ACL 條目的權限為您設定它:

setfacl -R -d -m u::rwx -m u:usernamehere:rwx -m o::r-- /path

在目錄中建立的檔案現在顯示在lsas-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位。

相關內容