
私は今本を読んでいます。UnixおよびLinuxシステムの管理 - Evi Nemeth。 70ページの「su:ユーザーIDの交換」の項目の下に、次の説明があります。「suはrootとして実行されたコマンドを記録しませんが、誰がrootになったのか、いつrootになったのかを示すログエントリを生成します。」 私も私と同じくらい混乱しています。スーゲンCentOS Linuxバージョン7.6.1810および実行中歴史コマンドを実行すると、rootとして実行したコマンドが表示されます。
答え1
history
現在のシェルで実行されているコマンドのみが表示されます。この歴史には多くの欠点があります。
- ユーザーがこれを行わないようにシェルを構成すると、どのファイルにも保存されないことがあります。
- 記録されていても、ユーザーに書き込み権限を持つファイル(通常、~/.history、~/.bash_history、~/.zsh_history、または同様のファイル)にあります。したがって、ユーザーが偽造することができます。
全体として、これは信頼できるセキュリティ監査証跡ではありません。
本で「ロギングコマンド」が意味するのは、コマンドをいくつかのログに記録することです。いいえ一般ユーザーがアクセス可能です。本は言うsu
する何かを記録するには、以下を試してください。
$ su
Password:
root@firefly:/home/minoru# echo hello
hello
root@firefly:/home/minoru# exit
それでは、記録された内容を見てみましょうauth.log
(パスはほとんどのディストリビューションで同じでなければなりません)。
$ sudo less /var/log/auth.log
Jun 12 22:40:35 firefly su: (to root) minoru on pts/8
Jun 12 22:40:35 firefly su: pam_unix(su:session): session opened for user root by (uid=1000)
Jun 12 22:40:41 firefly su: pam_unix(su:session): session closed for user root
私(みのる)がスーパーユーザー権限を持っているのが見られ、いつecho hello
私は処刑された痕跡なしでそうしました。
sudo
ここで、本の次のセクションで説明する他のツールと比較してみましょう。
$ sudo echo hello
hello
$ sudo less /var/log/auth.log
Jun 12 22:44:48 firefly sudo: minoru : TTY=pts/8 ; PWD=/home/minoru ; USER=root ; COMMAND=/bin/echo hello
Jun 12 22:44:48 firefly sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Jun 12 22:44:48 firefly sudo: pam_unix(sudo:session): session closed for user root
誰がいつ権限を得たのかを知ることができるだけでなく、私がどのディレクトリ(/var/log)にあったのか、私が実行したコマンド、私が使ったコンソールまで見ることができます。はるかに良いです!
答え2
見ている使用法はhistory
シェルではなくシェルによって記録されますsu
。su
ルートとして実行されるコマンド自体は記録されません。作成者は、sudo
それを対応するパラメータロギング(フルセッションをロギングするように設定することもできます)と照合できます。
答え3
ロギングは通常、標準の場所にイベント情報を保存することを意味します/var/log
。活動が痕跡を残す他の多くの方法がありますが、ここでは明らかにこれが意味するものではありません。詳しくは、同じ書籍のログイン章(5版572ページ)をご覧ください。