11.3.2. サイレント拒否の考えられる原因
特定の状況では、SELinux がアクセスを拒否した場合に、AVC 拒否メッセージがログに記録されないことがあります。アプリケーションやシステムライブラリー関数は、多くの場合、タスクを実行するのに必要以上のアクセスをプローブします。無害なアプリケーションプローブを AVC 拒否で監査ログ記録につけることなく、最小の権限を維持するために、ポリシーは dontaudit ルールを使うことで、パーミッションを許可することなく、サイレントな AVC 拒否を行うことができます。このようなルールは、標準ポリシーでは一般的です。dontaudit の欠点は、SELinux がアクセスを拒否しても、拒否メッセージはログに記録されず、トラブルシューティングが難しくなることです。
dontaudit ルールを一時的に無効にし、すべての拒否ログを記録するには、root で次のコマンドを実行します。
~]# semodule -DB
-D
オプションは、dontaudit ルールを無効にします。-B
オプションはポリシーを再構築します。semodule -DB を実行したら、権限の問題が発生していたアプリケーションを実行してみて、アプリケーションに関連する SELinux の拒否がログに記録されているかどうかを確認します。拒否を許可するかどうかを決定する際には注意してください。拒否の中には、dontaudit ルールで無視および処理されるものもあります。疑わしい場合、またはガイドが必要な場合は、fedora-selinux-list などの SELinux のリストにある他の SELinux ユーザーおよび開発者に連絡してください。
ポリシーを再構築し、
dontaudit
ルールを有効にするには、root で次のコマンドを実行します。
~]# semodule -B
これにより、ポリシーが元の状態に復元されます。dontaudit ルールの一覧を表示するには、sesearch --dontaudit を実行します。
-s domain
オプションと grep コマンドを使用して、検索を絞り込みます。以下に例を示します。
~]$
sesearch --dontaudit -s smbd_t | grep squid
dontaudit smbd_t squid_port_t : tcp_socket name_bind ;
dontaudit smbd_t squid_port_t : udp_socket name_bind ;
拒否の分析の詳細については、「Raw 監査メッセージ」 および 「sealert メッセージ」 を参照してください。