私がリモートサーバーにログインし、他の人が同じサーバーにログインしている場合は、コマンドラインを介して他の人に「私を監視」させる方法はありますか?
もちろん、時々ターミナルスクロールバックバッファをコピーして貼り付けてファイルにダンプする/tmp
こともできますcat
。色はありませんが、私が言う内容とほぼ同じです。
これは追加の作業を必要としないため、「画面共有」の一般的な意味とは非常に異なります。ネットワークトラフィックがまったくありません。ローカルリソースのみがあります。 (すべてログインしています。)
私はすでにそれを持っています噴水これは数ヶ月以内に発生した場合に非常に便利です。
可能ですか?どうすればいいですか?
答え1
多くの人がそれを提案しましたscreen
。画面が少し古くてひどいです。私はお勧めしますtmux
。
セッションを作成するには:tmux new -s <name>
その後、他の人がセッションに接続するには、実行してtmux a -t <name>
名前を同じにしてください。
Ctrl-thenをクリックしてbセッションを終了できますd。
これはすべて同じサーバー/コンピューターで実行する必要があります。
答え2
私はこのオプションを見つけましたman script
。
-f Flush output after each write. This is nice for telecooperation:
One person does ‘mkfifo foo; script -f foo’ and another can
supervise real-time what is being done using ‘cat foo’.
まだこれを持って遊んでいませんが、そうだと思います。正確に私は何を探していますか?これで遊んで色などが届くか確認することもできます。
答え3
彼女がどの端末を使用しているかを知っていれば、tee
出力を他の端末にパイプすることができます。
次のw
コマンドを使用して端末を検索できます。
user4@myubuntu:~$ w
16:41:36 up 13 min, 4 users, load average: 0.55, 0.60, 0.46
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
user1 :0 :0 16:28 ?xdm? 6:28 0.03s gdm-session-worker [pam/gdm-password]
user2 pts/1 :0 16:38 2:46 0.04s 0.04s bash
user3 pts/7 :0 16:38 1:32 0.09s 0.09s bash
user4 pts/8 :0 16:41 4.00s 0.05s 0.00s w
私はuser4
ターミナルにいますpts/8
。出力をuser2
端末に送信するには、pts/1
次のように新しいシェルを起動します。
$ bash | tee /dev/pts/1
その後、次のコマンドのすべての出力(入力ではない)がにコピーされますuser2
。完了したら、クリックしてCtrl-D
シェルを終了します。
他のユーザーにメッセージまたはテキストを送信するには、次のwrite
コマンドを使用できます。
$ write <username>
hello, are you there ?
Ctrl-d
答え4
まあ、画面を共有することはscreen
可能ですが、思ったよりも複雑です。
screen
他のユーザーのソケットにアクセスするには、uidをrootに設定する必要があります。 (誰かがこれをsetgidで使用できると思うかもしれませんが、そのようにコンパイルされているかどうかを確認していませんscreen
。)- 文書マルチユーザーコマンドの場合は少し単純なので、構成はそれほど単純ではありません。また、他のユーザーにACLを設定できますが、そのオプションは存在しないようです。印刷現在のACL。
つまり、私はそれを働かせ、特定の「作業」の価値を達成することができました。
まず、十分な権限があることを確認し、次の権限を変更してください/var/run/screen
。
chmod u+s /usr/bin/screen
chmod 755 /var/run/screen
次に、いくつかの設定コマンドをファイルにまとめます。
$ cat shared.screen.rc
multiuser on
aclumask ?-wx
aclumask ??-wx
addacl foo
aclchg foo -x ?
aclchg foo +x detach,help,next,prev,windows,info,select
multiuser
マルチユーザーモードを有効にし、aclumask
基本アクセスをすべてのユーザーに制限してから、ユーザーaddacl
への(すべての)アクセスを許可しますfoo
。これらのコマンドは、すべてのコマンド()への実行()アクセスをaclchg
削除し、いくつかのポジティブコマンドを再び許可します。-x
?
次に、を実行してユーザーが接続できる画面を作成しますscreen -c shared.screen.rc
。foo
foo$ screen -ls bar/
There is a suitable screen on:
18839.pts-2.test (08/21/16 22:09:07) (Multi, detached)
foo$ screen -r bar/
画面に書き込み、ほとんどのコマンドを使用するとエラーが発生します。しかし、コピーモードは機能しているようです。また、スプラッシュ画面はscreen -rd bar/
不可能だと思っても、所有していないユーザーが追い出したときに所有したユーザーを追い出す。screen -RRD
また、機能し、元のユーザーをログアウトします。pow_detach
そしてdetach
(2人目のユーザーにとっては興味深いでしょう)を無効にしてもそれには影響しません。興味深い。
もちろん、気にせずに他のユーザーが画面を乱雑にすることを嬉しく思っていれば、multiuser on
andを使用すればaddacl foo
十分です。私はあなたがこれをしなければならないと言うものではありません。