Linux管理者として、すべてのユーザー・アクティビティを追跡する必要があります。サーバに障害が発生した場合、ユーザ・アクティビティを分析して表示することで、問題の原因を見つけることができます。Linuxユーザを監視する方法はいくつかあります。このガイドでは、Linuxユーザーの活動を監視するユーティリティである GNU Bookkeeping Toolについて特に説明します。
簿記ツールとは何ですか?
アカウンティング・ツールは、接続、実行されたプログラム、Linux システム上のシステム・リソースの使用など、基本的なシステム使用情報を提供します。これらのアカウンティング・ツールは、psacct または acct パッケージを通じてインストールできます。
psacctとacctは実質的に同じです。RPMベースのシステムではpsacctとして存在し、DEBベースのシステムではacctとして提供されます。
psacct または acct ユーティリティが何をするのか不思議に思うかもしれません。通常、コマンドラインでのユーザーの履歴は、$HOME ディレクトリの .bash_history ファイルに保存されます。ユーザーによっては、この履歴を編集、変更、または削除しようとする場合があります。
しかし、 コマンドラインの履歴を完全に 消去しても、帳簿管理ツールはユーザーの活動に関する情報を取得することができます。これは、すべてのプロセス・ログ・ファイルはルート・ユーザーが所有し、通常のユーザーは編集できないためです。
Linuxにpsacctまたはacctをインストールする方法
psacct/acctは、いくつかの一般的なLinuxディストリビューションでパッケージ化されています。
Alpine Linuxにpsacctをインストールするには、以下のコマンドを実行します:
$ sudo apk add psacct
Arch Linux とその亜種に acct をインストールする場合は、以下のコマンドを実行してください:
$ sudo pacman -S acct
Fedora、RHELおよびその派生版にpsacctをインストールするには、以下のコマンドを実行します:
$ sudo dnf install psacct
RHEL 6 以前では、psacct のインストールには dnf の代わりに yum コマンドを使用する必要があります。
$ sudo yum install psacct
Debian、Ubuntu、Linux Mintでは、以下のコマンドでacctをインストールしてください:
$ sudo apt install acct
acctがopenSUSEにインストールされている場合は、実行してください:
$ sudo zypper install acct
psacct/acct サービスを開始します。
psacct 有効にしてオンにするには、次のコマンドを実行します:
$ sudo systemctl enable psacct
その後、 psacct サービスを開始します:
$ sudo systemctl start psacct
psacct ロードされ、有効になっているかどうかを確認する必要がある場合は、以下を実行してください:
$ sudo systemctl status psacct
DEBベースのシステムでは、インストール後にacctサービスが自動的に開始します。
acctサービスが開始したことを確認したい場合は、以下のコマンドを実行します:
$ sudo systemctl status acct
アカウント.service - Kernel process accounting
Loaded: loaded (/lib/systemd/system/acct.service; enabled; vendor preset: enabled)
Active: active (exited) since Thu IST; 28s ago
Docs: man:accton(8)
Process: 3241 ExecStart=/usr/sbin/accton /var/log/account/pacct (code=exited, status=0/SUCCESS)
Main PID: 3241 (code=exited, status=0/SUCCESS)
CPU: 879us
Oct :35 ubuntu2204 systemd[1]: Starting Kernel process accounting...
Oct :35 ubuntu2204 accton: Turning on process accounting, file set to '/var/log/account/pacct'.
Oct :35 ubuntu2204 systemd[1]: Finished Kernel process accounting.
psacctまたはacctを使ったLinuxでのユーザー活動の監視
psacct パッケージには、ユーザとプロセスの活動を監視するための以下のツールが含まれています:
- ac - ユーザーのログイン時間に関する統計を提供します。
- lastcomm- 以前に実行したコマンドに関する情報を表示します。
- プロセスのブックキーピングを有効または無効にaccton。
- accton出力ファイルを読みやすい形式に変換します。
- dump-utmpファイルを読みやすい形式で表示します。
- sa - 以前に実行されたコマンドに関する情報を集約します。
それでは、各ツールを使ってLinuxユーザーの行動を監視する方法を学びましょう。
acコマンドは次のように使用します。
acユーティリティは、接続時間のレポートを時間単位で提供することができます。
全ユーザーの合計接続時間が表示されます。
上記のコマンドは、全ユーザーの合計接続時間を表示します。
total 52.91
全ユーザーの合計接続時間が日付順に表示されます。
次のように -d パラメータを使用すると、すべてのユーザーの接続時間を日付順にソートして表示できます:
$ ac -d
サンプル出力:
May 11 total 4.29
May 13 total 3.23
May 14 total 7.66
May 15 total 8.97
May 16 total 0.52
May 20 total 4.09
May 24 total 1.32
Jun 9 total 15.18
Jun 10 total 2.97
Jun 22 total 2.61
Jul 19 total 1.95
Today total 0.29
各ユーザーの合計接続時間を取得します。
pパラメータを使用すると、各ユーザがシステムに接続している合計時間数を表示できます。
$ ac -p
サンプル出力:
ostechnix 52.85
root 0.51
total 53.36
指定したユーザーの総接続時間が表示されます。
特定のユーザーの総ログイン時間を表示することもできます。
$ ac ostechnix
サンプル出力:
total 52.95
特定のユーザーの日付ごとの合計接続時間が表示されます。
特定のユーザーがいつログインしたかを日付別に見るには、次のように実行します:
$ ac -d ostechnix
サンプル出力:
May 11 total 4.29
May 13 total 3.23
May 14 total 7.66
May 15 total 8.97
May 16 total 0.01
May 20 total 4.09
May 24 total 1.32
Jun 9 total 15.18
Jun 10 total 2.97
Jun 22 total 2.61
Jul 19 total 1.95
Today total 0.68
$ man ac
lastcommコマンドの使用例
lastcommユーティリティは、過去に実行されたコマンドをリストアップするために使用されます。 このユーティリティは、最近実行された順にコマンドをリストアップします。
コマンドは過去に実行されます。
$ lastcomm
出力例:
systemd-hostnam S root __ 0.06 secs Thu Oct
systemd-localed S root __ 0.06 secs Thu Oct
bash F ostechni pts/1 0.00 secs Thu Oct
awk ostechni pts/1 0.00 secs Thu Oct
bash F ostechni pts/1 0.00 secs Thu Oct
uname ostechni pts/1 0.00 secs Thu Oct
bash F ostechni pts/1 0.00 secs Thu Oct
sed ostechni pts/1 0.00 secs Thu Oct
bash F ostechni pts/1 0.00 secs Thu Oct
bash F ostechni pts/1 0.00 secs Thu Oct
grep ostechni pts/1 0.00 secs Thu Oct
bash F ostechni pts/1 0.00 secs Thu Oct
bash F ostechni pts/1 0.00 secs Thu Oct
grep ostechni pts/1 0.00 secs Thu Oct
bash F ostechni pts/1 0.00 secs Thu Oct
bash F ostechni pts/1 0.00 secs Thu Oct
以下のコマンドを使用すると、特定のユーザーが以前に実行したコマンドを印刷できます。
上記のコマンドは全ユーザーのコマンドを表示します。特定のユーザが過去に実行したコマンドを表示するには、以下のコマンドを使用します:
$ lastcomm ostechnix
サンプル出力:
less ostechni pts/1 0.00 secs Thu Oct
lastcomm ostechni pts/1 0.00 secs Thu Oct
lastcomm ostechni pts/1 0.00 secs Thu Oct
lastcomm ostechni pts/1 0.00 secs Thu Oct
gdbus X ostechni __ 0.00 secs Thu Oct
lastcomm ostechni pts/1 0.00 secs Thu Oct
ac ostechni pts/1 0.00 secs Thu Oct
update-notifier F ostechni __ 0.00 secs Thu Oct
apport-checkrep ostechni __ 0.06 secs Thu Oct
apport-checkrep ostechni __ 0.05 secs Thu Oct
systemctl ostechni __ 0.00 secs Thu Oct
apt-check ostechni __ 0.81 secs Thu Oct
dpkg ostechni __ 0.00 secs Thu Oct
ischroot ostechni __ 0.00 secs Thu Oct
dpkg ostechni __ 0.00 secs Thu Oct
特定のコマンドが実行された回数が表示されます。
また、特定のコマンドが何回実行されたかを確認することもできます。
$ lastcomm apt
サンプル出力:
apt S root pts/2 0.70 secs Thu Oct
apt F root pts/2 0.00 secs Thu Oct
apt F root pts/2 0.00 secs Thu Oct
上記の出力に示されているように、rootユーザーはaptコマンドを3回実行しました。
$ man lastcomm
sa "コマンドの例
sa ユーティリティは、以前に実行したコマンドに関する情報を要約します。
すべてのコマンドの要約を表示
サンプル出力:
.63re 0.23cp 0avio 32712k
re 0.05cp 0avio 36877k ***other*
re 0.05cp 0avio k gdbus
3 0.05re 0.04cp 0avio 12015k apt-check
re 0.02cp 0avio 0k kworker/dying*
2 51.87re 0.01cp 0avio k Docker Desktop
5 0.03re 0.01cp 0avio 785k snap-confine
8 59.48re 0.01cp 0avio 85838k gmain
5 103.94re 0.01cp 0avio k dconf worker
re 0.00cp 0avio 2937k systemd-udevd*
7 0.01re 0.00cp 0avio
3 1.51re 0.00cp 0avio 3672k systemd-timedat
2 0.00re 0.00cp 0avio 10236k apport-checkrep
2 0.01re 0.00cp 0avio k ThreadPoolForeg*
2 0.00re 0.00cp 0avio 8550k package-data-do
3 0.79re 0.00cp 0avio 2156k dbus-daemon
re 0.00cp 0avio 39631k ffmpeg
プロセス数とCPU分を表示するには、「プロセスを表示」ボタンをクリックします。
各ユーザーのプロセス数とCPU分数を表示するには、-mフラグを付けてsaコマンドを実行します:
$ sa -m
出力例:
.63re 0.23cp 0avio 32651k
root re 0.09cp 0avio 3847k
ostechnix re 0.08cp 0avio 47788k
gdm re 0.06cp 0avio 63715k
colord 2 52.01re 0.00cp 0avio 89720k
geoclue 1 1.01re 0.00cp 0avio 70608k
jellyfin re 0.00cp 0avio 39631k
man 1 0.00re 0.00cp 0avio 3124k
kernoops 4 104.12re 0.00cp 0avio 3270k
sshd 1 0.05re 0.00cp 0avio 3856k
whoopsie 1 0.00re 0.00cp 0avio 8552k
コマンド名とユーザーIDが表示されます。
アカウント・ファイル内の各コマンドについて、-uフラグを使用してユーザーIDとコマンド名を表示します。
$ sa -u
サンプル出力:
root 0.00 cpu 693k mem 0 io accton
root 0.00 cpu 3668k mem 0 io systemd-tty-ask
root 0.00 cpu 3260k mem 0 io systemctl
root 0.01 cpu 3764k mem 0 io deb-systemd-inv
root 0.00 cpu 722k mem 0 io acct.postinst
root 0.00 cpu 704k mem 0 io rm
root 0.00 cpu 939k mem 0 io cp
root 0.00 cpu 704k mem 0 io rm
root 0.00 cpu 951k mem 0 io find
root 0.00 cpu 911k mem 0 io gzip
root 0.00 cpu 722k mem 0 io NY
root 0.00 cpu 748k mem 0 io install-info
root 0.00 cpu 911k mem 0 io gzip
$ man sa
dump-acctおよびdump-utmpコマンドは、以下の目的で使用されます。
dump-acct ユーティリティは、accton フォーマットの出力ファイルを人間が読める形式で表示します。
$ dump-acct /var/account/pacct
utmp ファイルを人間が読める形式で表示dump-utmp 。
$ dump-utmp /var/run/utmp
$ man dump-acct
$ man dump-utmp
アクトン・オーダー
accton 記帳のオン・オフができます。
プロセス・ブックキーピングを有効にするには
$ accton on
閉じるには
$ accton off
$ man accton
概要
すべてのLinux管理者は、すべてのユーザの挙動を監視するために、GNU bookkeepingユーティリティを知っておくべきです。これらのユーティリティはトラブルシューティングの際に非常に役に立ちます。
経由: ---ux/




