专栏首页运维之美天天都在用的 Tmux,可你知道如何在多用户间共享 Session 吗?

天天都在用的 Tmux,可你知道如何在多用户间共享 Session 吗?

Tmux Server 管理着多个 Session,而一个 Session 可以被多个 Tmux Client连接。这些 Tmux Client 通过一个 UNIX Damain Socket 文件来跟 Tmux Server 通讯。

因此,要想让多个用户共享 Tmux Session,只需要指定这些用户调用的 Tmux Client 连接上同一个 Socket 文件即可。而这可以分成两种情况:

  • 多个用户使用同一个操作系统帐号
  • 多个用户使用不同的操作系统帐号

这两者的区别主要在 Socket 文件的权限问题。

多个用户使用同一个操作系统帐号

在多个用户使用同一个操作系统帐号时,不存在用户访问 Socket 文件的权限问题。因此操作起来特别简单,只需要多个用户指定同一个 Tmux Session 名字就行了。

1. 第一个用户新建一个 Tmux Session

$ tmux new-session -s mysession

2. 第二个用户连接上这个 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,我们可以这么做:

1. 第一个用户指定一个 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

来源:GitHub 原文:http://t.cn/Ai9xRNon 题图:来自谷歌图片搜索 版权:本文版权归原作者所有 投稿:欢迎投稿,投稿邮箱: editor@hi-linux.com

本文分享自微信公众号 - 运维之美(Hi-Linux),作者:lujun9972

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 你有快速备份和迁移 Kubernetes 集群应用以及持久化数据的需求吗,Velero 助你秒实现!

    Heptio Velero ( 以前的名字为 ARK) 是一款用于 Kubernetes 集群资源和持久存储卷(PV)的备份、迁移以及灾难恢复等的开源工具。

    iMike
  • 1 分钟小技巧系列 | 如何在不杀进程的前提下关闭一个 TCP Socket 连接

    要在线关闭一个 TCP Socket 连接,你可能会说很简单,netstat -antp 找到连接,kill 掉这个进程就行了。

    iMike
  • 掌握这些提升命令行效率的快捷键后,让你的 SHELL 快得飞起来 ( 强烈建议收藏!)

    做为一个 Linux 用户,一定经常和命令行打交道。而绝大多数 Linux 发行版默认的 Shell 都是 Bash,本文将给大家介绍一些 Bash 中非常实用...

    iMike
  • .Net 基于GDI+的图件绘制平台的设计与实现(一)

    程序你好
  • 孙正义:未来鞋子都比人聪明,AI智商至少是人类50倍

    30年后,鞋子都比你聪明 ? 量子位(QbitAI) | 若朴 编译整理 在量子位的微信群里,曾经有家长问:面对未来的AI世界,怎么才能让孩子提早准备? 然而也...

    量子位
  • 深度解密:软银孙正义如何成为美国硅谷最有权势之人

    【腾讯科技编者按】据外媒报道,伊隆·马斯克、杰夫·贝索斯亦或是马克·扎克伯格(,都不如日本亿万富翁孙正义那样,对AI驱动的未来有着最大胆的愿景。在孙正义看来,未...

    量子位
  • 孙正义万字访谈:AI是我现在唯一关注的事情,我是科技的绝对信徒

    在接受CNBC超长采访中,软银创始人、千亿美元愿景基金掌舵者一再表示,AI能解决人类无法解决的问题,未来一切都将被重新定义,各行各业、生产方式以及生活方式,都将...

    量子位
  • MySQL 8.0初体验

    从决定安装MySQL 8.0到开始行动,也就不到一个小时的时间,一个小时的时间能干些啥呢,来简单体验下8.0,官网上能看到这个丰富的表情包。

    jeanron100
  • Socket 通信原理

    什么是Socket? Socket的中文翻译过来就是“套接字”。套接字是什么,我们先来看看它的英文含义:插座。 Socket就像一个电话插座,负责连通两端的电话...

    wangxl
  • JsonUnit 断言框架用法总结

    林万程

扫码关注云+社区

领取腾讯云代金券