Người dùng khác có thể xem các đối số được truyền cho một lệnh không?


21

Nếu tôi gọi một lệnh với các đối số như vậy:

bob@bob-pc:~$ command -arg1 -arg2

... những người dùng khác có thể xem các đối số được truyền cho lệnh không?


Câu trả lời đơn giản "có" "không" cho câu hỏi này sẽ mâu thuẫn với nội dung và tiêu đề: P
kizzx2

@ kizzx2: Đã sửa.
bahamat

Câu trả lời:


13

Nói chung là có, họ có thể nhìn thấy nó. Đây là từ wtrang người đàn ông:

Các mục sau đây được hiển thị cho mỗi người dùng: tên đăng nhập, tên tty, máy chủ từ xa, thời gian đăng nhập, thời gian nhàn rỗi, JCPU, PCPU và dòng lệnh bắt buộc của quy trình hiện tại của họ.

Dòng lệnh hoàn chỉnh của quy trình hiện đang chạy của bạn sẽ được hiển thị. Đó là lý do tại sao bạn không muốn cung cấp những thứ như mật khẩu thông qua các đối số dòng lệnh.


Không có cách nào để vô hiệu hóa điều đó?
Nathan Osman

3
@George Có, bởi vì rdesktop làm điều đó bằng cách nào đó (đối số mật khẩu biến thành XXXXXXXX); Tôi muốn biết làm thế nào. Nó có thể làm một cái gì đó khập khiễng như tự gạt mình và vượt qua một cuộc tranh cãi giả tạo; Tôi không chắc chắn
Michael Mrozek

13
Trên Linux, một quy trình có thể ghi đè lên mảng đối số được truyền cho nó. Đây là phản ánh trong cây quy trình mà người dùng khác có thể nhìn thấy. Tuy nhiên, vẫn luôn có một thời gian chúng bị phơi bày và có thể dễ bị tổn thương trước các điều kiện chủng tộc và các cuộc tấn công thời gian.
mattdm

15

Nói chung, các đối số dòng lệnh được hiển thị cho tất cả. Ví dụ, với tư cách là người dùng không phải root trên OpenBSD, tôi có thể thấy các đối số của các tiến trình đang chạy với quyền root:

$ ps -U root -o command= |grep getty |head -n 1
/usr/libexec/getty std.9600 ttyC0

Trên Linux, bạn sẽ nhận thấy rằng tất cả /proc/*/cmdlinecác tệp đều có thể đọc được.

Có thể có các cài đặt cụ thể cao trong đó các đối số dòng lệnh vẫn ở chế độ riêng tư. Ví dụ: SELinux và Solaris có thể ẩn hoàn toàn các quy trình khỏi những người dùng khác . Nhưng trừ khi bạn hoàn toàn biết bạn đang ở trong một cài đặt như vậy, giả sử các đối số dòng lệnh là công khai.


8

Trên các thiết lập tiêu chuẩn, các đối số có thể nhìn thấy. Như đã đề cập , các quy trình có thể ghi đè lên chúng trong bộ nhớ nhưng không phải trước khi các quy trình khác có cơ hội nhìn thấy chúng.

Tuy nhiên, nghĩa patchset grsecurity bao gồm một bản vá mà thay đổi nó để chỉ chủ sở hữu quá trình (và root) có thể thấy các đối số truyền cho một quá trình.

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.