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 ユーザーが制限なしで実行中であることを前提としています。
- Linux root ユーザーで
useradd newuser
コマンドを実行し、ユーザー名newuser
という新規 Linux ユーザーを作成します。 - Linux root ユーザーで
passwd newuser
コマンドを実行し、Linuxnewuser
ユーザーにパスワードを割り当てます。~]#
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. - 現行セッションから一旦ログアウトし、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
ユーザーが不要になれば、Linuxnewuser
のセッションからログアウトし、自分のアカウントにログインして 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 ユーザーの基本的な制限のあるドメインの例を示しています。
ユーザー | ドメイン | 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_t
、guest_t
、xguest_t
、git_shell_t
ドメインの Linux ユーザーは、SELinux ポリシーが許可する場合に 決まったユーザー ID (setuid) アプリケーションのみを実行できます (例、passwd
)。これらのユーザーはsu
やsudo
setuid アプリケーションを実行できないので、これらのアプリケーションを使って Linux 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 による Web ページへの接続です。