Red Hat Training

A Red Hat training course is available for RHEL 8

第12章 sudo アクセスの管理

システム管理者は、root 以外のユーザーに、通常 root ユーザー用に予約されている管理コマンドを実行できるようにする sudo アクセスを付与できます。これにより、root 以外のユーザーは、root ユーザーアカウントにログインせずに、このようなコマンドを実行できます。

12.1. sudoers のユーザー認可

/etc/sudoers ファイルは、sudo コマンドを使用して、どのユーザーがどのコマンドを実行できるかを指定します。ルールは、個別のユーザーおよびユーザーグループに適用できます。エイリアスを使用して、ホスト、コマンド、ユーザーのグループに対するルールの定義を簡素化することもできます。デフォルトのエイリアスは、/etc/sudoers ファイルの最初の部分で定義されます。

ユーザーが sudo 権限を使用して /etc/sudoers ファイルで許可されていないコマンドを実行しようとすると、システムは username: user NOT in sudoers が含まれるメッセージをジャーナルログに記録します。

デフォルトの /etc/sudoers ファイルは、認可の情報と例を提供します。行頭から # コメント文字を削除して、特定のサンプルルールをアクティベートできます。ユーザー認可に関連するセクションには、以下の概要が示されています。

## Next comes the main part: which users can run what software on
## which machines  (the sudoers file can be shared between multiple
## systems).

次の形式を使用して、新しい sudoers 認可を作成し、既存の認可を変更できます。

username hostname=path/to/command

詳細は以下のようになります。

  • username は、ユーザーまたはグループの名前です (例: user1 または %group1)。
  • hostname は、ルールが適用されるホストの名前です。
  • path/to/command は、コマンドへの完全パスです。また、コマンドパスの後にオプションを追加することにより、特定のオプションおよび引数を指定したコマンドのみを実行するようにユーザーを制限することもできます。オプションを指定しないと、すべてのオプションが有効な状態でコマンドを使用できます。

この変数のいずれかを ALL に置き換え、ルールをすべてのユーザー、ホスト、またはコマンドに適用できます。

警告

ALL ALL=(ALL) ALL などの過度に寛容なルールを使用すると、どのユーザーも、ホスト、ユーザー、コマンドはどれでも使用できます。このような設定をすると、セキュリティーリスクにつながる可能性があります。

! 演算子を使用して引数を負の値で指定できます。たとえば、!root を使用して、root ユーザー以外の全ユーザーを指定できます。許可リストを使用して特定のユーザー、グループ、およびコマンドを許可する方法は、拒否リストを使用して特定のユーザー、グループ、およびコマンドを拒否するよりも安全です。許可リストを使用すると、権限のない新規ユーザーまたはグループもブロックできす。

警告

alias コマンドでコマンドの名前を変更すると、このような規則が上書きされるため、コマンドに否定的な規則を使用しないでください。

システムは、/etc/sudoers ファイルを最初から最後まで読み取ります。したがって、ファイルにユーザーの複数のエントリーが含まれている場合、エントリーは順番に適用されます。値が競合する場合は、最も具体的な一致ではない場合でも、システムは最後の一致を使用します。

sudoers に新しいルールを追加する方法として、ルールを /etc/sudoers ファイルに直接入力する代わりに、/etc/sudoers.d/ ディレクトリーに新しいファイルを作成することが推奨されます。これは、このディレクトリーの内容は、システム更新時に保持されるためです。さらに、/etc/sudoers ファイル以外のファイルでエラーを修正することが簡単になります。システムは、/etc/sudoers ファイル内で以下の行に到達する際に、/etc/sudoers.d ディレクトリー内のファイルを読み取ります。

#includedir /etc/sudoers.d

この行の頭にある番号記号 # は構文の一部であり、行がコメントであることを意味するものではありません。そのディレクトリー内のファイル名にはピリオド . を使用することができません。チルダ ~ で終了しないでください。

関連情報

  • sudo(8) および sudoers(5) の man ページ