Tại sao không nên sử dụng mật khẩu trong dòng lệnh?


33

Tại sao mọi người sợ viết mật khẩu trong dòng lệnh?

Tệp lịch sử được đặt trong ~/.history, vì vậy nó chỉ khả dụng cho người dùng đã thực thi các lệnh (và root).


2
Bạn có thể tránh để đăng nhập một số lệnh trong tệp lịch sử của bạn. Xem câu trả lời trong Tránh để giữ lệnh trong lịch sử
Luc M

5
Yuk! Ngay cả khi bạn xác định mật khẩu export mypass=secretvà sử dụng a_command --password=$mypass, bạn sẽ thấy secrettrong psbảng.
Luc M

Câu trả lời:


51

Các dòng lệnh không chỉ có sẵn trong lịch sử. Chúng cũng có sẵn, ví dụ, trong đầu ra của ps -ocmdhoặc thông qua /prochệ thống tập tin. ( /proc/<pid>/cmdline) đó là nơi psđọc chúng.

Ngoài ra, các thư mục nhà của người dùng thường có thể đọc được trên toàn thế giới hoặc theo nhóm; bạn có thể làm cho tệp lịch sử chỉ có thể đọc được, nhưng điều đó có thể không tồn tại khi xóa và giải trí.


17

Mật khẩu trên dòng lệnh chỉ là một ý tưởng tồi trong suốt chặng đường. Ngoài các phương pháp được thảo luận trong các câu trả lời khác:

  • / Proc
  • danh sách quy trình ( ps)
  • tập tin lịch sử của người dùng

Lệnh người dùng cũng có thể hiển thị ở những vị trí này:

  • nhật ký kiểm toán
  • / var / log / *

Ngoài ra, các lệnh của người dùng cũng có thể hiển thị khi người dùng đăng nhập giữa các hệ thống, do đó, nói chung, đó là một thực tế xấu và nên tránh mọi lúc.


3
+1 cho tham chiếu / var / log - lưu ý rằng thường các nhật ký hệ thống quan trọng có thể được gửi ở nơi khác và không nhất thiết phải ở trên cùng một hệ thống. Do đó, mật khẩu của bạn có thể vô tình cũng được truyền qua mạng ở dạng Cleartext.
Đánh dấu Glossop

11

Vấn đề là khả năng hiển thị của các tham số (đối với người dùng khác trong hầu hết các trường hợp, ngay cả đối với root) trong khi lệnh đang chạy. Xem đầu ra của

ps -eo pid,user,args
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.