Show Table of Contents
3.3. 制限のあるユーザーおよび制限のないユーザー
各 Linux ユーザーは、SELinux ポリシーを使って SELinux ユーザーにマッピングされます。これにより、SELinux ユーザーに課された制限が Linux ユーザーに継承されます。root で
semanage login -l を実行すると、この Linux ユーザーマッピングが表示されます。
~]#semanage login -lLogin Name SELinux User MLS/MCS Range Service __default__ unconfined_u s0-s0:c0.c1023 * root unconfined_u s0-s0:c0.c1023 * system_u system_u s0-s0:c0.c1023 *
Red Hat Enterprise Linux では、Linux ユーザーはデフォルトで SELinux
__default__ ログインにマッピングされ、これはさらに SELinux unconfined_u ユーザーにマッピングされます。以下の行でデフォルトのマッピングを定義します。
__default__ unconfined_u s0-s0:c0.c1023
以下の手順では、新規 Linux ユーザーをシステムに追加し、そのユーザーを SELinux
unconfined_u ユーザーにマッピングする方法を示しています。ここでは Red Hat Enterprise Linux のデフォルトにあるように、root ユーザーが制限なしで実行中であることを前提としています。
手順3.4 新規 Linux ユーザーを SELinux unconfined_u ユーザーにマッピングする
- root で以下のコマンドを実行し、ユーザー名
newuserという新規 Linux ユーザーを作成します。~]#useradd newuser - Linux
newuserユーザーにパスワードを割り当てるには、root で以下のコマンドを実行します。~]#passwd newuserChanging password for user newuser. New UNIX password: Enter a password Retype new UNIX password: Enter the same password again passwd: all authentication tokens updated successfully. - 現行セッションから一旦ログアウトし、Linux
newuserユーザーでログインし直します。ログインすると、pam_selinux PAM モジュールが自動的にこの Linux ユーザーを SELinux ユーザーにマッピングし (このケースではunconfined_u)、SELinux コンテキストを設定します。その後は、このコンテキストで Linux ユーザーのシェルが起動されます。以下のコマンドを実行して、Linux ユーザーのコンテキストを表示します。[newuser@localhost ~]$id -Zunconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023注記
システム上でnewuserユーザーが不要になれば、Linuxnewuserのセッションからログアウトし、自分のアカウントにログインして、root でuserdel -r newuserコマンドを実行します。これでnewuserがこのユーザーのホームディレクトリーとともに削除されます。
制限のあるユーザーおよび制限のない Linux ユーザーは、実行可能および書き込み可能なメモリーチェックに依存し、また MCS とMLS に制限されます。
unconfined_t ドメインから自身の制限のあるドメインへの移行が可能と SELinux ポリシーが定義しているアプリケーションを、制限のない Linux ユーザーが実行しても、この制限のない Linux ユーザーはまだその制限のあるドメインの制約に影響を受けます。ここでのセキュリティーの利点は、Linux ユーザーが制限なしで実行していてもアプリケーションには制限が残っているという点です。このため、アプリケーションの欠点が悪用されても、ポリシーで制限できます。
同様に、これらのチェックを制限のあるユーザーに適用することもできます。制限のある Linux ユーザーはそれぞれ、制限のあるユーザードメインで限定されます。SELinux ポリシーは、制限のあるユーザードメインから自身のターゲットの制限のあるドメインへの移行を定義することもできます。その場合は、制限のある Linux ユーザーはターゲットの制限のあるドメインの制約の影響を受けることになります。つまり、特別の権限は、そのロールにしたがって制限のあるユーザーに関連付けられるということです。下記の表では、Red Hat Enterprise Linux における Linux ユーザーの基本的な制限のあるドメインの例を示しています。
表3.1 SELinux ユーザーの権限
| ユーザー | ロール | ドメイン | X Window System | su または sudo | ホームディレクトリーおよび /tmp (デフォルト) で実行 | ネットワーキング |
|---|---|---|---|---|---|---|
| sysadm_u | sysadm_r | sysadm_t | はい | su および sudo | はい | はい |
| staff_u | staff_r | staff_t | はい | sudo のみ | はい | はい |
| user_u | user_r | user_t | はい | いいえ | はい | はい |
| guest_u | guest_r | guest_t | いいえ | いいえ | いいえ | いいえ |
| xguest_u | xguest_r | xguest_t | はい | いいえ | いいえ | Firefox のみ |
user_t、guest_t、xguest_tドメインの Linux ユーザーは、SELinux ポリシーが許可する場合に、決まったユーザー ID (setuid) アプリケーションしか実行できません (例、passwd)。これらのユーザーはsuやsudosetuid アプリケーションを実行できないので、これらのアプリケーションを使って root になることができません。sysadm_t、staff_t、user_t、xguest_tドメイン内の Linux ユーザーは、X Window System と端末を使用してログインできます。- デフォルトでは、
guest_tとxguest_tドメインの Linux ユーザーは、自分のホームディレクトリーや/tmpではアプリケーションを実行できません。つまり、書き込みアクセス権限を持つディレクトリーでユーザーのパーミッションを継承するアプリケーションを実行することはできません。これにより、欠陥のあるアプリケーションや悪意のあるアプリケーションがそのユーザーのファイルを修正できないようにしています。 - デフォルトでは、
staff_tとuser_tドメインの Linux ユーザーは、自分のホームディレクトリーや/tmpでアプリケーションを実行することが可能です。ユーザーがホームディレクトリーと/tmpでアプリケーションを実行するのを許可/阻止することに関する情報は、「アプリケーションを実行するユーザーのためのブール値」を参照してください。 xguest_tドメインの Linux ユーザーにある唯一のネットワークアクセスは、ウェブページに接続する Firefox です。
すでに説明した SELinux ユーザーの他に、これらのユーザーにマッピング可能な特別ロールがあります。これらのロールは、SELinux がユーザーに許可するものを決定します。
webadm_rは、Apache HTTP サーバーに関連する SELinux タイプの処理のみが可能です。詳細は、「タイプ」を参照してください。logadm_rは、syslogおよびauditlogプロセスに関連する SELinux タイプの処理のみが可能です。secadm_rは SELinux の処理のみが可能です。auditadm_rは、auditサブシステムに関連するプロセスの処理のみが可能です。
利用可能なロールを一覧表示するには、以下のコマンドを実行します。
~]$seinfo -r
seinfo コマンドは、デフォルトではインストールされない setools-console パッケージが提供することに注意してください。
3.3.1. sudo 移行および SELinux ロール
ケースによっては、制限のあるユーザーが root 権限を必要とする管理タスクを実行する必要があることもあります。これを実行するには、制限のあるユーザーが
sudo コマンドを使って 制限のある管理者の SELinux ロールを獲得する必要があります。sudo コマンドは、信頼できるユーザーに管理者アクセスを付与するために使用されます。ユーザーが sudo を管理者コマンドの前に置いた場合、このユーザーは ユーザー自身の パスワードを要求されます。ユーザーが認証され、コマンドが許可されると、管理者コマンドは root ユーザーであるかのように実行されます。
表3.1「SELinux ユーザーの権限」にあるように、
staff_u および sysadm_u の制限のある SELinux ユーザーのみがデフォルトで sudo の使用を許可されています。それらのユーザーが sudo を使ってコマンドを実行すると、ユーザーのロールは /etc/sudoers 設定ファイルか、ある場合は /etc/sudoers.d/ ディレクトリー内の各ファイルで指定されているルール基づいて変更することができます。
手順3.5 sudo 移行の設定
この手順では、
sudo を設定して、新規作成の SELinux_user_u の制限のあるユーザーを default_role_t から administrator_r の管理者ロールに移行する方法を説明します。既存の SELinux ユーザーに対して制限のある管理者ロールを設定するには、最初の 2 ステップを省略してください。また、以下のコマンドは root ユーザーで実行する必要があることに注意してください。以下の手順のプレースホルダー (default_role_t または administrator_r 等) についてより深く理解するには、ステップ 6 の例を参照してください。
- 新規 SELinux ユーザーを作成し、そのユーザーに対してデフォルトの SELinux ロールと補助的な制限のある管理者ロールを指定します。
~]#semanage user -a -r s0-s0:c0.c1023 -R "default_role_r administrator_r" SELinux_user_u - デフォルトの SElinux ポリシーコンテキストファイルをセットアップします。たとえば、
staff_uSELinux ユーザーと同じ SELinux ルールを用意するには、staff_uコンテキストファイルをコピーします。~]#cp /etc/selinux/targeted/contexts/users/staff_u /etc/selinux/targeted/contexts/users/SELinux_user_u - 新規作成の Linux ユーザーを既存の Linux ユーザーにマッピングします。
semanage login -a -s SELinux_user_u -rs0:c0.c1023 linux_user /etc/sudoers.d/ディレクトリー内に Linux ユーザーと同じ名前で新規設定ファイルを作成し、以下の文字列を追加します。~]#echo "linux_user ALL=(ALL) TYPE=administrator_t ROLE=administrator_r /bin/sh " > /etc/sudoers.d/linux_userrestoreconユーティリティーを使って linux_user ホームディレクトリーのラベルを付け替えます。~]#restorecon -FR -v /home/linux_user- 新規作成の Linux ユーザーとしてログインすると、このユーザーはデフォルトの SELinux ロールでラベル付けされます。
~]$id -ZSELinux_user_u:default_role_r:SELinux_user_t:s0:c0.c1023sudoを実行すると、そのユーザーの SELinux コンテキストは/etc/sudoers.d/linux_userで指定されている補助的な SELinux ロールに変更されます。sudoで-iオプションを使用すると、インタラクティブシェルが実行されます。~]$sudo -i~]#id -ZSELinux_user_u:administrator_r:administrator_t:s0-s0:c0.c1023最初のステップで指定された例のSELinux_user_uユーザーの場合、出力は以下のようになります。~]$id -Zconfined_u:staff_r:staff_t:s0:c0.c1023~]$sudo -i~]#id -Zconfined_u:webadm_r:webadm_t:s0:c0.c1023以下の例では、デフォルトで割り当てられるstaff_rロールと、sudoがconfined_uのロールをstaff_rからwebadm_rに変更するよう設定されている SELinux ユーザーconfined_uを新規に作成します。~]#semanage user -a -r s0-s0:c0.c1023 -R "staff_r webadm_r" confined_u~]#cp /etc/selinux/targeted/contexts/users/staff_u /etc/selinux/targeted/contexts/users/confined_u~]#semanage login -a -s confined_u -rs0:c0.c1023 linux_user~]#restorecon -FR -v /home/linux_user~]#echo "linux_user ALL=(ALL) TYPE=webadm_t ROLE=webadm_r /bin/sh " > /etc/sudoers.d/linux_user新規作成の Linux ユーザーとしてログインすると、このユーザーはデフォルトの SELinux ロールでラベル付けされます。~]$id -Zconfined_u:staff_r:staff_t:s0:c0.c1023~]$sudo -i~]#id -Zconfined_u:webadm_r:webadm_t:s0:c0.c1023

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.