我正在尝试在2个CentOS服务器(filesrv和websrv)之间build立一个NFS共享,用于需要由Apache进程读写的文件夹。 我遇到了可写的一面,我已经缩小到SELinuxconfiguration的麻烦了:如果我在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
有什么可能导致它将更严格的背景应用于股票?
简单的解决scheme应该是使用SELinux boolean httpd_use_nfs来让您的networking服务器显示和写入存储在NFS共享中的内容:
setsebool -P httpd_use_nfs=1
发生这个问题的原因是我从同一个服务器挂载了多个NFS共享,而不是所有的都有相同的上下文。
根据多个NFS挂载的RedHat文档 ,我需要将nosharecache添加到我的fstab行以获取挂载。 然后正确的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