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


67

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

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

Answers:


108

您想要设置SetGID位。

chmod g+s dir

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

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

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


1
谢谢。该参考很有用。描述了图片中的umask命令
justintime 2011年

4
如何在初始目录中创建一个也属于父目录组的子目录?这可能吗?
daaxix

@LukePH的以下回答对于在静默失败时不会感到困惑至关重要:使用sudo
Rhubarb,


11

这可能会使一些人陷入setgid的困境,如果文件夹的组与您自己的不同,则可能需要以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 set 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 the group is set right
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.