Red Hat Training
A Red Hat training course is available for RHEL 8
3.8. sudo および sysadm_r ロールを使用した管理者の制約
管理者権限を持つ特定のユーザーを SELinux ユーザー staff_u
にマッピングし、ユーザーが SELinux 管理者ロール sysadm_r
を取得できるように sudo
を設定できます。このロールにより、SELinux 拒否なしで管理タスクを実行できます。ユーザーがログインすると、セッションは、SELinux コンテキスト staff_u:staff_r:staff_t
で実行されますが、sudo
を使用してコマンドを入力すると、セッションは staff_u:sysadm_r:sysadm_t
コンテキストに変わります。
デフォルトでは、管理者権限を持つユーザーを含め、Red Hat Enterprise Linux のすべての Linux ユーザーは、制限のない SELinux ユーザー unconfined_u
にマッピングされます。SELinux の制限のあるユーザーにユーザーを割り当てることで、システムのセキュリティーを強化できます。これは、V-71971 Security Technical Implementation Guide に準拠するのに役立ちます。
前提条件
-
root
ユーザーは制限なしで実行します。これは、Red Hat Enterprise Linux のデフォルトです。
手順
新規ユーザーを作成し、そのユーザーを
wheel
ユーザーグループに追加し、そのユーザーを SELinux ユーザーstaff_u
にマッピングします。# adduser -G wheel -Z staff_u example.user
必要に応じて、既存のユーザーを SELinux ユーザー
staff_u
にマッピングし、そのユーザーをwheel
ユーザーグループに追加します。# usermod -G wheel -Z staff_u example.user
example.user が SELinux 管理者ロールを取得できるようにするには、
/etc/sudoers.d/
ディレクトリーに新規ファイルを作成します。以下に例を示します。# visudo -f /etc/sudoers.d/example.user
以下の行を新規ファイルに追加します。
example.user ALL=(ALL) TYPE=sysadm_t ROLE=sysadm_r ALL
検証
example.user
が SELinux ユーザーstaff_u
にマッピングされていることを確認します。# semanage login -l | grep example.user example.user staff_u s0-s0:c0.c1023 *
SSH などを使用して example.user としてログインし、
root
ユーザーに切り替えます。[example.user@localhost ~]$ sudo -i [sudo] password for example.user:
root
セキュリティーコンテキストを表示します。# id -Z staff_u:sysadm_r:sysadm_t:s0-s0:c0.c1023
sshd
サービスを再起動するなど、管理タスクを実行します。# systemctl restart sshd
出力がない場合は、コマンドが正常に完了します。
コマンドが正常に完了しない場合は、以下のメッセージが表示されます。
Failed to restart sshd.service: Access denied See system logs and 'systemctl status sshd.service' for details.