Centos
“su 不記錄以 root 身份執行的命令”
我目前正在閱讀書籍Unix 和 Linux 系統管理 - Evi Nemeth。在第 70 頁上的主題“su:替代使用者身份”下,有一條語句說**“su 不會記錄以 root 身份執行的命令,但它會創建一個日誌條目,說明誰成為 root 以及何時成為 root。”** 當我在 CentOS Linux 版本 7.6.1810 上執行su root並執行歷史命令時,我感到 很困惑,我能夠看到我以 root 身份執行的命令。
history
僅顯示在目前 shell 中已執行的命令。這段歷史有許多缺點:
- 如果使用者將 shell 配置為不這樣做,它可能不會儲存到任何文件中;
- 即使它被記錄下來,它也位於使用者可寫訪問的文件中(通常是 ~/.history、~/.bash_history、~/.zsh_history 或類似的東西)。因此,它可以由使用者偽造。
總而言之,這不是一條可以依賴的安全審計線索。
書籍中“記錄命令”的意思是將它們寫入普通使用者無法訪問的日誌中。這本書說
su
確實記錄了一些東西,所以讓我們試試吧:$ su Password: root@firefly:/home/minoru# echo hello hello root@firefly:/home/minoru# exit
現在讓我們看看記錄了什麼
auth.log
(大多數發行版的路徑應該相同):$ sudo less /var/log/auth.log Jun 12 22:40:35 firefly su: (to root) minoru on pts/8 Jun 12 22:40:35 firefly su: pam_unix(su:session): session opened for user root by (uid=1000) Jun 12 22:40:41 firefly su: pam_unix(su:session): session closed for user root
我們可以看到我(minoru)獲得了超級使用者權限,並且我們可以看到我何時這樣做,但沒有
echo hello
我執行過的痕跡。現在讓我們將它
sudo
與本書下一節中描述的另一個工具進行比較:$ sudo echo hello hello $ sudo less /var/log/auth.log Jun 12 22:44:48 firefly sudo: minoru : TTY=pts/8 ; PWD=/home/minoru ; USER=root ; COMMAND=/bin/echo hello Jun 12 22:44:48 firefly sudo: pam_unix(sudo:session): session opened for user root by (uid=0) Jun 12 22:44:48 firefly sudo: pam_unix(sudo:session): session closed for user root
我們再次看到誰獲得了特權以及何時獲得了權限,但我們也看到了我當時在哪個目錄(/var/log),我執行了什麼命令,甚至我使用了什麼控制台。好多了!