重新加载 tmux 服务器以添加新组

重新加载 tmux 服务器以添加新组

不久前我创建了一些 tmux 会话,从那时起我就被添加到了一些 unix 组中。由于 tmux 服务器在我被添加到组之前已经启动,所以我在 tmux 中创建的所有 shell 都不属于这些组。

我知道有两个主题是相关的。1 2

在第一个中,他们使用newgrp打开一个新组的新 shell(如果我们有权限的话)。这不是我想要的,原因有很多:

  • 我必须为每个组都做这件事(可能很多)
  • 我必须对每个我将要创建的新窗口/窗格执行此操作(可能很多)
  • 我无法访问已打开的 shell 上的命令行历史记录(可能很多)

在第二种情况下,他们只是关闭 tmux 服务器。我不想这样做,因为我会丢失所有 shell 历史记录,然后我必须重置所有环境。

有没有办法更新 tmux 服务器的组,并将它们传递给打开的 shell(可能使用神奇的 linux 命令)?

答案1

不可以。进程的凭证不能被外部更改,只能由其自身更改 - 并且如果进程不再具有任意更改其凭证的权限(基本上在您登录时,登录处理程序进程将其权限从“root”降至您自己的 UID),那么它就无法获取任何其他组。

newgrp或或susg之类的工具sudo之所以有效,是因为它们是具有 setuid 位的外部程序(它们以 root 身份启动并基本上从头开始初始化您的凭据)。

使用链接文章中的其他方法之一(例如su对自己)来获取全部一次分组,然后使用可编写脚本的 tmux CLI 循环遍历所有窗格,向它们发送 shell 命令以将历史记录写入某个唯一文件,调用 su/sg,从该文件重新加载历史记录。

相关内容