Menu Close

Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.3. 制限のあるユーザーおよび制限のないユーザー

各 Linux ユーザーは、SELinux ポリシー経由で SELinux ユーザーにマッピングされます。これにより、SELinux ユーザーに課された制限が Linux ユーザーに継承されます。Linux root ユーザーで semanage login -l を実行すると、この Linux ユーザーマッピングが表示されます。
~]# semanage login -l

Login Name                SELinux User              MLS/MCS Range

__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 6 では、Linux ユーザーはデフォルトで SELinux __default__ ログインにマッピングされ、これはさらに SELinux unconfined_u ユーザーにマッピングされます。以下の行でデフォルトのマッピングを定義します。
__default__               unconfined_u              s0-s0:c0.c1023
以下の手順では、新規 Linux ユーザーをシステムに追加し、そのユーザーを SELinux unconfined_u ユーザーにマッピングする方法を示しています。ここでは Red Hat Enterprise Linux 6 のデフォルトにあるように、Linux root ユーザーが制限なしで実行中であることを前提としています。
  1. Linux root ユーザーで useradd newuser コマンドを実行し、ユーザー名 newuser という新規 Linux ユーザーを作成します。
  2. Linux root ユーザーで passwd newuser コマンドを実行し、Linux newuser ユーザーにパスワードを割り当てます。
    ~]# passwd newuser
    Changing 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.
    
  3. 現行セッションから一旦ログアウトし、Linux newuser ユーザーでログインし直します。ログインすると、pam_selinux PAM モジュールが自動的にこの Linux ユーザーを SELinux ユーザーにマッピングし (このケースでは unconfined_u)、SELinux コンテキストを設定します。その後は、このコンテキストで Linux ユーザーのシェルが起動されます。id -Z コマンドを実行し、Linux ユーザーのコンテキストを表示します。
    [newuser@localhost ~]$ id -Z 
    unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    

    注記

    システム上で newuser ユーザーが不要になれば、Linux newuser のセッションからログアウトし、自分のアカウントにログインして Linux root ユーザーで userdel -r newuser コマンドを実行します。これで newuser ユーザーは、このユーザーのホームディレクトリーとともに削除されます。
制限のあるユーザーおよび制限のない Linux ユーザーは、実行可能および書き込み可能なメモリーチェックに影響を受け、また MCS とMLS に制限されます。
SELinux ポリシーがunconfined_t ドメインから自身の制限のあるドメインへの移行が可能と定義しているアプリケーションを、制限のない Linux ユーザーが実行しても、この制限のない Linux ユーザーはまだその制限のあるドメインの制約に影響を受けます。ここでのセキュリティーの利点は、Linux ユーザーが制限なしで実行していてもアプリケーションには制限が残っているという点です。このため、アプリケーションの欠点が悪用されても、ポリシーで制限できます。
同様に、これらのチェックを制限のあるユーザーに適用することもできます。しかし、制限のあるユーザーはそれぞれ、unconfined_t ドメインに対して制限のあるユーザードメインで制限されます。SELinux ポリシーは、制限のあるユーザードメインから自身のターゲットの制限のあるドメインへの移行を定義することもできます。その場合は、制限のある Linux ユーザーはターゲットの制限のあるドメインの制約の影響を受けることになります。つまり、特別の権限は、そのロールにしたがって制限のあるユーザーに関連付けられるということです。下記の表では、Red Hat Enterprise Linux 6 における Linux ユーザーの基本的な制限のあるドメインの例を示しています。

表4.1 SELinux ユーザーの能力

ユーザー ドメイン X Window System su または sudo ホームディレクトリーおよび /tmp/ (デフォルト) で実行 ネットワーキング
sysadm_u sysadm_t はい su および sudo はい はい
staff_u staff_t はい sudo のみ はい はい
user_u user_t はい いいえ はい はい
guest_u guest_t いいえ いいえ いいえ はい
xguest_u xguest_t はい いいえ いいえ Firefox のみ
  • user_tguest_txguest_tgit_shell_t ドメインの Linux ユーザーは、SELinux ポリシーが許可する場合に 決まったユーザー ID (setuid) アプリケーションのみを実行できます (例、passwd)。これらのユーザーは susudo setuid アプリケーションを実行できないので、これらのアプリケーションを使って Linux root ユーザーになることができません。
  • sysadm_tstaff_tuser_txguest_t ドメインの Linux ユーザーは、X Window System と端末経由でログインできます。
  • デフォルトでは、guest_txguest_t ドメインの Linux ユーザーは自身のホームディレクトリーや /tmp/ 内のアプリケーションを実行できず、書き込みアクセス権のあるディレクトリーにありユーザーのパーミッションを継承しているアプリケーション実行が妨げられます。これにより、欠陥のあるアプリケーションや悪意のあるアプリケーションがユーザーのファイルを修正することを防いでいます。
  • デフォルトでは、staff_tuser_t ドメインの Linux ユーザーは自身のホームディレクトリーや /tmp/ 内のアプリケーションの実行が可能です。ユーザーによるホームディレクトリーと /tmp/ のアプリケーション実行の許可と阻止に関する情報は、「アプリケーションを実行するユーザーのためのブール値」 を参照してください。
  • xguest_t ドメインの Linux ユーザーが持ち得る唯一のネットワークアクセスは、Firefox による Web ページへの接続です。