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

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

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


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

对于奖励积分,理想情况下,最好授予只读访问权限。与其他用户进行tmux会话。

评论

我太懒了,我只是用你的问题作为答案:D

警告:现在,tmux detach支持-E,该命令可以使用任意shell命令替换客户端。目标客户端是否在其他Unix用户下运行并不重要。因此,任何可以访问/ tmp / pair的用户都可以运行任意代码来替换任何附加的客户端。如果您以足够快的速度重新连接它们,受害者可能不会注意到:tmux -S / tmp / pair detach -t / dev / victim_tty -E'(恶意shell代码)和exec tmux -S / tmp / pair附加'

#1 楼

摘自https://github.com/zolrath/wemux:wemux增强了tmux,使多用户终端复用和更强大。它允许用户托管wemux服务器,并且
允许客户端加入以下任一方式:

镜像模式使客户端(计算机上的另一个SSH用户)具有只读访问权限
,让他们看到您的工作,或者

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

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

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


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

#2 楼

我曾在Ubuntu上尝试过此方法,但不明白为什么它不能在其他unix变体上运行。

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

不必每次创建套接字路径时都必须更改套接字路径的权限,而是可以为套接字创建一个特定目录(我使用了/ var / tmux)。 br />
首先为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


评论


如果您具有支持ACL的文件系统,则无需使用组(尤其是不需要任何根干预)。但这不能解决共享tmux配置的问题,对吗?

–吉尔斯'所以-不再是邪恶的'
2011年4月11日在20:15

要创建共享会话:tmux -S $ TMUX_GROUP / shared-session。要从另一个帐户附加它:tmux -S $ TMUX_GROUP /共享会话附加

– jfs
16-09-20在17:14

上面的评论(@ J.F.Sebastian)应该是答案的一部分。提出的设置可以,但是在解释如何真正使用它时,答案不尽人意。对于此页面中的所有答案,此答案是可以更好地解决该问题的答案。

– DrBeco
17年7月16日在0:07



#3 楼

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

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

由于另一个终端多路复用器屏幕支持您正在寻找的功能,可悲的是,它也以繁琐的方式...我不确定这是否适合您,但也许其他人会找到

屏幕解决方案:

主持会话:


屏幕的SUID位必须设置为:-/
使用screen -S sessionname打开会话


ctrla + :multiuser on


ctrla + :acladd otherUsername


加入会话:


screen -x username/sessionname

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

示例:



:aclchg * -wx "#,?"会将会话权限设置为仅对所有用户只读

:aclchg foo +w 2将授予用户foo在窗口2上的写访问权限

:aclchg bar +x detach将授予将会话分离到用户栏的权限


评论


对于它的价值,我觉得tmux解决方案(虽然稍微有些冗长)实际上是“干净的”,因为它不涉及让setuid二进制文件在文件系统中浮动。

–字形
2010-12-22 21:01

不幸的是,以这种方式使用的tmux存在一个安全问题:您有权访问的那些人可以轻松地创建新会话,并在其中执行您看不见的事情。

– cjs
2011年9月5日下午5:37

@ CurtJ.Sampson如果强制用户运行“ attach -r”(例如通过受限制的外壳程序)怎么办?

– Max Barraclough
19-12-29 at 0:37

#4 楼

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

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

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

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

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

但是这不允许写到彼此的终端(也许其他解决方案可能是

我希望有一个带有两个窗格的窗口:一个正在运行script -f的窗格供我的同行查看,另一个在其旁边的tail -f的终端。

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

评论


我喜欢你的答案!这既简单又实用!

– J-L
18/12/6在18:32