Xem tập lệnh qua SSH?


8

Một người bạn, sử dụng máy từ xa, đã SSH vào máy của tôi và chạy tập lệnh python sau:


trong khi (1):

.... in "xin chào thế giới"


(tập lệnh này chỉ đơn giản là in 'hello world' liên tục).

Bây giờ tôi đã đăng nhập vào máy của tôi. Làm thế nào tôi có thể thấy đầu ra của tập lệnh mà bạn tôi đang chạy?


nếu nó hữu ích, tôi có thể 'phát hiện' tập lệnh mà bạn tôi đang sử dụng:

tôi @ nhà: ~ $ ps phụ | grep justprint.py

bạn 7494 12.8 0,3 7260 3300? Ss 17:24 0:06 python TEST_AREA / justprint.py

bạn 7640 0,0 0,0 3320 800 điểm / 3 S + 17:25 0:00 grep --color = tự động


Tôi nên làm những bước nào để xem tin nhắn "hello world" trên màn hình?


Câu trả lời:


9

Bạn thường không thể thấy đầu ra của chương trình bao phấn. Xem qua trong cột đó nơi lệnh grep của bạn đang chạy trên tty pts/3và bạn của bạn ?, có nghĩa là nó bị tách ra khỏi thiết bị đầu cuối.

Bạn có thể thấy đầu ra đang đi về đâu ls -l /proc/7494/fd/(trong đó 7494 là ID tiến trình của quy trình của bạn bè bạn) - mặc dù nếu bạn không chạy bằng root, bạn có thể thậm chí không thể tìm kiếm, vì lý do bảo mật. (Vậy hãy thử sudo ls -l /proc/7494/fd/.)

Có những điều kinh khủng, khủng khiếp, đầy bùn mà bạn có thể làm để thay đổi nơi đầu ra của chương trình đi. Nhưng nói chung, bạn không thể và không nên.

Nếu bạn của bạn muốn chia sẻ đầu ra với bạn và cách tiếp cận sẽ là chuyển hướng đầu ra của chương trình sang một tệp, sau đó làm cho tệp đó có thể đọc được bởi bạn:

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

(Trong trường hợp này "mọi người có thể đọc được" là "mọi người có thể đọc được"; với một chút công việc hơn, bạn có thể thiết lập một nhóm chia sẻ để chỉ hai bạn có thể trao đổi đầu ra.)

(Và lưu ý rằng mặc định bộ đệm python - tắt nó là cái gì -uđể làm.)


4

Nếu bạn có quyền truy cập root trên máy và bạn của bạn sẵn sàng thực hiện một số lệnh, có thể:

  1. [Root] screenphải là root setuid :chmod u+s /usr/bin/screen
  2. [Bạn bè] bắt đầu screen, anh ta có thể đặt tên cho phiên, làm cho nó dễ dàng hơn: screen -S "shared_session"
  3. [Bạn bè] cho phép chế độ nhiều người dùng: Ctrl-a :multiuser on
  4. [Bạn bè] cho phép bạn truy cập phiên màn hình của anh ấy: Ctrl-a :acladd you
  5. [Bạn bè] (Tùy chọn) hạn chế quyền truy cập của bạn ở chế độ chỉ đọc: Ctrl-a :aclchg you -w "#"
  6. [Bạn] đính kèm vào màn hình bạn bè: screen -x friend/shared_session

Rễ setuid có thể hơi nguy hiểm ...


nó có phải suidkhông?
xenoterracide

nếu không, màn hình sẽ thoát với: Must run suid root for multiuser support.
wag

1
Việc sử dụng màn hình cũng được đề xuất tại thanh ngang của câu hỏi này đối với stackoverflow: stackoverflow.com/questions/4425308/view-script-over-ssh/ trộm Lưu ý rằng màn hình -t sẽ hoạt động tốt mà không cần thiết lập root setuid.
kasterma

@kasterma: Tôi hơi nghi ngờ nếu người dùng A thực sự có thể đính kèm với người dùng B screenmà không có quyền suid / root, bạn có thể giải thích thêm không?
wag

@wag bạn nói đúng; tất cả mọi thứ trừ bước 6 hoạt động mà không có, và đó là bước tôi không bận tâm (nhưng rõ ràng nên có) thử nghiệm. (có thể thật tuyệt nếu bước 4 đưa ra cảnh báo về điều này)
kasterma
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.