创建新文件时为用户设置默认组?

JM *_*ork 49 permissions users

当我通过 SSH 创建它们时,我经常发现自己在 chown-ing 文件jm:jm,例如它们的所有者。

然后为了允许 Apache 访问它,我需要例如执行chown jm:www-data.

我确定我可以在创建文件时指定,而不是使用我名下的组,而是指定另一个?

或者有没有更好的方法来管理用户/组?

Jam*_*dge 92

如果您希望特定目录中的所有新文件都归特定组所有,只需setgid在其上应用该位:

chgrp www-data /some/dir
chmod g+s /some/dir
Run Code Online (Sandbox Code Playgroud)

如果您有要应用此行为的现有目录树,则可以使用以下命令find

find /some/dir -type d -exec chgrp www-data {} +
find /some/dir -type d -exec chmod g+s {} +
Run Code Online (Sandbox Code Playgroud)

(如果目录已经归相关组所有,那么您可以省略这两个示例中的第一个命令)。

  • @Cragmonkey:这也会在常规文件上设置 setgid 位。如果它们中的任何一个碰巧是可执行的,这将允许系统上的另一个用户获得拥有该文件的组的权限。 (19认同)
  • 为什么不使用`chmod g+s /some/dir -R`?刚刚测试,它似乎工作。 (9认同)
  • 它们是 `find` 命令的参数,在手册页中有介绍。对于第一次调用,它将运行命令 `chgrp www-data`,将许多结果作为参数附加(而不是像使用 `{} \;` 那样为每个结果调用一次命令)。 (3认同)