友人はリモートコンピュータを使用して自分のコンピュータにSSHとして接続し、次のPythonスクリプトを実行しました。
そして(1):
...."Hello World" 印刷
(このスクリプトは「hello world」を印刷し続けます)。
今私のコンピュータにログインしました。友達が実行しているスクリプトの出力をどのように表示できますか?
助けになれば、私の友人が使っているスクリプトを「発見」することができました。
me@home:~$ ps aux grep justprint.py |
友達7494 12.8 0.3 7260 3300? SS 17:24 0:06 Python TEST_AREA/justprint.py
友達 7640 0.0 0.0 3320 800ポイント/3 S+ 17:25 0:00 grep --color=auto ただ
画面に「hello world」メッセージを表示するにはどのような措置を講じる必要がありますか?
答え1
通常、他の人が作成したプログラムの出力は表示されません。その列であなたのgrepコマンドがttyで実行されているpts/3
のに対して、友達のコマンドはttyで実行されていることを確認してください?
。これは、端末から切り離されたことを意味します。
出力がどこに行くかを見ることができますls -l /proc/7494/fd/
(ここで7494は友達プロセスのプロセスIDです)。ルートとして実行しないと、セキュリティ上の理由からこれを見ることができない可能性があります。 (一度試してみてくださいsudo ls -l /proc/7494/fd/
。)
プログラムの出力がどこに行くのかを変更するために、ひどい、ひどい、愚かなことをすることもできます。しかし、一般的に言えば、これを行うことはできません。
友達があなたの出力をあなたと共有したい場合は、プログラムの出力をファイルにリダイレクトしてからファイルを読み取ることができます。
$ python -u TEST_AREA/justprint.py > /tmp/justprint.out &
$ chmod a+r /tmp/justprint.out
(この場合、「自分で読むことができる」とは、「誰でも読むことができる」という意味です。もう少し努力すれば、2人だけが出力を交換できるように共有グループを設定できます。)
(Pythonはデフォルトで出力をバッファリングします。これをオフにすることが目的です-u
。)
答え2
お使いのコンピュータにrootアクセス権があり、お友達がいくつかのコマンドを実行することを意図している場合は、次のことができます。
- [root]は
screen
次のようになります。setuid ルート:chmod u+s /usr/bin/screen
- [Friend] が起動したら、
screen
セッション名を指定して操作を簡単にできます。screen -S "shared_session"
- [友達]マルチユーザーモードを有効にする:
Ctrl-a :multiuser on
- [友達]は自分のスクリーンセッションへのアクセスを提供します。
Ctrl-a :acladd you
- [友達](オプション)読み取り専用アクセスを制限します。
Ctrl-a :aclchg you -w "#"
- [あなた]友達の画面に添付:
screen -x friend/shared_session
setuidルートは少し危険です。