我有一个奇怪的问题,因为我的用户( on Linux Mint 18.3 Sylvia
)是 group 的一部分docker
,我通过启动终端来验证:
$ groups
me adm cdrom sudo dip plugdev lpadmin sambashare docker
现在,当我启动 tmux 并运行相同的命令时,我的docker
会员资格突然消失了:
$ tmux
$ groups
me adm cdrom sudo dip plugdev lpadmin sambashare
奇怪的是,当我尝试docker
在 tmux 中强制将我的用户添加到该组时,它说我已经在其中了!
$ sudo adduser me docker
The user `me' is already a member of `docker'.
我很困惑——为什么加入 tmux 会有所不同?作为参考,我使用fish
shell,这是我的.tmux.conf
:
$ cat ~/config/.tmux.conf
new-session
set -g default-terminal "screen-256color"
set -g history-limit 10000
setw -g mode-keys vi
set-option -g default-shell /usr/bin/fish
set-option -g default-command /usr/bin/fish
编辑
当我重新启动计算机时,一切又恢复正常了(tmux
“正常”外壳都显示了我的docker
成员身份)。我还是很好奇——为什么会发生这种事?
答案1
最可能的解释是会话是tmux
在您将用户添加到docker
组之前启动的。请注意,您可以在不终止活动会话的情况下注销tmux
,但该会话将不是当您稍后再次登录后重新附加到该组时,会受到组成员身份更改的影响。
在您对问题的编辑中,您说当您开始新tmux
会话(重新启动后)时,用户显示为该docker
组的成员。这是预期的,因为您现在tmux
从组成员身份已更改的环境中启动了一个会话。
答案2
我刚刚遇到了同样的问题。我必须关闭所有现有的 tmux 会话。之后,所有新的 tmux 会话都会继承正确的组。
答案3
您可以删除 tmux 会话文件:
rm /tmp/tmux-1000 # example for uid 1000
然后开始一个新会话并查看您是该组的成员。
答案4
- 杀死 tmux-server 然后启动一个新会话为我解决了这个问题。
tmux kill-server
tmux new -s ...
- 另请确保在修改用户/组后退出当前终端会话并启动新终端以使更改生效。