ogr*_*ogr 9 command-line users group
我今天偶然发现了一个奇怪的行为。将用户添加到新组后,如下所示:
# gpasswd -a test myuser
Run Code Online (Sandbox Code Playgroud)
然后连接到一个新的bash命令,这里有结果groups
和groups 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
,此命令也显示了这一点,即使您当前不在该组中,因为您还没有再次登录。