it-swarm.cn

在两个用户之间共享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会话的只读访问权限授予其他用户也将是不错的选择。

112
Ryan McGeary

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

wemux增强了tmux,使多用户终端多路复用既简单又强大。它允许用户托管wemux服务器并让客户端加入以下任一方:

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

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

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

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

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

48
Peter

我曾在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
17
Stephen Paulger

据我所知,不可能以“干净”的方式与其他用户共享会话。

如果客户端不使用-r开关,则也无法进行只读访问。

作为另一个终端多路复用器screen支持您正在寻找的功能,可悲的是,它也很麻烦...我不确定这是否是您的选择,但也许其他人会发现这个有用。

screen的解决方案:

主持会议:

  • 屏幕的SUID位必须设置为:-/
  • 使用screen -S sessionname打开会话
  • ctrla + :multiuser on
  • ctrla + :acladd otherUsername

加入会议:

  • screen -x username/sessionname

您可以使用:aclchg:chacl为用户设置权限位(全部为*)。 #附加会影响Windows ,?附加将影响命令。

例子:

  • :aclchg * -wx "#,?"将会话权限设置为仅对所有用户只读
  • :aclchg foo +w 2将为窗口2中的用户foo提供写访问权限
  • :aclchg bar +x detach将授予与用户栏分离会话的权限
12
echox

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

您可以使用_script -f /path/to/some/file_将终端会话写入文件。键入时,_-f_选项将更新文件。

其他人(如果需要,仅对文件具有读取权限)可以执行_tail -f_来查看文件,即终端会话。 _-f_选项使tail输出附加的内容。

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

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

但是,这不允许写入彼此的终端(可能为此添加了其他解决方案)。

我希望有一个包含两个窗格的窗口:一个窗格正在运行_script -f_,供同伴查看,另一个窗格位于我旁边的_tail -f_,它是终端。

它也可以在ttys中工作(并且文件也可以使用套接字或命名管道)

11
ferhtgoldaraz