SELinux : ブール値を変更する2016/07/26 |
デフォルト設定の「targeted」ポリシーなどのあらかじめ提供されているポリシーでは、一般的によく利用されるアプリケーションが一般的に使用する資源に対して、SELinux
によるアクセス制御の設定を容易に切り替え可能なようにブール値が用意されています。
以下では「targeted」ポリシー適用下の環境で例示しています。
|
|
[1] | ブール値の一覧は以下のようにして確認可能です。 |
# ブール値の一覧と現在の ON/OFF 状況を表示 [root@dlp ~]# getsebool -a abrt_anon_write --> off abrt_handle_event --> off allow_console_login --> on ..... ..... xguest_use_bluetooth --> on xserver_object_manager --> off zabbix_can_network --> off # ブール値の一覧を概要付きで表示 [root@dlp ~]# semanage boolean -l SELinux boolean State Default Description ftp_home_dir (off , off) Allow ftp to read and write files in the user home directories smartmon_3ware (off , off) Enable additional permissions needed to support devices on 3ware controllers. xdm_sysadm_login (off , off) Allow xdm logins as sysadm ..... ..... cron_can_relabel (off , off) Allow system cron jobs to relabel filesystem for restoring file contexts. git_system_use_cifs (off , off) Determine whether Git system daemon can access cifs file systems. ※ semanage コマンドが無い場合は以下のようにしてインストール [root@dlp ~]# yum -y install policycoreutils-python
|
[2] |
例として「samba_enable_home_dirs」というブール値について設定します。
「samba_enable_home_dirs」はデフォルトでは「off」となっており、SELinux によるアクセス制御を受ける設定となっています。
この状態でこちらの例のように「/home/share」に対してフルアクセスの共有設定をしたとしても、SELinux
によりアクセスは拒否されます。
これは「samba_enable_home_dirs」が「off」の状態では、Samba が /home 配下にアクセスするために必要な SELinux コンテキストが割り当てられないためです。
|
# デフォルトはオフの設定 [root@dlp ~]# semanage boolean -l | grep samba_enable_home_dirs samba_enable_home_dirs (off , off) Allow samba to share users home directories. # Samba でフルアクセスの共有設定実施後にテストファイル作成 # SELinux コンテキストは /home/share ディレクトリから継承している [root@dlp ~]# ls -Z /home/share -rw-rw-r--. cent cent unconfined_u:object_r:home_root_t:s0 test2.txt -rw-r--r--. root root unconfined_u:object_r:home_root_t:s0 test.txt |
以下のように、設定した共有フォルダへアクセスしても、DAC で読み取り権が付与されているファイルは見えず、上位ディレクトリ [/home/share] に 777 を設定していても書き込みアクセスは拒否されます。 |
[3] | この状態からブール値「samba_enable_home_dirs」を「on」に変更し、正常にアクセスできるようにするには、以下のように設定します。 |
# samba_enable_home_dirs をオンにする [root@dlp ~]# setsebool -P samba_enable_home_dirs on [root@dlp ~]# getsebool samba_enable_home_dirs samba_enable_home_dirs --> on # 変更された
# 現在の SELinux コンテキストは samba_enable_home_dirs オフの時に付与されたもの [root@dlp ~]# ls -Z /home/share -rw-rw-r--. cent cent unconfined_u:object_r:home_root_t:s0 test2.txt -rw-r--r--. root root unconfined_u:object_r:home_root_t:s0 test.txt # samba_enable_home_dirs で設定されるデフォルトの SELinux コンテキストにリストア [root@dlp ~]# restorecon -R /home/share
# SELinux コンテキスト確認 (user_home_t に変更された) [root@dlp ~]# ls -Z /home/share -rw-rw-r--. cent cent unconfined_u:object_r:user_home_t:s0 test2.txt -rw-r--r--. root root unconfined_u:object_r:user_home_t:s0 test.txt |
以上で、SELinux によるアクセス制限が許可され、以下のように通常の DAC アクセス権に沿ったアクセスが可能となります。
なお、ブール値「samba_enable_home_dirs」を「on」に変更した後に対象ディレクトリ配下で作成したファイル/ディレクトリには、自動で「user_home_t」が割り当てられるため、毎回
restorecon を実行する必要はありません。
|
Sponsored Link |
|