具有 NFS 共享的 SELinux 上下文

具有 NFS 共享的 SELinux 上下文

我正在尝试在 2 个 CentOS 服务器 (filesrv 和 websrv) 之间为需要由 Apache 进程读取和写入的文件夹设置 NFS 共享。我在可写入方面遇到了麻烦,我已将其缩小到 SELinux 配置:如果我setenforce 0在 NFS 客户端上,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


据我所知,这应该使用上下文安装 NFS 共享httpd_sys_rw_content_t,但当我检查它时,它实际上是:

system_u:object_r:httpd_sys_content_t:s0


什么原因会导致它将更严格的上下文应用于共享?

答案1

简单的解决方案应该是使用 SELinux 布尔值httpd_use_nfs来允许您的 Web 服务器显示和写入存储在 NFS 共享上的内容:

setsebool -P httpd_use_nfs=1 

答案2

出现此问题的原因是我从同一台服务器挂载了多个 NFS 共享,但并非所有 NFS 共享都具有相同的上下文。

根据有关多个 NFS 挂载的 RedHat 文档,我需要补充无共享缓存到我的 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

相关内容