如何在“sudo su -”中記錄命令?
如果我:
[user@notebook ~] sudo echo 123456uu 123456uu [user@notebook ~]
然後我可以在日誌中看到:
[root@notebook /var/log] grep 123456uu * auth.log:Jan 9 17:01:51 notebook sudo: user : TTY=pts/3 ; PWD=/home/user ; USER=root ; COMMAND=/bin/echo 123456uu [root@notebook /var/log]
但如果我:
[user@notebook ~] sudo su - [root@notebook ~] echo 1234567zz 1234567zz [root@notebook ~]
我在日誌中看不到它:
[root@notebook /var/log] grep 1234567zz * [root@notebook /var/log] echo $? 1 [root@notebook /var/log]
我的問題:如何打開“sudo su -”中命令的日誌記錄?
作業系統是 Ubuntu 12.04,但問題很籠統。
更新#1:
[user@notebook ~] sudo su - [sudo] password for user: [root@notebook ~] echo zizizi zizizi [root@notebook ~] cd /var/log [root@notebook /var/log] grep -iIR 'zizizi' * [root@notebook /var/log] grep 'COMMAND=/bin/su -' * auth.log:Jan 10 15:42:42 notebook sudo: user : TTY=pts/1 ; PWD=/home/user ; USER=root ; COMMAND=/bin/su - [root@notebook /var/log]
由於您使用的是 Ubuntu 12.04,因此請查看通過
log_input
和log_output
選項啟動的 I/O 日誌記錄功能。
log_input
如果設置,
sudo
將在偽 tty 中執行命令並記錄所有使用者輸入。如果由於 I/O 重定向或命令是管道的一部分,標準輸入未連接到使用者的 tty,則該輸入也會被擷取並儲存在單獨的日誌文件中。輸入使用包含在正常 sudo 日誌行中的唯一會話 ID記錄到
iolog_dir
選項指定的目錄(預設情況下),前綴為. 該選項可用於控制會話 ID 的格式。/var/log/sudo-io``TSID=``iolog_file
請注意,使用者輸入可能包含敏感資訊,例如密碼(即使它們沒有回顯到螢幕上),這些資訊將儲存在未加密的日誌文件中。在大多數情況下,只需要通過 log_output 記錄命令輸出即可。
log_output
如果設置,
sudo
將在偽 tty 中執行命令並記錄發送到螢幕的所有輸出,類似於 script(1) 命令。如果由於 I/O 重定向或命令是管道的一部分,標準輸出或標準錯誤未連接到使用者的 tty,則該輸出也會被擷取並儲存在單獨的日誌文件中。輸出使用包含在正常 sudo 日誌行中的唯一會話 ID記錄到
iolog_dir
選項指定的目錄(預設情況下),前綴為. 該選項可用於控制會話 ID 的格式。/var/log/sudo-io``TSID=``iolog_file
可以使用 sudoreplay(8) 實用程序查看輸出日誌,該實用程序也可用於列出或搜尋可用日誌。
實現:至少 Sudo 版本:需要 1.7.4p4。
/etc/sudoers
修改:您需要做的就是將兩個標籤添加到所有必需的 sudoers 條目(其中指定了“su”,使用命令或別名)。LOG_INPUT 和 LOG_OUTPUT。例子:
%admins ALL=(ALL) NOPASSWD: LOG_INPUT: LOG_OUTPUT: ALL
將以下預設日誌目錄結構添加到
sudoers
:Defaults iolog_dir=/var/log/sudo-io/%{user}