我想将自己添加到名为 vboxusers 的组,但发生了以下情况:
在做任何事情之前我们先看看它是什么样子的:
$ id
uid=1001(me) gid=1001(me) groups=1001(me),4(adm),27(sudo),109(lpadmin),124(sambashare)
$ cat /etc/group | grep me
adm:x:4:me
sudo:x:27:me
lpadmin:x:109:me
me:x:1001:
然后我将自己添加到了该组并再次检查:
$ sudo usermod -aG vboxusers me
$ id
uid=1001(me) gid=1001(me) groups=1001(me),4(adm),27(sudo),109(lpadmin),124(sambashare)
$ cat /etc/group | grep me
adm:x:4:me
sudo:x:27:me
lpadmin:x:109:me
me:x:1001:
vboxusers:x:126:me
id
仍然没有将我列为该组的成员,而我确实在 中写入了正确的内容/etc/groups
。发生了什么事?我该怎么做id
才能识别它?
(仅启动一个新 shell 不会改变任何东西)
答案1
id
显示有关调用它的进程的信息(或者更准确地说,它显示有关它自身的信息,这些信息是从调用它的进程继承的)。组数据库仅在登录时查询,并且它仅影响从该登录会话派生的进程。登录进程被授予组数据库中列出的组,所有其他进程都从其父进程继承。
启动新的 shell 没有什么区别,您需要注销并重新登录。您可以通过在另一个控制台中登录或使用ssh localhost
或使用 来测试您的更改su me
。
您可以使用 查询组数据库getent group vboxusers
。除非您的计算机使用 NIS 或 LDAP 从网络服务器获取用户和组信息,否则这将提供与 相同的信息grep '^vboxusers:' /etc/group
。同样,此信息告诉您登录时发生的情况,之后不再参考。