Lihat Script Lebih dari SSH?

8

Seorang teman, menggunakan mesin jarak jauh, SSHed ke mesin saya dan menjalankan skrip python berikut:


sementara (1):

.... cetak "halo dunia"


(skrip ini hanya mencetak 'hello world' terus menerus).

Saya sekarang masuk ke mesin saya. Bagaimana saya bisa melihat hasil skrip yang sedang dijalankan teman saya?


jika itu membantu, saya dapat 'melihat' skrip yang digunakan teman saya:

me @ home: ~ $ ps aux | grep justprint.py

teman 7494 12,8 0,3 7260 3300? Ss 17:24 0:06 python TEST_AREA / justprint.py

teman 7640 0.0 0.0 3320 800 poin / 3 S + 17:25 0:00 grep --color = otomatis saja


langkah apa yang harus saya ambil untuk melihat pesan "hello world" di layar saya?

pengguna3077
sumber

Jawaban:

9

Anda biasanya tidak dapat melihat hasil program orang lain. Lihat di kolom itu di mana perintah grep Anda berjalan pada tty pts/3, dan milik teman Anda ?, yang berarti terlepas dari terminal.

Anda bisa melihat ke mana outputnya berjalan ls -l /proc/7494/fd/(di mana 7494 adalah ID proses dari proses teman Anda) - meskipun jika Anda tidak berjalan sebagai root, Anda mungkin bahkan tidak bisa melihat, untuk alasan keamanan. (Jadi cobalah sudo ls -l /proc/7494/fd/.)

Ada hal-hal mengerikan, mengerikan, dan tidak menyenangkan yang mungkin dapat Anda lakukan untuk mengubah arah keluaran program. Tetapi secara umum, Anda tidak bisa dan tidak boleh.

Jika teman Anda ingin membagikan output dengan Anda, dan pendekatannya adalah mengarahkan kembali output program ke file, dan kemudian membuat file itu dapat dibaca oleh Anda:

$ python -u TEST_AREA/justprint.py > /tmp/justprint.out &
$ chmod a+r /tmp/justprint.out

(Di mana dalam hal ini "dapat dibaca oleh Anda" adalah "dapat dibaca oleh semua orang"; dengan sedikit lebih banyak pekerjaan Anda dapat mengatur grup bersama sehingga hanya Anda berdua yang dapat bertukar output.)

(Dan ketahuilah bahwa output python buffer secara default - mematikan itu untuk apa -u.)

mattdm
sumber
4

Jika Anda memiliki akses root pada mesin dan teman Anda bersedia untuk menjalankan beberapa perintah, dimungkinkan:

  1. [Root] screenharus setuid root :chmod u+s /usr/bin/screen
  2. [Teman] dimulai screen, dia bisa memberi nama sesi itu, membuatnya lebih mudah: screen -S "shared_session"
  3. [Teman] mengaktifkan mode multiuser: Ctrl-a :multiuser on
  4. [Teman] memungkinkan Anda untuk mengakses sesi layarnya: Ctrl-a :acladd you
  5. [Teman] (Opsional) membatasi akses Anda hanya baca: Ctrl-a :aclchg you -w "#"
  6. [Anda] lampirkan ke layar teman: screen -x friend/shared_session

Akar setuid mungkin agak berbahaya ...

mengibaskan
sumber
haruskah demikian suid?
xenoterracide
jika tidak, layar akan keluar dengan: Must run suid root for multiuser support.
mengibaskan
1
Menggunakan layar juga disarankan di crosspost pertanyaan ini ke stackoverflow: stackoverflow.com/questions/4425308/view-script-over-ssh/…. Perhatikan bahwa layar -t akan berfungsi dengan baik tanpa set root setuid.
kasterma
@asterma: Saya agak skeptis jika pengguna A benar-benar dapat melampirkan ke pengguna B screentanpa hak suid / root, dapatkah Anda menjelaskan lebih lanjut?
Mengibaskan
@wag Anda benar; semuanya kecuali langkah 6 bekerja tanpa, dan itu adalah langkah saya tidak repot-repot (tapi jelas seharusnya) pengujian. (Mungkin lebih baik jika langkah 4 memberi peringatan tentang ini)
kasterma