我正在做一个bash shell脚本,我想更改创建新文件的默认组。我知道您使用umask
过更改权限。团体有东西吗?
Answers:
有两种方法可以做到这一点:
您可以通过在目录(chmod g+s _dir_
)上设置setgid标志来更改在特定目录中创建的所有文件的默认组。然后将使用目录组(使用设置chgrp <group> <dir>
)创建目录中的新文件。这适用于在目录中创建文件的任何程序。
请注意,这对于新的子目录是自动继承的(从Linux 3.10开始),但是,如果子目录已经存在,则此更改将不会应用于它们(使用该-R
标志)。
如果未设置setgid标志,则默认组将设置为创建过程的当前组ID。尽管可以使用newgrp
命令来设置,但是这会创建一个很难在shell脚本中使用的新shell。如果要对更改后的组执行特定命令(或命令集),请使用命令sg <group> <command>
。
sg
不是POSIX标准命令,但在Linux上可用。
chmod g+s _dir_
在具有组y的目录上运行,并且正在用户x下运行该命令,并且用户x不是组y的成员,则它将行不通。您必须以root身份运行它。