确保目录中的新文件属于该组

jus*_*ime 81 linux file-permissions ubuntu

当许多用户(都属于 mygroup)可以创建和编辑文件时,我想创建一个共享目录。我希望此目录和子目录中的所有文件都属于mygroup

我已经改变了现有的文件有组MYGROUP使用chgrp,但新文件仍然可以属于用户的主组创建的。有没有办法确保新文件属于该组,而无需重复运行 chgrp.conf ?

les*_*ana 126

您想设置 SetGID 位。

chmod g+s dir
Run Code Online (Sandbox Code Playgroud)

在目录中创建的所有新文件都将组设置为目录的组。

超级用户博客文章解释了粘滞位和其他 Linux 权限位:

然而,SetGID 是一个完全不同的球类游戏。当一个目录设置了 SetGID 位并且在该目录中创建了一个文件时,该文件的组所有权会自动修改为该目录的组。

  • 在也属于父目录组的初始目录中创建一个子目录怎么样?这可能吗? (5认同)

Luk*_*ePH 15

这可能会让一些人坚持使用 setgid,如果文件夹的组与您自己的不同,您可能需要以 root 身份运行 chmod,但您不会收到任何指示您需要执行此操作的错误。

没有 sudo

$ 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 set wrong
Run Code Online (Sandbox Code Playgroud)

用须藤

$ 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 the group is set right
Run Code Online (Sandbox Code Playgroud)


Dan*_*eck 14

在文件夹上设置setgid权限标志

chmod g+s dirname
Run Code Online (Sandbox Code Playgroud)