在两个用户之间共享 tmux 会话还有哪些其他方法?

在两个用户之间共享 tmux 会话还有哪些其他方法?

我正在寻找一种干净、简单的方法来与同一台计算机上的其他用户共享 tmux 会话。我已经尝试过该-S socket-path选项,但它需要先打开套接字路径的所有权限,然后其他人才能连接到会话。它可以工作,但是有点麻烦。例如:

# Me
$ tmux -S /tmp/pair
$ chmod 777 /tmp/pair

# Another user
$ tmux -S /tmp/pair attach

这可行,但两个用户现在共享相同的 tmux 配置(发起会话的用户的配置)。有没有办法允许两个用户使用他们自己的 tmux 配置和他们自己的个人 tmux 键绑定?

为了获得奖励积分,理想情况下,向其他用户授予 tmux 会话的只读访问权限也是不错的选择。

答案1

https://github.com/zolrath/wemux:

wemux 增强了 tmux,使多用户终端复用变得更容易、更强大。它允许用户托管 wemux 服务器并让客户端加入:

镜像模式为客户端(您计算机上的另一个 SSH 用户)提供对会话的只读访问权限,允许他们看到您的工作,或者

配对模式允许客户和您自己在同一终端中工作(共享光标)

Rogue 模式允许客户端在同一 tmux 会话中的另一个窗口(单独的光标)中配对或独立工作。

它具有多服务器支持以及用户列表和用户附加/分离时的通知。

它是 tmux 上的 shellscript 包装器 - 无需编译。

答案2

我在 Ubuntu 上尝试过这个,但不明白为什么它不能在其他 Unix 变体上工作。

如果两个用户都是同一组的成员,并且套接字路径使用该组,则两个用户都可以正常连接。

您不必每次创建套接字路径时都更改套接字路径的权限,而是可以为套接字创建一个特定目录(我使用 /var/tmux)。

首先为tmux用户添加一个组

$ addgroup $TMUX_GROUP

创建一个目录,并将组设置为 $TMUX_GROUP 并使用 setgid 位,以便在该目录中创建的文件自动将组设置为 $TMUX_GROUP。

$ mkdir /var/tmux
$ chgrp $TMUX_GROUP /var/tmux
$ chmod g+ws /var/tmux

接下来确保想要共享会话的用户是 $TMUX_GROUP 的成员

$ usermod -aG $TMUX_GROUP user1
$ usermod -aG $TMUX_GROUP user2

现在您创建一个共享会话

$ tmux -S /var/tmp/shared-session

并从另一个帐户附加到它

$ tmux -S /var/tmp/shared-session attach 

答案3

这并不是 tmux 独有的,但现在我正在使用它:

您可以使用script -f /path/to/some/file将终端会话写入文件。该-f选项会在您键入时更新文件。

其他人(如果需要,只有该文件的读取权限)可以tail -f查看该文件、您的终端会话。该-f选项使tail输出无论附加什么都可以。

两者的组合“同步”终端的视图。与 tmux 一起使用时,它还具有避免两个用户具有不同分辨率时发生的调整大小的优点。另一个特点是每个用户都可以在另一个私有窗口或会话上工作。

一个潜在的不便之处在于,某些命令(例如基于 ncurses 的命令)可能会对输出、转义序列(颜色)做出奇怪的事情。但是,我在 tmux 中使用它,并且 tmux 似乎解决了这些问题。我可以看到其他用户阅读手册页并使用其他创建缓冲区的命令,颜色显示正确等。

但这不允许写入彼此的终端(也许可以为此添加一些其他解决方案)。

我喜欢有一个带有两个窗格的窗口:一个窗格运行script -f供我的同伴查看,另一个窗格在它旁边,我tail -f是终端。

它也适用于 ttys(并且套接字或命名管道也可以用于该文件)

答案4

有一个非常方便的工具,那就是特马特

当您没有网络时(例如在酒店),您可以使用它。

$ apt-cache show tmate
Package: tmate
[...]
Homepage: http://tmate.io/
Description-en: terminal multiplexer with instant terminal sharing
 tmate provides an instant pairing solution, allowing you to share a terminal
 with one or several teammates. Together with a voice call, it's almost like
 pairing in person. The terminal sharing works by using SSH connections to
 backend servers maintained by tmate upstream developers; teammates need to be
 given a randomly-generated token to be able to join a session.
 .
 tmate is a modified version of tmux, and uses the same configurations such as
 keybindings, color schemes etc.

相关内容