SELinux : SELinuxコンテキスト2016/07/26 |
ファイルやプロセスへのアクセス制御は、SELinux コンテキストにより決定され実行されます。
SELinux コンテキストは以下のような書式で表現されます。
⇒ [SELinux User]:[Role]:[Type]:[Level]
|
|||||||||
[1] | ファイルやプロセスの SELinux コンテキストを確認するには Z オプションを付加します。 |
# ファイル/ディレクトリ [root@dlp ~]# ls -Z /root -rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg -rw-r--r--. root root system_u:object_r:admin_home_t:s0 install.log -rw-r--r--. root root system_u:object_r:admin_home_t:s0 install.log.syslog --------:--------:------------:------ User : Role : Type : Level # プロセス [root@dlp ~]# ps axZ LABEL PID TTY STAT TIME COMMAND system_u:system_r:init_t:s0 1 ? Ss 0:00 /sbin/init system_u:system_r:kernel_t:s0 2 ? S 0:00 [kthreadd] system_u:system_r:kernel_t:s0 3 ? S 0:00 [migration/0] ..... ..... system_u:system_r:getty_t:s0 1205 tty5 Ss+ 0:00 /sbin/mingetty /dev/t system_u:system_r:getty_t:s0 1207 tty6 Ss+ 0:00 /sbin/mingetty /dev/t unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 1212 ttyS0 Ss 0:00 -bash system_u:system_r:initrc_t:s0 1225 ? S 0:00 pickup -l -t fifo -u unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 1226 ttyS0 R+ 0:00 ps ax # 自身のID [root@dlp ~]# id -Z unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 |
[2] | SELinux コンテキスト中の SELinux ユーザーは SELinux ポリシーによって Linux ユーザーにマッピングされています。 マッピング一覧は semanage コマンドで確認することができます。 |
[root@dlp ~]# 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 ※ semanage コマンドが無い場合は以下のようにしてインストール [root@dlp ~]# yum -y install policycoreutils-python
|
上記の例 (CentOS 6 デフォルト) では、「root」は「unconfined_u」にマッピングされています。「system_u」にはシステムユーザーがマッピングされ、それら以外の
Linux ユーザーは「__default__」にマッピングされて最終的に SELinux ユーザーである「unconfined_u」にマッピングされます。
「unconfined_u」ユーザーは、デフォルトで「unconfined_r」ロールが割り当てられ、「unconfined_u」が起動したプロセスは「unconfined_t」ドメインとして実行されます。
ちなみに「unconfined_t」ドメインが割り当てられたプロセスは、「unconfined」の意味からも推測できるように、SELinux の制限を受けないプロセスとなります。
SELinux の制限を受けないプロセスからのファイル/ディレクトリへのアクセスは、一般的な DAC (Discretionary Access Control) のみで制御されます。
プロセスの一覧から「unconfined_t」で検索すると、以下のように bash や ps 等、root 自身が起動したプロセスのみに「unconfined_t」が割り当てられていることが分かります。
|
[root@dlp ~]# ps axZ | grep unconfined_t unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 1212 ttyS0 Ss 0:00 -bash unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 1231 ttyS0 R+ 0:00 ps axZ unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 1232 ttyS0 S+ 0:00 grep unconfined_t |
Sponsored Link |