![](/style/images/good.png)
![](/style/images/bad.png)
如何多用户共享tmux session
source link: https://www.lujun9972.win/blog/2018/08/19/%E5%A6%82%E4%BD%95%E5%A4%9A%E7%94%A8%E6%88%B7%E5%85%B1%E4%BA%ABtmux-session/index.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
如何多用户共享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
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK