概要
semanageは、SELinuxポリシーを永続的に変更するために使用されます。`chcon`や`restorecon`が一時的または既存のポリシーを適用するのに対し、`semanage`は新しいポリシー規則を定義し、システム再起動後も維持されるようにします。
主な管理対象
semanageで管理できる主なSELinuxポリシー要素です。
- ファイルコンテキスト (File Contexts): 特定のパスのファイルおよびディレクトリに対するSELinuxタイプの指定
- ネットワークポート (Network Ports): 特定のポートに対するSELinuxタイプの指定
- SELinuxブーリアン (Booleans): SELinuxポリシーの特定の動作をオン/オフするスイッチ
- SELinuxユーザーマッピング (User Mappings): LinuxユーザーをSELinuxユーザーにマッピング
主なオプション
semanageは、さまざまなSELinuxオブジェクトタイプに対してポリシーを管理します。各オブジェクトタイプと共に使用される一般的なオプションについて説明します。
一般管理オプション
オブジェクトタイプ
生成されたコマンド:
コマンドを組み合わせてみてください。
説明:
`semanage` コマンドを実行します。
これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。
使用例
semanageコマンドを使用してSELinuxポリシーを管理するさまざまなシナリオを示します。
すべてのファイルコンテキスト規則を一覧表示
sudo semanage fcontext -l
現在システムに定義されているすべてのファイルコンテキストマッピング規則を確認します。
特定のポート規則を一覧表示
sudo semanage port -l | grep http
HTTPサービスで使用されるポート規則を一覧表示します。
カスタムファイルコンテキストを追加
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html/my_app(/.*)?"
/var/www/html/my_app ディレクトリとそのサブファイルにhttpd_sys_content_tタイプを指定する規則を追加します。(追加後restoreconが必要)
カスタムポートを追加
sudo semanage port -a -t http_port_t -p tcp 8080
TCP 8080ポートをhttp_port_tタイプとして追加し、Webサービスで使用できるようにします。
SELinuxブーリアンを有効化
sudo semanage boolean -m --on httpd_can_network_connect
httpd_can_network_connectブーリアンを有効にし、Apache Webサーバーがネットワーク接続を開始できるように許可します。
インストール
semanageは、ほとんどのSELinuxを使用するLinuxディストリビューションで「policycoreutils」または類似のパッケージの一部として提供されます。以下は、主要なディストリビューションでのインストール方法です。
RHEL/CentOS/Fedora
sudo dnf install policycoreutils-python-utils
DNFまたはYUMパッケージマネージャーを使用して「policycoreutils-python-utils」パッケージをインストールします。
Debian/Ubuntu
sudo apt install selinux-utils
APTパッケージマネージャーを使用して「selinux-utils」パッケージをインストールします。
ヒントと注意点
semanageを使用してSELinuxポリシーを管理する際の役立つヒントと注意すべき事項です。
変更の適用
ファイルコンテキスト規則を変更した後、必ず「restorecon」コマンドを使用して変更されたコンテキストをファイルシステムに適用する必要があります。
- `sudo restorecon -Rv /path/to/directory`
問題の診断とポリシー生成
SELinux関連の問題が発生した場合、`/var/log/audit/audit.log`ファイルを調べて拒否された操作を把握し、`audit2allow`ツールを使用して必要なポリシー規則を生成できます。
- `sudo tail -f /var/log/audit/audit.log` (リアルタイムログ確認)
- `sudo audit2allow -a -M mypolicy` (ポリシー違反ログに基づいて「mypolicy.te」および「mypolicy.pp」ファイルを生成)
- `sudo semodule -i mypolicy.pp` (生成されたポリシーモジュールをロード)
注意点
SELinuxポリシーを誤って変更すると、システムの特定のサービスやシステム全体へのアクセスがブロックされる可能性があります。変更前に現在のポリシーをバックアップするか、慎重にテストすることが重要です。