SELinux : SELinux コンテキスト2021/03/02 |
ファイルやプロセスへのアクセス制御は、SELinux コンテキストにより決定され実行されます。
SELinux コンテキストは以下のような書式で表現されます。
⇒ [SELinux User]:[Role]:[Type]:[Level]
|
|||||||||
[1] | ファイルやプロセスの SELinux コンテキストを確認するには Z オプションを付加します。 |
# ファイル/ディレクトリ [root@dlp ~]# ls -lZ /root total 4 -rw-------. 1 root root system_u:object_r:admin_home_t:s0 1349 Feb 18 15:50 anaconda-ks.cfg ---------:--------:-------------:------ User : Role : Type : Level # プロセス [root@dlp ~]# ps axZ LABEL PID TTY STAT TIME COMMAND system_u:system_r:init_t:s0 1 ? Ss 0:01 /usr/lib/systemd/sy system_u:system_r:kernel_t:s0 2 ? S 0:00 [kthreadd] system_u:system_r:kernel_t:s0 3 ? I< 0:00 [rcu_gp] system_u:system_r:kernel_t:s0 4 ? I< 0:00 [rcu_par_gp] system_u:system_r:kernel_t:s0 5 ? I 0:00 [kworker/0:0-events ..... ..... system_u:system_r:local_login_t:s0-s0:c0.c1023 1152 ? Ss 0:00 login -- root system_u:system_r:getty_t:s0-s0:c0.c1023 1155 tty1 Ss+ 0:00 /sbin/agetty -o -p unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 1526 ? Ss 0:00 /usr/lib/ system_u:system_r:init_t:s0 1531 ? S 0:00 (sd-pam) unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 1537 ttyS0 Ss 0:00 -bash unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 1566 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 Service __default__ unconfined_u s0-s0:c0.c1023 * root unconfined_u s0-s0:c0.c1023 * * semanage コマンドが無い場合はインストール [root@dlp ~]# dnf -y install policycoreutils-python-utils
|
上記の例 (CentOS Stream 8 デフォルト) では、[root] は [unconfined_u] にマッピングされています。
[root] 以外の 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 1526 ? Ss 0:00 /usr/lib/systemd/systemd --user unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 1537 ttyS0 Ss 0:00 -bash unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 1644 ttyS0 R+ 0:00 ps axZ unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 1645 ttyS0 S+ 0:00 grep --color=auto unconfined_t |
Sponsored Link |