组成员身份随着 tmux 的消失而消失

组成员身份随着 tmux 的消失而消失

我有一个奇怪的问题,因为我的用户( 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 会有所不同?作为参考,我使用fishshell,这是我的.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 ...
  • 另请确保在修改用户/组后退出当前终端会话并启动新终端以使更改生效。

相关内容