Booleanを使ったSELinuxの制御
今回のコラムは、SELinuxでアクセス制御を行う方法としてBooleanの使用方法を解説していきます。【連載コラム:Linuxを学ぼう(29)】
SELinuxでアクセス制御を行う方法として、Booleanを使用する方法があります。前回設定したWebサーバーのユーザーディレクトリ機能を例に、Booleanの使用方法を解説します。
Booleanとは
Booleanとは、一般的な意味では真偽値を取るデータ型というような意味合いになります。OnやOff、TrueやFalseなどの値を取るデータ型ということです。SELinuxでは、システムのアクセス制御をBooleanで有効にしたり無効にしたりする機能となります。
Booleanの一覧の取得
Linuxディストリビューションではあらかじめ様々なBooleanが設定されています。その一覧を取得するにはgetseboolコマンドを使用します。
$ sudo getsebool -a
abrt_anon_write --> off
abrt_handle_event --> off
abrt_upload_watch_anon_write --> on
(以下略)
出力結果にあるように、各Booleanがonかoffかも含めて表示されます。
Webサーバー関連のBooleanを取得する
Webサーバー関連のBooleanには、httpdという文字列が含まれているので、grepコマンドで絞り込んでみます。
$ sudo getsebool -a | grep httpd
httpd_anon_write --> off
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
(中略)
httpd_enable_homedirs --> off
(中略)
httpd_verify_dns --> off
非常に沢山のBooleanが表示されますが、ユーザーディレクトリ機能に関係するのはhttpd_enable_homedirsです。現在、offになっているのが分かります。
Booleanを設定する
Booleanの値を設定するにはsetseboolコマンドを使用します。たとえば、httpd_enable_homedirsをonに設定するには、以下のコマンドを実行します。
$ sudo setsebool httpd_enable_homedirs on
設定が変更されたことをgetseboolコマンドで確認します。
$ getsebool httpd_enable_homedirs
httpd_enable_homedirs --> on
onに変更になったことが確認できます。
動作の確認
前回、ユーザーディレクトリ機能を設定した時は403 Forbiddenでエラーになってしまいましたが、SELinuxをBooleanを使って設定したので、アクセスできるようになったことを確認します。
$ curl localhost/~admin/
SELinux test
SELinuxのアクセス制御が許可されて、正常に動作することが確認できました。
最近のLinuxディストリビューションでは、SELinuxがしっかりと有効になるケースが増えています。普段通り設定しても動作しない、という場合には、まずはログを見てSELinuxのアクセス制御に引っかかっていないかを確認し、必要に応じて設定を変更するようにしてください。
- 筆者紹介
宮原 徹 氏
Linux標準教科書、Linuxサーバー構築標準教科書などの監修者。LinuCレベル1/レベル2 Version10.0の改訂作業にも協力。また、幅広いOSSに関する情報提供の場として「オープンソースカンファレンス(OSC)」の企画運営も。
バックナンバー
第28回:SELinuxの動作を確認する
第27回:SELinuxについて
第26回:Webサーバーのログ設定の内容を確認する
第25回:Webサーバーのログ設定を確認する