自动设置组写权限

Ale*_*lex 1 permissions defaults

我想创建一个目录,其中多个用户将能够对相同的文件做出贡献,并且我希望任何用户创建的每个文件默认对组中的每个人都具有写权限。

我为一个目录设置了 setgid,所有新文件都有正确的组。但是,在组中没有写权限的情况下仍会创建新文件。

这是我正在尝试做的事情的说明:

(作为根用户):

mkdir --mode=u+rwx,g+rws,o-rwx /tmp/mydir
chown root.mygroup /tmp/mydir
touch /tmp/mydir/test.txt
Run Code Online (Sandbox Code Playgroud)

然后当我做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
Run Code Online (Sandbox Code Playgroud)

因此,对于该组成员创作的所有新文件,永远不会为该组填充写入权限。我知道其他组用户仍然可以通过chmod g+w对特定文件(test.txt例如上面的示例)执行此操作来覆盖它,并且在大多数情况下这是正确的行为,但是有没有办法针对特定目录递归更改它并允许写入权限为一个组以及该目录中所有新文件的所有者自动设置?

seb*_*sth 5

新文件和文件夹的默认权限由umask确定。如果您将用户的默认umask配置002rw,则新文件和文件夹的组权限将设置为。为所有用户配置 umask 可以使用pam_umask.

要使用pam_umask,在基于 Debian 的发行版上,您应该/etc/pam.d/common-session通过在文件末尾附加以下内容来配置模块:

 session optional   pam_umask.so
Run Code Online (Sandbox Code Playgroud)

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

请注意,使用 PAM 配置的掩码不适用于所有 Gnome 应用程序(有关详细信息,请参阅如何umask为整个 gnome 会话设置)。但是,从sshtty不受影响的会话。

如果您不想更改系统上的默认 umask,您可以使用POSIX 访问控制列表。为目录设置 ACL 后,新文件将继承默认 ACL。可以分别使用setfacl和设置和修改 ACL getfacl。某些文件系统可能需要额外的挂载标志来启用 ACL。