为什么 id-tool 不显示最新添加的组?

eri*_*ork 4 users

当发生以下情况时,我想将自己添加到一个名为 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:
Run Code Online (Sandbox Code Playgroud)

然后我将自己添加到组中并再次检查:

$ 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
Run Code Online (Sandbox Code Playgroud)

id仍然没有将我列为该组的一员,而我确实将正确的内容写入/etc/groups. 发生了什么,我能做些什么来id识别它?

(只是启动一个新的外壳并没有改变任何东西)

Gil*_*il' 5

id显示关于调用它的进程的信息(或者更准确地说,它显示关于它自己的信息,它从调用它的进程继承)。组数据库仅在登录时查询,并且仅影响从该登录会话产生的进程。登录进程被授予组数据库中列出的组,所有其他进程从它们的父进程继承。

启动一个新的 shell 没有什么区别,您需要注销并重新登录。您可以通过登录另一个控制台或使用ssh localhost或来测试您的更改su me

您可以使用getent group vboxusers. 除非您的机器使用 NIS 或 LDAP 从网络服务器获取用户和组信息,否则这将提供与grep '^vboxusers:' /etc/group. 同样,此信息会告诉您登录时发生的情况,之后不会进行查询。