Linuxでsudoコマンドの使用状況を確認する方法

sudoコマンドは、ユーザーにスーパーユーザーまたはroot権限を付与します。きっと「大きな力には大きな責任が伴う」という話をしたでしょう。彼らがそれを聞いたかどうかを確認する方法を説明します。

sudoコマンド

sudoコマンドは「substitute user do」の略です。権限のあるユーザーが、別のユーザーとしてコマンドを実行できるようにします。コマンドラインパラメータを受け取ることができ、その1つはコマンドを実行したいユーザーの名前です。sudoが最も一般的に使用される方法は、コマンドラインオプションを省略してデフォルトのアクションを使用することです。これにより、コマンドがrootユーザーとして効果的に実行されます。

この方法でsudoを使用するには、特別な権限が必要です。sudoを使用できるのは特権ユーザーだけです。最新のLinuxディストリビューションをインストールすると、sudoで使用できるrootパスワードを設定するように求められます。インストール中に作成した通常ユーザーにその権限が付与されます。これは、rootユーザーの機能へのアクセスを処理する推奨される方法です。以前は、rootユーザーを作成し、rootユーザーとしてログインしてシステムを管理する方法が一般的でした。

これは危険な状況でした。root権限が不要になったときに、通常のユーザーとしてログアウトしてログインし直すのを忘れるか、面倒がって怠けるのは簡単でした。rootとしてターミナルウィンドウで行った間違いは、たとえどれほど重大なものであっても実行されます。通常のユーザーが実行しようとした場合にシェルによってブロックされるようなことも、rootが要求すれば疑問なく実行されます。通常のアカウントの代わりにrootアカウントを使用することも、セキュリティリスクになります。

sudoを使用すると、集中力が向上します。同じ危険な状況に陥りますが、意識的にそうすることを選択し、注意を払うことを期待しています。必要なときにのみスーパーユーザーのステータスを呼び出します。

他のユーザーにrootアクセス権を付与する場合は、彼らがあなたと同じように注意を払っていることを知りたいと思うでしょう。彼らが無謀に、または推測的にコマンドを実行するのを望まないでしょう。Linuxインストールの健全性と健全性は、特権ユーザーが敬意と責任を持って行動することに依存します。

彼らのrootの使用状況を監視する方法はいくつかあります。

auth.logファイル

一部のディストリビューションでは、認証ログが「auth.log」というファイルで保持されます。systemdの出現と急速な普及により、「auth.log」ファイルの必要性がなくなりました。systemd-journalデーモンはシステムログを当時の新しいバイナリ形式に統合し、journalctlはログを調べたり質問したりする方法を提供します。

Linuxコンピューターに「auth.log」ファイルがある場合、おそらく「/var/log/」ディレクトリにあるでしょう。ただし、一部のディストリビューションでは、ファイル名とパスが「/var/log/audit/audit.log」です。

このファイルをlessで次のように開くことができます。ディストリビューションに合わせてパスとファイル名を調整し、Linuxが認証ファイルを作成しない場合に備えてください。

このコマンドはUbuntu 22.04で動作しました。

less /var/log/auth.log

ログファイルが開き、ファイル全体をスクロールしたり、lessに組み込まれた検索機能を使用して「sudo」を検索したりできます。

lessの検索機能を使用しても、興味のあるsudoエントリを見つけるのに時間がかかる場合があります。

ユーザーmarysudoを何に使用したかを確認するとします。ログファイルをgrepで「sudo」を含む行で検索し、出力をgrepにパイプしてから「mary」を含む行を検索できます。

grepの前とログファイル名の前にsudoがあることに注意してください。

sudo grep sudo /var/log/auth.log | grep "mary"

これにより、「sudo」と「mary」を含む行が表示されます。

ユーザーmaryが15:25にsudo権限を与えられ、15:27にエディタでfstabファイルを開いていることがわかります。これは間違いなくさらに深く調べる必要があるタイプの活動であり、ユーザーとのチャットから始めます。

journalctlを使用する

systmdベースのLinuxディストリビューションで推奨される方法は、journalctlコマンドを使用してシステムログを確認することです。

プログラムの名前をjournalctlに渡すと、そのプログラムへの参照を含むエントリについてログファイルが検索されます。sudoは「/usr/bin/sudo」にあるバイナリであるため、それをjournactlに渡すことができます。-e(ページャーの終わり)オプションは、journalctlにデフォルトのファイルページャーを開くように指示します。通常、これはlessになります。表示は自動的に一番下までスクロールされ、最新のエントリが表示されます。

sudo journalctl -e /usr/bin/sudo

sudoを特徴とするログエントリがlessにリストされます。

「右矢印」キーを使用して右にスクロールし、各sudoの呼び出しで使用されたコマンドを確認します。(または、ターミナルウィンドウを伸ばして幅を広げてください。)

出力がlessで表示されるため、コマンド名、ユーザー名、タイムスタンプなどのテキストを検索できます。

GNOMEログユーティリティを使用する

グラフィカルデスクトップ環境には、通常、ログを確認する手段が含まれています。GNOMEログユーティリティを見てみましょう。ログユーティリティにアクセスするには、「Spacebar」の左にある「Super」キーを押します。

検索フィールドに「ログ」と入力します。「ログ」アイコンが表示されます。

アイコンをクリックして「ログ」アプリケーションを起動します。

サイドバーのカテゴリをクリックすると、ログメッセージがメッセージタイプ別にフィルタリングされます。より詳細な選択を行うには、サイドバーの「すべて」カテゴリをクリックし、ツールバーの虫眼鏡アイコンをクリックします。検索テキストを入力します。「sudo」を検索します。

イベントのリストは、sudoコマンドに関連するイベントのみを表示するようにフィルタリングされます。各行の最後に小さな灰色のブロックがあり、そのイベントセッションのエントリ数が含まれています。行をクリックして展開します。

最上部の行をクリックして、そのセッションの24エントリの詳細を確認します。

少しスクロールすると、journalctlコマンドを使用したときに表示されたのと同じイベントが表示されます。ユーザーmaryfstabファイルに対する説明のない編集セッションはすぐにわかります。私たちは「mary」を検索することもできましたが、それにはsudoの使用以外のエントリも含まれます。

rootアクセスを必要とする人は誰もいない

正当で常識的な要件がある場合、他のユーザーにsudo権限を与えることが理にかなう場合があります。同様に、特に彼らに権限を与えた直後に、これらの権限の使用(または乱用)を確認することが理にかなっています。