FTPテストを実行して全機能をテストするとき、「mkdir」などの一般的なコマンドでavc拒否エラーが発生するのはなぜですか?
AVC拒否メッセージは次のとおりです。
type=AVC msg=audit(1365021919.400:283): avc: denied { create } for pid=2210 comm="mkdir" name="64F77DCE-9C9F-11E2-90A8-39AEF085A14A" scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:user_home_t:s0 tclass=dir
Was caused by:
Missing type enforcement (TE) allow rule.
You can use audit2allow to generate a loadable module to allow this access.
FedoraのWebサイトによると、Missing Type Enforcementルールは通常、SELinuxポリシーのバグが原因で発生します。それで、これは本当にバグですか?
Webサーバーをユーザーのホームディレクトリに書き込みしようとしているようです。この動作を許可するSELinuxリファレンスポリシーはありません。ユーザーのホームディレクトリからコンテンツを提供する必要があるかどうかを慎重に検討する必要があります。
このアクセスが本当に必要な場合、次のことができます audit2allow
utility ロードしてアクセスを許可できるローカルポリシーモジュールを生成します。
私は混乱していますApache経由のFTPですか、それとも単なる古いFTPですか?
単純な古いFTPの場合は、新しいディレクトリを作成しようとしている場所のSELinuxコンテキストを確認してください。正しく設定されていない可能性があります。
Apache経由の場合:
次のようなコマンドを使用して、Apacheがホームディレクトリを使用できるようにすることができます。
setsebool -P httpd_enable_homedirs
chcon -R -t httpd_sys_content_t ~user/public_html
追加するポートに異なるセキュリティコンテキストが指定されると、エラーが発生します。 Tomcat基本HTTPポート8080を使用している場合、ポートはhttp_cache_port_tタイプです。 nginxビルド8081を使用していて、transproxy_port_tまたはその両方のコンテキストを使用している場合、ApacheWebサーバーは接続できないためエラーを生成します。セキュリティコンテキストを変更する必要があり、-aオプションの代わりに-mオプションを追加で使用しない場合。
~# semanage port -l |grep 8081
transproxy_port_t tcp 8081
その後
~# semanage port -l |grep http_port_t
http_port_t tcp 80, 443, 488, 8008, 8009, 8443
追加
# semanage port -m -p tcp -t http_port_t 8081