在Linux中,我有以下id :
uid=1005(username) gid=1005(username) groups=1005(username),33(www-data),1002(git)
我想把我的有效gid改成git这样我创build的所有东西都属于gid组。 例如touch testfile给owner=username group=git
怎么样?
您可以使用newgrp命令来更改您的当前组:
~$ id uid=1000(bas) gid=1000(bas) groups=1000(bas),24(cdrom) ~$ newgrp - cdrom ~$ id uid=1000(bas) gid=24(cdrom) groups=1000(bas),24(cdrom) ~$ touch foo && ls -l foo -rw-r--r-- 1 bas cdrom 0 Jul 24 13:58 foo
组可以被locking或有一个密码。 有关更多详细信息,请参见手册页。
man newgrp
如果你有合适的sudo权限,你可以运行一个shell作为新的组
username ALL=(:git) /bin/bash
这允许用户名运行/bin/bash作为username:git
id uid=1005(test) gid=1005(test) groups=1005(test) touch testfile ls -l testfile -rw-rw-r-- 1 test test 0 Jul 24 11:19 testfile sudo -g git /bin/bash id uid=1005(test) gid=1003(git) groups=1005(test) rm testfile touch testfile -rw-r--r-- 1 test git 0 Jul 24 11:21 testfile
你甚至可以使用exec来replace你当前的shell和作为git组运行的shell
exec sudo -g git /bin/bash
在全球范围内,您不能 – 无需更改用户的主要组。
但是,在每个目录的基础上,通过设置目录上的setgid位,并将目录分配给正确的组,可以简单地实现这一点。
在所述目录下创build的任何东西都将inheritancegid,而不pipe创build它的用户。