Sudo

如何在“sudo su -”中記錄命令?

  • November 29, 2020

如果我:

[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_inputlog_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}

引用自:https://unix.stackexchange.com/questions/108577