4.3. 制限のあるユーザーおよび制限のないユーザー
各 Linux ユーザーは、SELinux ポリシー経由で SELinux ユーザーにマッピングされます。これにより、SELinux ユーザーに課された制限が Linux ユーザーに継承されます。Linux root ユーザーで
semanage login -l を実行すると、この Linux ユーザーマッピングが表示されます。
Red Hat Enterprise Linux 6 では、Linux ユーザーはデフォルトで SELinux
__default__ ログインにマッピングされ、これはさらに SELinux unconfined_u ユーザーにマッピングされます。以下の行でデフォルトのマッピングを定義します。
__default__ unconfined_u s0-s0:c0.c1023
__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ユーザーにパスワードを割り当てます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 現行セッションから一旦ログアウトし、Linux
newuserユーザーでログインし直します。ログインすると、pam_selinux PAM モジュールが自動的にこの Linux ユーザーを SELinux ユーザーにマッピングし (このケースではunconfined_u)、SELinux コンテキストを設定します。その後は、このコンテキストで Linux ユーザーのシェルが起動されます。id -Zコマンドを実行し、Linux ユーザーのコンテキストを表示します。id -Z
[newuser@localhost ~]$ id -Z unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記
システム上で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やsudosetuid アプリケーションを実行できないので、これらのアプリケーションを使って 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 ページへの接続です。