2つのCentOSサーバー(filesrvとwebsrv)の間にNFSプロセスを設定して、Apacheプロセスで読み取りと書き込みができるフォルダーを作成しようとしています。 SELinux構成に絞り込んだ、この書き込み可能な部分に問題があります。NFSクライアントで_setenforce 0
_を使用すると、Apacheが共有に書き込むことができます。
NFSサーバーのエクスポートファイルの関連する行は次のとおりです。
/data/files/sitefiles websrv(rw,sync,no_root_squash)
NFSサーバー上の共有フォルダーのSELinuxコンテキストは次のとおりです。
_system_u:object_r:httpd_sys_rw_content_t:s0
_
NFSクライアントのfstabのエントリは次のとおりです。
_filesrv:/data/files/sitefiles /var/www/html/webroot/files nfs context="system_u:object_r:httpd_sys_rw_content_t:s0" 0 0
_
私が知る限り、これは_httpd_sys_rw_content_t
_コンテキストでNFS共有をマウントする必要がありますが、確認すると実際には次のようになります。
_system_u:object_r:httpd_sys_content_t:s0
_
より厳密なコンテキストを共有に適用する原因は何ですか?
簡単な解決策は、SELinuxブールhttpd_use_nfs
を使用して、WebサーバーがNFS共有に保存されているコンテンツを表示および書き込みできるようにすることです。
setsebool -P httpd_use_nfs=1
この問題は、同じサーバーからすべてのNFS共有をマウントしていたために発生していました。
複数のNFSマウントに関するRedHatのドキュメント のように、マウントのfstab行にnosharecacheを追加する必要がありました。次に、正しいSELinuxコンテキストがマウントごとに適用されます。
私のfstabの作業行は次のとおりです。
filesrv:/data/files/sitefiles /var/www/html/webroot/files nfs nosharecache,context="system_u:object_r:httpd_sys_rw_content_t:s0" 0 0