CentOS 8
Sponsored Link

SELinux : ブール値を変更する2019/09/28

 
デフォルト設定の [targeted] ポリシーなどのあらかじめ提供されているポリシーでは、一般的によく利用されるアプリケーションが一般的に使用する資源に対して、SELinux によるアクセス制御の設定を容易に切り替え可能なようにブール値が用意されています。
以下では [targeted] ポリシー適用下の環境で例示しています。
[1] ブール値の一覧は以下のようにして確認可能です。
# ブール値の一覧と現在の ON/OFF 状況を表示

[root@dlp ~]#
getsebool -a

abrt_anon_write --> off
abrt_handle_event --> off
abrt_upload_watch_anon_write --> on
antivirus_can_scan_system --> off
antivirus_use_jit --> off
.....
.....
zabbix_run_sudo --> off
zarafa_setrlimit --> off
zebra_write_config --> off
zoneminder_anon_write --> off
zoneminder_run_sudo --> off

# ブール値の一覧を概要付きで表示

[root@dlp ~]#
semanage boolean -l

SELinux boolean                State  Default Description

abrt_anon_write                (off  ,  off)  Allow abrt to anon write
abrt_handle_event              (off  ,  off)  Allow abrt to handle event
abrt_upload_watch_anon_write   (on   ,   on)  Allow abrt to upload watch anon write
antivirus_can_scan_system      (off  ,  off)  Allow antivirus to can scan system
antivirus_use_jit              (off  ,  off)  Allow antivirus to use jit
.....
.....
zabbix_run_sudo                (off  ,  off)  Allow zabbix to run sudo
zarafa_setrlimit               (off  ,  off)  Allow zarafa to setrlimit
zebra_write_config             (off  ,  off)  Allow zebra to write config
zoneminder_anon_write          (off  ,  off)  Allow zoneminder to anon write
zoneminder_run_sudo            (off  ,  off)  Allow zoneminder to run sudo

* semanage コマンドが無い場合はインストール

[root@dlp ~]#
dnf -y install policycoreutils-python-utils
[2]
例として [samba_enable_home_dirs] というブール値について設定します。
[samba_enable_home_dirs] はデフォルトでは [off] となっており、SELinux によるアクセス制御を受ける設定となっています。
この状態で、例えば Samba の共有で [/home/share] に対して [777] のフルアクセス権を設定したとしても、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
  以下のように、設定した共有フォルダへアクセスしても、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  
# 変更された
# [samba_enable_home_dirs] で設定されるデフォルトの SELinux コンテキストにリストア

[root@dlp ~]#
restorecon -R /home/share
 
以上で、SELinux によるアクセス制限が許可され、以下のように通常の DAC アクセス権に沿ったアクセスが可能となります。
なお、ブール値 [samba_enable_home_dirs] を [on] に変更した後に対象ディレクトリ配下で作成したファイル/ディレクトリには、自動で 必要な SELinux コンテキストが割り当てられるため、毎回 [restorecon] を実行する必要はありません。
関連コンテンツ