我正在编写一个bash shell脚本,想要更改新文件所创建的默认组。我知道可以使用 umask
来更改权限。但是,有没有类似的方法可以更改文件所属的组?
我正在编写一个bash shell脚本,想要更改新文件所创建的默认组。我知道可以使用 umask
来更改权限。但是,有没有类似的方法可以更改文件所属的组?
chmod g+s <dir>
)来更改特定目录中创建的所有文件的默认组。然后,目录中的新文件将使用目录的组进行创建(使用chgrp <group> <dir>
设置)。这适用于在该目录中创建文件的任何程序。请注意,对于新的子目录来说,此功能是自动继承的(Linux 3.10起)。但是,如果子目录已经存在,则此更改不会应用于它们。假设子目录已经具有正确的组,请使用以下命令向它们添加setgid标志:find . -type d -exec chmod g+s {} \;
(建议由Maciej Krawczyk在评论中提供)。
newgrp
命令进行设置,但这将创建一个在shell脚本中难以使用的新shell。如果您想要使用更改后的组执行特定命令(或一组命令),请使用命令sg <group> <command>
。sg
不是POSIX标准命令,但在Linux上可用。
chmod g+s _dir_
命令,并且用户x不是组y的成员,则该命令将无法工作。 您需要以root身份运行该命令。 - LEDfanfind . -type d -exec chmod g+s {} \;
- Maciej Krawczyk