Centos

“su 不記錄以 root 身份執行的命令”

  • June 12, 2019

我目前正在閱讀書籍Unix 和 Linux 系統管理 - Evi Nemeth。在第 70 頁上的主題“su:替代使用者身份”下,有一條語句說**“su 不會記錄以 root 身份執行的命令,但它會創建一個日誌條目,說明誰成為 root 以及何時成為 root。”** 當我在 CentOS Linux 版本 7.6.1810 上執行su root並執行歷史命令時,我感到 很困惑,我能夠看到我以 root 身份執行的命令。

PS添加了本書的連結 - 舊版本。

history僅顯示在目前 shell 中已執行的命令。這段歷史有許多缺點:

  1. 如果使用者將 shell 配置為不這樣做,它可能不會儲存到任何文件中;
  2. 即使它被記錄​​下來,它也位於使用者可寫訪問的文件中(通常是 ~/.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),我執行了什麼命令,甚至我使用了什麼控制台。好多了!

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