将用户名添加到组后,组和组 USERNAME 的不同输出

ogr*_*ogr 9 command-line users group

我今天偶然发现了一个奇怪的行为。将用户添加到新组后,如下所示:

# gpasswd -a test myuser
Run Code Online (Sandbox Code Playgroud)

然后连接到一个新的bash命令,这里有结果groupsgroups myuser

myuser@mycomputer$ groups
wheel myuser
myuser@mycomputer$ groups myuser
wheel myuser test
Run Code Online (Sandbox Code Playgroud)

只有当我重新启动时, 的输出groups才会与 相同groups myuser,但没有必要以相同的顺序显示组。

所以我的问题很简单:为什么?

ter*_*don 13

因为对组成员身份的更改只有在启动新的登录shell后才会生效。启动一个新的非登录交互式 shell 会话(这是您打开新终端时获得的)是无关紧要的。

因此,当您运行时groups,它会打印您的用户当前所在的组。但是,这些组是在您的用户首次登录时设置的,并且在您再次登录之前无法更改。因此,groups不包括您的新组。

在另一方面,当您运行groups myuser,系统不会去找组当前用户所属的那一刻,它查找该用户组myuser属于,它得到通过读取设置文件(/etc/group,大概) . 由于您的用户被设置为属于 中的新组/etc/groups,此命令也显示了这一点,即使您当前不在该组中,因为您还没有再次登录。

  • `newgrp` 也可以派上用场,无需再次登录 ;-)。 (5认同)