這裡介紹如何在 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 監控使用者

Sysdig 的輸出包含使用者的 shell 行程 ID、執行的指令與執行時間,最重要的是這些訊息都是直接從 Linux 核心模組上取得的,所以非常即時,當使用者一執行新的指令時,我們馬上就可以從 Sysdig 的輸出報表中看到。

參考資料:Tecmint