2009-08-24 101 views

回答

8

newgrp(1)

+0

我是该组的成员,那么为什么它要求我输入密码?它不喜欢我的密码! – Michael 2013-02-12 04:25:15

+0

另外,如果我运行“newgrp ”作为根(例如使用sudo在其中运行带有newgrp的脚本),它会将我转储到根shell中。 – Michael 2013-02-12 04:28:39

+0

这不是newgrp应该使用的。如果您忘记在脚本之外使用newgrp,会发生什么情况?脚本如何处理newgrp创建的新shell。 @ mark40的回答比较好。 – noel 2013-05-20 12:53:57

156

有几个方法可以做到这一点:

  1. 您可以通过设置setgid标记的更改特定 目录中创建的所有文件默认组目录(chmod g+s _dir_)。 然后使用 目录组(使用chgrp <group> <dir>设置)创建目录中的新文件。这适用于在目录中创建文件的任何程序 。

    注意,这是自动继承新的子目录(如 的Linux 3.10的),但是,如果子目录已经存在,这种变化 不会应用到他们(使用的是-R标志)。

  2. 如果没有设置setgid标志,那么默认组将被设置为当前创建进程的 组标识。虽然这可以使用命令newgrp 命令来设置,但它会创建一个在shell 脚本中难以使用的新shell。如果要使用更改的组执行特定命令(或一组命令) ,请使用命令sg <group> <command>

    sg不是POSIX标准命令,但可在Linux上使用。

+5

只是一个小纸条。如果你尝试在一个具有y组的目录下运行'chmod g + s _dir_',并且你在用户x下运行命令,并且用户x不是组y的成员,它就不会工作。你必须以root身份运行它。 – LEDfan 2016-04-13 07:12:34