为什么我的用户没有被分配到我自己添加的组?

为什么我的用户没有被分配到我自己添加的组?

我正在全新安装 Ubuntu 18.04。在安装过程中,我选择了最小安装而不是标准安装。

docker我刚刚使用以下命令将自己添加到该组中

sudo usermod -a -G docker danny

我已经退出了 GNOME 会话(我尝试了两种方法,一种是从顶部菜单,另一种是从搜索“登出“)。但我的用户没有被分配到该docker组。但是,如果我su进入我的用户,该组就在那里,所以前面的命令没有失败。

$ groups
danny adm cdrom sudo dip plugdev lpadmin sambashare
$ groups danny
danny adm cdrom sudo dip plugdev lpadmin sambashare docker
$ su - danny
$ groups
danny adm cdrom sudo dip plugdev lpadmin sambashare docker

我必须完全重新启动操作系统才能使更改生效。

我已经重新启动了,但是这是的输出id

$ id
uid=1000(danny) gid=1000(danny) groups=1000(danny),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare),999(docker)

但我想知道为什么注销还不够?

PS 我可以通过将自己添加到任何随机组来重现此行为,而不仅仅是docker

答案1

你也可以使用以下newgrp命令加入新组:

jean@myLinux:~$ id
uid=1000(jean) gid=1000(jean) groups=1000(jean),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),118(lpadmin),128(sambashare),129(vboxusers)
jean@myLinux:~$ newgrp - newgroup
jean@myLinux:~$ id
uid=1000(jean) gid=1003(newgroup) groups=1003(newgroup),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),118(lpadmin),128(sambashare),129(vboxusers),1000(jean)

我必须承认,我和你一样惊讶注销/登录没有分配新组,但su -实际上却分配了。

答案2

您无需重新启动即可将附加组分配给您的用户。在正在运行的 shell 中,组分配不会改变,但在新 shell 中会改变:

jean@myLinux:~$ sudo groupadd tester
[sudo] password for jean: 
jean@myLinux:~$ sudo usermod -a -G tester jean
jean@myLinux:~$ id
uid=1000(jean) gid=1000(jean) groups=1000(jean),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),118(lpadmin),128(sambashare),129(vboxusers)
jean@myLinux:~$ su - jean
Password: 
jean@myLinux:~$ id
uid=1000(jean) gid=1000(jean) groups=1000(jean),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),118(lpadmin),128(sambashare),129(vboxusers),1003(tester)

相关内容