Booleanを使ったSELinuxの制御

今回のコラムは、SELinuxでアクセス制御を行う方法としてBooleanの使用方法を解説していきます。【連載コラム:Linuxを学ぼう(29)】

最終更新日:2024年02月02日

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サーバーのログ設定を確認する

第24回:Webサーバーのユーザーディレクトリを利用する

ページトップへ