對於從以下位置建立的文件測試用戶/var/www 目錄中的帳戶,我需要他們有克+讀寫作為權限,以及www-數據作為團體。
我怎樣才能實現這個目標?
我正在透過 SSH 建立文件。
答案1
要設定組,請/var/www
給出設定gid位元:
chgrp www-data /var/www
chmod g+s /var/www
還要調整子目錄:find /var/www -type d -exec chmod g+s {} +
這將使所有新建立的檔案繼承父目錄的群組,而不是使用者的群組。
要設定預設群組權限,您必須使用ACL。設定“預設”ACL:
setfacl -m "default:group::rwx" /var/www
還要調整子目錄:find /var/www -type d -exec setfacl -m d:g::rwx {} +
注意:檔案系統必須啟用 ACL 支援。有時預設情況下它是打開的;在外部3或者外部4您可能會收到“不支援操作”,在這種情況下必須手動啟用:
對於目前安裝的檔案系統:
mount -o remount,acl /
永久 -一以下方法之一:
在 fstab 層級:編輯
/etc/fstab
以包含acl
在選項欄位中在檔案系統層級:
tune2fs -o acl /dev/diskname
答案2
這可能會讓一些人在setgid 上陷入“grawity”答案,如果資料夾的群組與您自己的群組不同,您可能需要以root 身份運行chmod,但您不會收到任何指示您需要執行此操作的錯誤。
$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar 9 10:44 dir
$ chmod g+s dir #no errors
$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar 9 10:44 dir #but nothing changed
$ touch dir/nosudo && ls -l dir/
-rw-rw-r-- 1 luke luke 0 Mar 9 10:51 nosudo #and the group is still wrong
$ sudo chmod g+s dir
$ ls -ld dir
drwxrwsr-x 2 luke testgroup 4096 Mar 9 10:44 dir #the setgid bit is now on
$ touch dir/withsudo && ls -l dir/
-rw-rw-r-- 1 luke luke 0 Mar 9 10:51 nosudo
-rw-rw-r-- 1 luke testgroup 0 Mar 9 10:51 withsudo #and group is set
答案3
使用者建立的文件的群組是該使用者的群組(在/etc/group)。權限由UMASK參數控制 看到這個