這裡介紹如何在 Linux 系統上以管理者權限即時監控一般使用者所執行的任何指令。
Linux 的 root
管理者可對系統進行任何的管理與操作,如果想要即時監控特定使用者在主機上所執行的指令,可以使用以下介紹的幾種方式。
Bash 歷史指令
目前大部分的 Linux 預設的 shell 都是 bash,而 bash 會將使用者執行過的歷史指令都儲存在 .bash_history
這個檔案中,所以只要查看這個檔案,就可以知道使用者執行了那一些指令:
sudo cat /home/gtwang/.bash_history
不過由於 bash 並不會即時將新的指令寫入 .bash_history
,所以這個只能查看使用者過去執行過的指令。
w
指令
w
指令可以列出 Linux 系統上目前有哪些使用者登入,並且顯示每個使用者正在執行的指令。
w
17:34:23 up 35 min, 2 users, load average: 0.49, 0.62, 0.77 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT gtwang tty7 :0 16:58 35:40 2:17 0.12s /sbin/upstart - gtwang tty2 17:33 5.00s 0.10s 0.05s -bash
Sysdig 指令
Sydig 是一個功能強大的系統監控工具,可透過 Linux 系統核心取得即時的資訊,它的使用者監控功能可以顯示每個使用者所執行的指令。
使用前要先安裝,Ubuntu Linux 可用 apt 安裝:
sudo apt-get install sysdig
使用 Sydig 即時監控使用者的任何動作:
sudo sysdig -c spy_users
Sysdig 的輸出包含使用者的 shell 行程 ID、執行的指令與執行時間,最重要的是這些訊息都是直接從 Linux 核心模組上取得的,所以非常即時,當使用者一執行新的指令時,我們馬上就可以從 Sysdig 的輸出報表中看到。
參考資料:Tecmint