如何多用户共享 tmux session
tmux server 管理着多个 session,而一个 session 可以被多个 tmux client 连接。 这些 tmux client 通过一个 UNIX Damain Socket 文件来跟 tmux server 通讯,因此,要想让多个用户共享 tmux session,只需要指定这些用户调用的 tmux client 连接上同一个 Socket 文件即可。
而这可以分成两种情况:
- 多个用户使用同一个操作系统帐号
- 多个用户使用不同的操作系统帐号
这两者的区别主要在 Socket 文件的权限问题
多个用户使用同一个操作系统帐号
在多个用户使用同一个操作系统帐号时,不存在用户访问Socket文件的权限问题,因此操作起来特别简单,只需要多个用户指定同一个tmux session名字就行了
第一个用户新建一个 tmux session
tmux new-session -s mysession
第二个用户连接上这个 tmux session 即可
tmux attach-session -t mysession
多个用户使用不同的操作系统帐号
当多个用户使用不同帐号登录操作系统时,就存在访问 Socket 文件的权限问题了。
那么 tmux server 使用的 Socket 文件在哪里呢?
根据 tmux manual page 的说法,tmux的 socket 文件默认为 /tmp/
或 ${TMUX_TMPDIR}/
目录下的 default
文件。 但当使用 -L socket-name
指定socket-name时,该socket文件为 /tmp/
或 ${TMUX_TMPDIR}/
目录下的 ${socket-name}
文件. 甚至,我们可以通过 -S socket-path
的方法来直接指定 Socket 文件的路径。
为了让多个用户在不同帐号间共享tmux session,可以这么做:
第一个用户指定一个Socket文件来创建tmux session
tmux -S /tmp/shared new-session -s shared
这时你会看到在
/tmp/
目录下多了一个shared
文件ls -l /tmp/shared
srwxrwx--- 1 lujun9972 lujun9972 0 8月 19 23:25 /tmp/shared
你会发现user和group都有权限对其进行读写
为了让其他账户能够访问socket文件,有两种方法
第一种方法是让这些账户处于同一个用户组(例如joint)中,再将socket文件的宿组改为那个用户组(即joint组)
usermod -a -G joint user1 usermod -a -G joint user2 chown :joint /tmp/shared
另一种方法当然就是让socket文件 other 也能访问啦
chmod 777 /tmp/shared
若其他用户只是查看 tmux session 而不做输入的话,也可以不赋予写权限
chmod 775 /tmp/shared
其他用户可以通过这个 socket 文件连接上同一个 session 了
tmux -S /tmp/shared attach-session -t shared
或者
tmux -S /tmp/shared attach-session -t shared -r
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论