Làm cách nào để kiểm tra lịch sử lệnh của người dùng trong Unix?


13

Tôi biết lệnh 'history' cung cấp cho tôi danh sách các lệnh tôi đã nhập vào thiết bị đầu cuối Unix.

Làm cách nào để xem lịch sử lệnh cho tất cả người dùng hiện đang đăng nhập vào hệ thống?


Không liên quan đến lập trình. Tôi đề nghị bạn hỏi trên superuser.com .

Không có công cụ tiêu chuẩn để lấy thông tin, vì vậy tôi nghĩ đó là lập trình (ít nhất là theo nghĩa 'kịch bản') - liên quan.
IanH

Câu trả lời:


11

Bạn nhận được một danh sách người dùng hiện đang đăng nhập /var/run/utmp(xem man 5 utmp). Lịch sử được lưu trữ trong ~ / .history hoặc cho người dùng bash trong ~ / .bash_history. Các shell khác có thể sử dụng các tệp lịch sử khác, vì vậy thật không dễ dàng để có được tất cả thông tin.

Hơn nữa, nếu người dùng đăng nhập nhiều lần, tệp .bash_history không phải lúc nào cũng đáng tin cậy.

Để đọc utmptệp, có một "frontend" được gọi who, vì vậy bạn cũng có thể viết một shell-script để lặp lại người dùng hiện đang đăng nhập.


2
Lịch sử hiện tại được tổ chức trong bộ nhớ. Tệp lịch sử chỉ hiển thị những gì được viết bằng cách sử dụng history -ahoặc tương tự hoặc khi người dùng thoát khỏi trình bao.
Tạm dừng cho đến khi có thông báo mới.

2
Lưu ý rằng tên tệp được đưa ra trong câu trả lời này chỉ là mặc định. Mỗi người dùng có thể đặt vị trí của riêng mình (xem câu trả lời của Joy). Nếu người dùng đang sử dụng các shell khác nhau, họ có thể lưu trữ lịch sử của họ ở các vị trí không mặc định khác nhau (ví dụ ~ / mybashhist, ~ / histories / ksh hoặc somesuch). Ngoài ra, hãy lưu ý rằng việc xem trộm dữ liệu người dùng như thế có thể có ý nghĩa pháp lý.
DevSolar

3
echo $HISTFILE

Sau đó xem tập tin đó.


1
Điều này chỉ hoạt động nếu trước đó bạn có nguồn gốc môi trường của người dùng đó (như anh ta có thể đã đặt HISTFILEthành một thứ khác).
DevSolar
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.