Permissions

自動設置組的寫入權限

  • September 12, 2017

我想創建一個目錄,多個使用者將能夠為相同的文件做出貢獻,並且我希望任何使用者創建的每個文件都預設對組中的每個人都具有寫權限。

我為一個目錄做了 setgid 並且所有新文件都有正確的組。但是,仍然會在組中創建沒有寫入權限的新文件。

這是我正在嘗試做的說明:

(作為根使用者):

mkdir --mode=u+rwx,g+rws,o-rwx /tmp/mydir
chown root.mygroup /tmp/mydir
touch /tmp/mydir/test.txt

然後當我這樣做時,ls -la /tmp/mydir/我得到

drwxrws---  2 root    mygroup    4096 Sep 12 12:04 .
drwxrwxrwt 11 root    root       4096 Sep 12 12:04 ..
-rw-r--r--  1 root    mygroup    0    Sep 12 12:03 test.txt

因此,對於由該組成員創作的所有新文件,永遠不會為該組填充寫入權限。我知道其他組使用者仍然可以通過chmod g+w對特定文件(test.txt例如上面的範例)執行此操作來覆蓋它,這在大多數情況下是正確的行為,但是有沒有辦法為特定目錄遞歸地更改它並允許寫入權限為組以及該目錄中所有新文件的所有者自動設置?

新文件和文件夾的預設權限由umask確定。如果您將使用者的預設umask002配置為,則新文件和文件夾的組權限將設置rw為。為所有使用者配置 umask 可以使用pam_umask.

要使用pam_umask,在基於 Debian 的發行版上,您應該/etc/pam.d/common-session通過在文件末尾附加以下內容來配置模組:

session optional   pam_umask.so

然後在 中配置所需的 umask 值/etc/login.defs

請注意,使用 PAM 配置的遮罩並不適用於所有 Gnome 應用程序(有關詳細資訊,請參閱如何umask為整個 gnome 會話設置)。ssh但是,從或tty不受影響的會話啟動。

如果您不想更改系統上的預設 umask,可以使用POSIX Access Control Lists。為目錄設置 ACL 時,新文件將繼承預設 ACL。可以使用setfaclgetfacl分別設置和修改 ACL。某些文件系統可能需要額外的掛載標誌來啟用 ACL。

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