-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用户)具有只读访问权限
,让他们看到您的工作,或者
配对模式允许客户和您自己在同一终端上工作
(共享光标)
恶意模式允许客户端可以在同一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
评论
我太懒了,我只是用你的问题作为答案:D警告:现在,tmux detach支持-E,该命令可以使用任意shell命令替换客户端。目标客户端是否在其他Unix用户下运行并不重要。因此,任何可以访问/ tmp / pair的用户都可以运行任意代码来替换任何附加的客户端。如果您以足够快的速度重新连接它们,受害者可能不会注意到:tmux -S / tmp / pair detach -t / dev / victim_tty -E'(恶意shell代码)和exec tmux -S / tmp / pair附加'