Từ nhật ký này tôi có thể nhận thông tin chi tiết về các lệnh sudo được thực thi bởi bất kỳ người dùng nào. Nó nên chứa thư mục làm việc, lệnh, người dùng. Sẽ rất hữu ích nếu bạn có thể cung cấp cho tôi một kịch bản shell để làm như vậy
Từ nhật ký này tôi có thể nhận thông tin chi tiết về các lệnh sudo được thực thi bởi bất kỳ người dùng nào. Nó nên chứa thư mục làm việc, lệnh, người dùng. Sẽ rất hữu ích nếu bạn có thể cung cấp cho tôi một kịch bản shell để làm như vậy
Câu trả lời:
Tùy thuộc vào bản phân phối của bạn; đơn giản:
$ sudo grep sudo /var/log/secure
hoặc là
$ sudo grep sudo /var/log/auth.log
cung cấp cho:
Nov 14 09:07:31 vm1 sudo: pam_unix(sudo:auth): authentication failure; logname=gareth uid=1000 euid=0 tty=/dev/pts/19 ruser=gareth rhost= user=gareth
Nov 14 09:07:37 vm1 sudo: gareth : TTY=pts/19 ; PWD=/home/gareth ; USER=root ; COMMAND=/bin/yum update
Nov 14 09:07:53 vm1 sudo: gareth : TTY=pts/19 ; PWD=/home/gareth ; USER=root ; COMMAND=/bin/grep sudo /var/log/secure
Người dùng chạy lệnh là sau sudo:
- gareth
trong trường hợp này.
PWD
là thư mục.
USER
là người dùng gareth
đang chạy như - root
trong ví dụ này.
COMMAND
là lệnh chạy.
Do đó, trong ví dụ trên, gareth
được sử dụng sudo
để chạy yum update
và sau đó chạy ví dụ này. Trước đó anh gõ mật khẩu không chính xác.
Trên các hệ thống mới hơn:
$ sudo journalctl _COMM=sudo
cho một đầu ra rất giống nhau.
Một "bộ lọc kết quả" cho giải pháp của Gareth. (đối với những người đến theo tiêu đề của bài viết, không mô tả)
Cung cấp cho bạn một danh sách sạch các lệnh chỉ, chạy như sudo, bởi tất cả người dùng.
$sudo journalctl _COMM=sudo | sed -e '/COMMAND/!d' -e 's/.*COMMAND=//' -e 's/.*bin\///'
Giải pháp thay thế nếu sed không có sẵn
$sudo journalctl _COMM=sudo | grep COMMAND
Kết quả C & P vào các trang tính của Google
Trong ô B1 C & P công thức này
=arrayformula(REGEXREPLACE(A1:A,".*AND=/usr/bin/(.*)","$1"))