第8章 トラブルシューティング
本章では、SELinux がアクセスを拒否した場合に何が起こるかと以下の点を説明します。問題の 3 つの主要原因。正しいラベリングについての情報の場所。SELinux 拒否の分析。
audit2allow
を使ったカスタムポリシーモジュールの作成。
8.1. アクセス拒否の場合
アクセスを許可する/許可しないといった SELinux の決定は、キャッシュされます。このキャッシュは、AVC (アクセスベクターキャッシュ) と呼ばれます。SELinux がアクセスを拒否すると、拒否メッセージはログに記録されます。これらの拒否は、「AVC拒否」とも呼ばれ、実行中のデーモンに応じて別の場所にログ記録されます。
デーモン | ログ記録の場所 |
---|---|
auditd オン | /var/log/audit/audit.log |
auditd オフ; rsyslogd オン | /var/log/messages |
setroubleshootd、rsyslogd、auditd すべてオン | /var/log/audit/audit.log . Easier-to-read denial messages also sent to /var/log/messages |
X Window System を実行中で setroubleshoot と setroubleshoot-server パッケージがインストールされ、
setroubleshootd
と auditd
デーモンが稼働している場合、SELinux によってアクセスが拒否されると警告が表示されます。
「表示」をクリックすると、SELinux がアクセスを拒否した理由の詳細な分析と、アクセスを許可するための解決法が示されます。X Window System を実行していないと、SELinux のアクセス拒否は分かりにくくなります。例えば、Web サイトをブラウジングしているユーザーが以下のようなエラーを受け取る場合があります。
Forbidden You don't have permission to access file name on this server
このような状況では、DAC ルール (標準の Linux パーミッション) がアクセスを許可していれば、
"SELinux is preventing"
エラーの場合は /var/log/messages
を、"denied"
エラーの場合は /var/log/audit/audit.log
をそれぞれチェックします。これは Linux root ユーザーで以下のコマンドで実行できます。
~]# grep "SELinux is preventing" /var/log/messages
~]# grep "denied" /var/log/audit/audit.log