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 ページ