在Linux中,我有以下内容id
:
uid=1005(username) gid=1005(username) groups=1005(username),33(www-data),1002(git)
我想将我的有效 gid 更改为,git
以便我创建的所有内容都属于gid
该组。touch testfile
例如owner=username group=git
如何?
答案1
您可以使用新组 命令:
~$ 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
群组可以被锁定或设置密码。请参阅手册页了解更多详细信息。
man newgrp
答案2
如果你具有适当的 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 将当前 shell 替换为以 git 组身份运行的 shell
exec sudo -g git /bin/bash
答案3
从全局来看,如果不改变用户的主要组,您就不能这样做。
但在每个目录的基础上,这可以通过在目录上设置 setgid 位并将chown
所述目录归到正确的组来轻松实现。
在该目录下创建的任何内容都将继承 gid,无论创建它的用户是谁。