Last Updated on 2021-08-29 by Clay
如果在 Linux 伺服器中我們擁有著 super user 的權限,那麼我們其實是可以檢查其他使用者(包括自己)曾經下達過的指令的。
其實我自己偶爾會用到這個功能,因為總是亂放權限給對 Linux 操作還比較不是那麼熟悉的後輩去練習,所以偶爾會突然發現自己程式的環境亂掉了,只好開始查戰犯 XDDD
雖然其實也沒那麼嚴重,不過嚴謹點的伺服器管理果然權限不能亂給呢。
查看自己過去所下達的指令
這是一個相當經典的指令,可以查看自己過去所下達的指令:
history
不過缺點就是只能查看自己的歷史命令。
如果想要順便查看下達指令的時間,也可以使用:
export HISTTIMEFORMAT='%F %T '
這樣一來,如果 history
的輸入就會帶有時間顯示了。如果想要一直維持這個輸出格式(畢竟重開就沒了),可以將其寫在 ~/.bashrc 的設定裡。然後再使用:
source ~/.bashrc
讓設定馬上生效。
檢查使用者的 .bash_history 檔案
上網查了查資料,似乎隨著環境的不同,這份會紀錄使用者所下達指令的檔案有各式各樣的名稱,有 .history、.sh_history …… 之類的等等,不過總是會存在著這樣的一份文件。
在我的伺服器中,就叫做 .bash_history,比方說我想要查看自己(clay)所下達的指令,那麼我可以直接使用:
cat /home/clay/.bash_history
來查看我過去所下達的指令。順帶一提,如果要一直印出文件尾端,查看是否有追加指令,可以搭配 watch
指令:
watch -n 0.5 tail /home/clay/.bash_history
不過同時也會發現,指令並不是一下達就會馬上紀錄的,是經過一陣子才會儲存進文件中。而且如果使用者是發生意外登出(突然斷線),那麼這份文件是會少掉使用者最後輸入的幾個指令的。
References
- https://superuser.com/questions/309434/how-to-view-command-history-of-another-user-in-linux/309435
- https://stackoverflow.com/questions/15698590/how-to-capture-all-the-commands-typed-in-unix-linux-by-any-user
- https://www.digitalocean.com/community/tutorials/how-to-monitor-your-ubuntu-16-04-system-with-sysdig