天天都在用的 Tmux,可你知道如何在多用戶間共享 Session 嗎?
- 2020 年 2 月 21 日
- 筆記

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 題圖:來自Google圖片搜索 版權:本文版權歸原作者所有 投稿:歡迎投稿,投稿郵箱: [email protected]