我正在寻找一种干净、简单的方法来与同一台计算机上的其他用户共享 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.