SELinux : ブール値を変更する2016/03/27 |
デフォルト設定の「targeted」ポリシーなどのあらかじめ提供されているポリシーでは、一般的によく利用されるアプリケーションが一般的に使用する資源に対して、SELinux
によるアクセス制御の設定を容易に切り替え可能なようにブール値が用意されています。
以下では「targeted」ポリシー適用下の環境で例示しています。
|
|
[1] | ブール値の一覧は以下のようにして確認可能です。 |
# ブール値の一覧と現在の ON/OFF 状況を表示 [root@dlp ~]# getsebool -a abrt_anon_write --> off abrt_handle_event --> off abrt_upload_watch_anon_write --> on ..... ..... zoneminder_anon_write --> off zoneminder_run_sudo --> off # ブール値の一覧を概要付きで表示 [root@dlp ~]# semanage boolean -l SELinux boolean State Default Description ftp_home_dir (off , off) Allow ftp to home dir smartmon_3ware (off , off) Allow smartmon to 3ware mpd_enable_homedirs (off , off) Allow mpd to enable homedirs ..... ..... cron_can_relabel (off , off) Allow cron to can relabel sftpd_anon_write (off , off) Allow sftpd to anon write ※ 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 enable home dirs # 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 |