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?
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ói chung là có, họ có thể nhìn thấy nó. Đây là từ w
trang 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.
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
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/*/cmdline
cá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.
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.