Посмотреть скрипт над SSH?


8

Друг, используя удаленную машину, подключился к моей машине по SSH и запустил следующий скрипт на python:


пока (1):

.... печать "привет мир"


(этот скрипт просто печатает «привет мир» непрерывно).

Теперь я вошел в мою машину. Как я могу увидеть вывод сценария, который выполнял мой друг?


если это поможет, я могу 'определить' сценарий, который использует мой друг:

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

друг 7494 12,8 0,3 7260 3300? Сс 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 just


какие шаги я должен предпринять, чтобы просмотреть сообщения "hello world" на моем экране?


Ответы:


9

Вы вообще не можете видеть выходные данные программы другого человека. Посмотрите в этой колонке, где ваша команда grep работает на tty pts/3, а команда вашего друга - ?это означает, что она отсоединена от терминала.

Вы могли видеть, куда идет вывод ls -l /proc/7494/fd/(где 7494 - это идентификатор процесса вашего друга) - хотя, если вы не работаете от имени пользователя root, вы, вероятно, даже не можете смотреть из соображений безопасности. (Так попробуй sudo ls -l /proc/7494/fd/.)

Есть ужасные, ужасные, грязные вещи, которые вы могли бы сделать, чтобы изменить направление вывода программы. Но в общем, вы не можете и не должны.

Если ваш друг хочет поделиться с вами выводом, и вы можете перенаправить вывод программы в файл, а затем сделать этот файл читаемым вами:

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

(Где в этом случае «читаемый вами» «читаемый всеми»; если немного больше работы, вы можете создать общую группу, чтобы только вы двое могли обмениваться выводом.)

(И имейте в виду, что Python буферизирует вывод по умолчанию - для этого нужно отключить его -u.)


4

Если у вас есть root-доступ на компьютере, и ваш друг желает выполнить некоторые команды, это возможно:

  1. [Root] screenдолжен быть установлен в root :chmod u+s /usr/bin/screen
  2. [Друг] начинает screen, он может дать название сессии, облегчает: screen -S "shared_session"
  3. [Friend] включает многопользовательский режим: Ctrl-a :multiuser on
  4. [Друг] позволяет вам получить доступ к его экранной сессии: Ctrl-a :acladd you
  5. [Друг] (необязательно) ограничивает ваш доступ только для чтения: Ctrl-a :aclchg you -w "#"
  6. [Вы] прикрепите на экран друзей: screen -x friend/shared_session

Корень setuid, возможно, немного опасен ...


это должно быть suid?
ксенотеррацид

если нет, то экран выйдет с: Must run suid root for multiuser support.
wag

1
Также было предложено использовать screen в кросс-посте этого вопроса для stackoverflow: stackoverflow.com/questions/4425308/view-script-over-ssh/… Обратите внимание, что screen -t будет работать нормально без корневого набора setuid.
Кастерма

@kasterma: Я немного скептически отношусь к тому, что пользователь A может присоединиться к пользователю B screenбез прав suid / root. Можете ли вы объяснить это дальше?
вилять

@ ваг ты прав; все, кроме шага 6, работает без, и это тот шаг, который я не потрудился (но явно должен был) протестировать. (было бы неплохо, если бы шаг 4 предупредил об этом)
kasterma
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.