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 accountingLoaded: loaded (/lib/systemd/system/acct.service; enabled; vendor preset: enabled)Active: active (exited) since Thu IST; 28s agoDocs: 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: 879usOct :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.29May 13 total 3.23May 14 total 7.66May 15 total 8.97May 16 total 0.52May 20 total 4.09May 24 total 1.32Jun 9 total 15.18Jun 10 total 2.97Jun 22 total 2.61Jul 19 total 1.95Today total 0.29
各ユーザーの合計接続時間を取得します。
pパラメータを使用すると、各ユーザがシステムに接続している合計時間数を表示できます。
$ ac -p
サンプル出力:
ostechnix 52.85root 0.51total 53.36
指定したユーザーの総接続時間が表示されます。
特定のユーザーの総ログイン時間を表示することもできます。
$ ac ostechnix
サンプル出力:
total 52.95
特定のユーザーの日付ごとの合計接続時間が表示されます。
特定のユーザーがいつログインしたかを日付別に見るには、次のように実行します:
$ ac -d ostechnix
サンプル出力:
May 11 total 4.29May 13 total 3.23May 14 total 7.66May 15 total 8.97May 16 total 0.01May 20 total 4.09May 24 total 1.32Jun 9 total 15.18Jun 10 total 2.97Jun 22 total 2.61Jul 19 total 1.95Today total 0.68
$ man ac
lastcommコマンドの使用例
lastcommユーティリティは、過去に実行されたコマンドをリストアップするために使用されます。 このユーティリティは、最近実行された順にコマンドをリストアップします。
コマンドは過去に実行されます。
$ lastcomm
出力例:
systemd-hostnam S root __ 0.06 secs Thu Octsystemd-localed S root __ 0.06 secs Thu Octbash F ostechni pts/1 0.00 secs Thu Octawk ostechni pts/1 0.00 secs Thu Octbash F ostechni pts/1 0.00 secs Thu Octuname ostechni pts/1 0.00 secs Thu Octbash F ostechni pts/1 0.00 secs Thu Octsed ostechni pts/1 0.00 secs Thu Octbash F ostechni pts/1 0.00 secs Thu Octbash F ostechni pts/1 0.00 secs Thu Octgrep ostechni pts/1 0.00 secs Thu Octbash F ostechni pts/1 0.00 secs Thu Octbash F ostechni pts/1 0.00 secs Thu Octgrep ostechni pts/1 0.00 secs Thu Octbash F ostechni pts/1 0.00 secs Thu Octbash F ostechni pts/1 0.00 secs Thu Oct
以下のコマンドを使用すると、特定のユーザーが以前に実行したコマンドを印刷できます。
上記のコマンドは全ユーザーのコマンドを表示します。特定のユーザが過去に実行したコマンドを表示するには、以下のコマンドを使用します:
$ lastcomm ostechnix
サンプル出力:
less ostechni pts/1 0.00 secs Thu Octlastcomm ostechni pts/1 0.00 secs Thu Octlastcomm ostechni pts/1 0.00 secs Thu Octlastcomm ostechni pts/1 0.00 secs Thu Octgdbus X ostechni __ 0.00 secs Thu Octlastcomm ostechni pts/1 0.00 secs Thu Octac ostechni pts/1 0.00 secs Thu Octupdate-notifier F ostechni __ 0.00 secs Thu Octapport-checkrep ostechni __ 0.06 secs Thu Octapport-checkrep ostechni __ 0.05 secs Thu Octsystemctl ostechni __ 0.00 secs Thu Octapt-check ostechni __ 0.81 secs Thu Octdpkg ostechni __ 0.00 secs Thu Octischroot ostechni __ 0.00 secs Thu Octdpkg ostechni __ 0.00 secs Thu Oct
特定のコマンドが実行された回数が表示されます。
また、特定のコマンドが何回実行されたかを確認することもできます。
$ lastcomm apt
サンプル出力:
apt S root pts/2 0.70 secs Thu Octapt F root pts/2 0.00 secs Thu Octapt F root pts/2 0.00 secs Thu Oct
上記の出力に示されているように、rootユーザーはaptコマンドを3回実行しました。
$ man lastcomm
sa "コマンドの例
sa ユーティリティは、以前に実行したコマンドに関する情報を要約します。
すべてのコマンドの要約を表示
サンプル出力:
.63re 0.23cp 0avio 32712kre 0.05cp 0avio 36877k ***other*re 0.05cp 0avio k gdbus3 0.05re 0.04cp 0avio 12015k apt-checkre 0.02cp 0avio 0k kworker/dying*2 51.87re 0.01cp 0avio k Docker Desktop5 0.03re 0.01cp 0avio 785k snap-confine8 59.48re 0.01cp 0avio 85838k gmain5 103.94re 0.01cp 0avio k dconf workerre 0.00cp 0avio 2937k systemd-udevd*7 0.01re 0.00cp 0avio3 1.51re 0.00cp 0avio 3672k systemd-timedat2 0.00re 0.00cp 0avio 10236k apport-checkrep2 0.01re 0.00cp 0avio k ThreadPoolForeg*2 0.00re 0.00cp 0avio 8550k package-data-do3 0.79re 0.00cp 0avio 2156k dbus-daemonre 0.00cp 0avio 39631k ffmpeg
プロセス数とCPU分を表示するには、「プロセスを表示」ボタンをクリックします。
各ユーザーのプロセス数とCPU分数を表示するには、-mフラグを付けてsaコマンドを実行します:
$ sa -m
出力例:
.63re 0.23cp 0avio 32651kroot re 0.09cp 0avio 3847kostechnix re 0.08cp 0avio 47788kgdm re 0.06cp 0avio 63715kcolord 2 52.01re 0.00cp 0avio 89720kgeoclue 1 1.01re 0.00cp 0avio 70608kjellyfin re 0.00cp 0avio 39631kman 1 0.00re 0.00cp 0avio 3124kkernoops 4 104.12re 0.00cp 0avio 3270ksshd 1 0.05re 0.00cp 0avio 3856kwhoopsie 1 0.00re 0.00cp 0avio 8552k
コマンド名とユーザーIDが表示されます。
アカウント・ファイル内の各コマンドについて、-uフラグを使用してユーザーIDとコマンド名を表示します。
$ sa -u
サンプル出力:
root 0.00 cpu 693k mem 0 io acctonroot 0.00 cpu 3668k mem 0 io systemd-tty-askroot 0.00 cpu 3260k mem 0 io systemctlroot 0.01 cpu 3764k mem 0 io deb-systemd-invroot 0.00 cpu 722k mem 0 io acct.postinstroot 0.00 cpu 704k mem 0 io rmroot 0.00 cpu 939k mem 0 io cproot 0.00 cpu 704k mem 0 io rmroot 0.00 cpu 951k mem 0 io findroot 0.00 cpu 911k mem 0 io gziproot 0.00 cpu 722k mem 0 io NYroot 0.00 cpu 748k mem 0 io install-inforoot 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/




