我想创建一个目录,多个用户可以在其中贡献相同的文件,并且我希望任何用户创建的每个文件默认情况下对组中的每个人都具有写入权限。
我为目录设置了 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
上面的示例,这在大多数情况下是正确的行为,但是有没有一种方法可以递归地更改特定目录并允许写入权限自动设置为组以及该目录中所有新文件的所有者?
答案1
新文件和文件夹的默认权限由以下因素决定掩码。如果你配置的是默认的掩码对于您的用户002
,组权限将设置rw
为新文件和文件夹。可以使用 为所有用户配置 umask pam_umask
。
要使用,在基于 Debian 的发行版上,您应该通过将以下内容附加到文件末尾来pam_umask
配置模块:/etc/pam.d/common-session
session optional pam_umask.so
然后在 中配置所需的 umask 值/etc/login.defs
。
请注意,使用 PAM 配置的掩码并不适用于所有 Gnome 应用程序(有关详细信息,请参阅如何设置umask
整个 gnome 会话)。但是,从ssh
或启动的会话tty
不受影响。
如果您不想更改系统上的默认 umask,可以使用POSIX 访问控制列表。当为目录设置ACL时,新文件将继承ACL默认访问控制列表。可以分别使用setfacl
和来设置和修改 ACL getfacl
。某些文件系统可能需要额外的安装标志来启用 ACL。