Linux · 1 min read · Dec 15, 2025

Linuxターミナルセッションの共有:TmuxとScreenを使って

tmuxとGNU Screenは、仮想コンソールのマルチプレクシングを可能にするよく知られたユーティリティです。どちらかを使用すると、セッションを開始し、デタッチし、別のマシンに移動して、途切れることなくセッションを再開することができます。また、これらのツールを使用して、複数のユーザー間で単一のセッションを同時に共有することも可能です。

単一アカウントでの基本的なターミナルセッションの共有

2人以上のユーザー間でアカウントが共同で保持されている場合、ターミナルコンソールの共有は非常に簡単です。tmuxもscreenも、複数回ログインした単一アカウント間での基本的な共有に特別なことは必要ありません。同じユーザーとして両方がログインしている場合、基本的な共有は非常に簡単です。

screenを使った基本的な共有

1つのターミナルで、foobarがあなたのscreenセッションの名前である新しいセッションを作成します:

screen -S *foobar*

次に、別のターミナルでそのセッションにアタッチします。

screen -x *foobar*

これで完了です。たった2つのステップです。

tmuxを使った基本的な共有

再び、2つのステップだけです。最初のターミナルで、sharedがセッション名であるtmuxを開始します:

tmux new-session -s *shared*

次に、2番目のターミナルで共有セッションにアタッチします。

tmux attach-session -t *shared*

これで完了です。

2つの異なるアカウント間でのターミナルセッションの共有

2つの異なるアカウント間での共有には、1つのアカウントが別のアカウントのセッションにアクセスするために必要な権限を付与するための追加のステップが必要です。場合によっては、セットアップを準備するためにシステム管理者の助けが必要になります。

tmuxを使った2つの異なるアカウント間の共有

異なるユーザーの場合、両方のユーザーが読み書きできるようにtmuxソケットの権限を設定する必要があります。1つの前提条件は、2人のユーザーの間に共通のグループが存在することです。そのようなグループが存在しない場合は、作成する必要があります。

最初のターミナルで、sharedがセッション名で、sharedsがソケットの名前であるtmuxを開始します:

tmux -S /tmp/shareds new -s *shared*

次に、ソケットを両方のユーザーが共有するグループにchgrpします。この例では、jointが両方のユーザーが共有するグループです。グループに他のユーザーがいる場合、彼らもアクセスできます。したがって、グループには2人のメンバーだけがいることを推奨します。

chgrp joint /tmp/shareds

2番目のターミナルで、そのソケットとセッションを使用してアタッチします。

tmux -S /tmp/shareds attach -t *shared*

これで完了です。セッションは、2番目のユーザーに対して読み取り専用にすることもできますが、これは任意です。読み取り専用で作業するかどうかの決定は、2番目のユーザーがセッションにアタッチする際に行われます。

tmux -S /tmp/shareds attach -t *shared* -r

screenを使った2つの異なるアカウント間の共有

2人の異なるユーザーとしてログインしている場合、screenを使用するためには3つの前提条件があります。まず、screenはSUIDに設定されている必要があり、/var/run/screenからグループ書き込みアクセスを削除する必要があります。この文脈でSUIDを使用する安全性について考慮する必要があります。次に、screenのACLを使用して2番目のユーザーに権限を付与する必要があります。

sudo chmod u+s /usr/bin/screen  
sudo chmod 755 /var/run/screen

最初のユーザーのターミナルで、上記の基本的な共有と同様にscreenを開始します。ここで、foobarがscreenセッションの名前です。次に、マルチユーザーモードをオンにし、user2をACLに追加します。ここで、user2はセッションを共有する2番目のアカウントです。

screen -S *foobar*  
^A:multiuser on  
^A:acladd *user2*

セッションは、次のACL変更を入力することで2番目のユーザーに対して読み取り専用にすることができます:^A:aclchg user2 -w “#?”

次に、別のターミナルで最初のユーザーのセッションにアタッチします。

screen -x *user1*/foobar

マルチユーザーモードをオンにし、acladd user2を.screenrcに追加して、screenを起動すると自動的に効果を発揮させることも可能です。すべてのscreenセッションで変更が望ましくない場合は、screenを起動する際に-cオプションを使用して別の.screenrc構成ファイルを指定できます。

余談

終了する際は注意してください。シェルを単に終了すると、すべての参加者のターミナルセッションが終了します。代わりにセッションをデタッチすると、他のユーザーは途切れることなく作業を続けることができます。tmuxではそれが^B-dで、screenではそれが^A-dです。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。