仿生 - 使用 usermod -aG 添加组直到下次重启才会生效

Pra*_*eri 3 docker 18.04

我刚刚安装了 Xubuntu 18.04 (Bionic) 并面临这个问题,我想将此报告为启动板上的错误,但想先从这里确认。问题是当我像下面这样向用户添加一个组时,它应该在下次用户登录时生效,对吗?

sudo usermod -aG docker prahlad
Run Code Online (Sandbox Code Playgroud)

从我记得的情况来看,这种行为一直持续到 16.04,但今天我多次退出并重新登录,但是当我通过运行groups命令查看我的组时,我无法看到 docker 添加到其中。但是,当我创建一个新的 shell 时,我能够看到新组:

su prahlad -
Run Code Online (Sandbox Code Playgroud)

当然,当我完全重新启动我的笔记本电脑时,我能够看到 docker 组。有人可以确认这是否是 Bionic 中引入的新问题吗?或者,它只是在安装 docker 时发生?

wal*_*tor 5

这不是“问题”,这只是小组的工作方式。

login程序读取/etc/groups以设置您的初始进程的组成员资格,该组成员资格将向下继承到它创建的进程。

最终,一个进程会sudo usermod -aG docker prahlad更新/etc/groups,但根据设计,它不会更改运行的进程的父进程的父进程的组成员身份sudo usermod -aG docker prahlad,也不会运行login以编辑您的进程的组成员身份。

作为长期的系统管理员,我确信我希望能够将一些随机用户添加到某个随机组,而不会弄乱我的组成员身份。

如果您想立即使用您的新组成员身份,您可以阅读man newgrp,然后执行以下操作:

sudo usermod -aG docker prahlad
newgrp docker
Run Code Online (Sandbox Code Playgroud)