哪些权限允许组成员删除子目录中的文件?

哪些权限允许组成员删除子目录中的文件?

假设我在 Debian GNU/Linux 系统上有两个用户:meotheruser。两者都是组 的成员shared-media。我可以创建一个两者都可写的目录:

$ sudo mkdir /srv/media/test-parent
$ sudo chown root:shared-media /srv/media/test-parent
$ sudo chmod g+w /srv/media/test-parent
$ sudo chmod g+s /srv/media/test-parent
$ ls -dlh /srv/media/test-parent
drwxrwsr-x 2 root shared-media 4.0K Apr 28 19:35 /srv/media/test-parent

现在,otheruser我创建一个目录并在其中创建一个文件:

$ sudo -u otheruser mkdir /srv/media/test-parent/zztest
$ sudo -u otheruser touch /srv/media/test-parent/zztest/one

不幸的是,这个新文件不能被组内的其他成员删除(假设当前用户是me):

$ ll /srv/media/test-parent/zztest/one 
-rw-r--r-- 1 otheruser shared-media 0 Apr 28 19:36 /srv/media/test-parent/zztest/one
$ rm /srv/media/test-parent/zztest/one 
rm: remove write-protected regular empty file ‘/srv/media/test-parent/zztest/one’? y
rm: cannot remove ‘/srv/media/test-parent/zztest/one’: Permission denied

我如何设置权限以便otheruser只创建可由其他组成员写入和删除的文件?

答案1

文件本身并不重要;您只需要对父目录具有写入权限。为了确保始终添加它,请在基目录上设置“默认”ACL:

setfacl -m default:group::rwx /srv/media/test-parent

这将设置一个“默认”(仅继承)ACL group::rwx(简写g::rwx),它适用于拥有组(即通过 chown/chgrp 设置的组)。

但您通常希望同时设置相同的“常规” ACL:

setfacl -m g::rwx,d:g::rwx /srv/media/test-parent

您可以通过直接授予特定组访问权限来简化这一过程:

setfacl -m g:users:rwx,d:g:users:rwx /srv/blah

这使得 'setgid' 位变得不再chgrp必要。

相关内容