A solução simples deve ser usar o SELinux booleano httpd_use_nfs
para permitir que seu servidor da Web exiba e grave conteúdo armazenado em um compartilhamento NFS:
setsebool -P httpd_use_nfs=1
Estou tentando configurar um compartilhamento NFS entre dois servidores CentOS (filesrv & websrv) para uma pasta que precisa ser legível & gravável pelo processo Apache. Estou tendo problemas com o lado gravável disso, que reduzi à configuração do SELinux: o Apache pode gravar no compartilhamento se eu setenforce 0
no cliente NFS.
A linha relevante no arquivo de exportação para o servidor NFS é:
/data/files/sitefiles websrv(rw,sync,no_root_squash)
O contexto do SELinux para a pasta compartilhada no servidor NFS é:
system_u:object_r:httpd_sys_rw_content_t:s0
A entrada no meu fstab no cliente NFS é:
filesrv:/data/files/sitefiles /var/www/html/webroot/files nfs context="system_u:object_r:httpd_sys_rw_content_t:s0" 0 0
Tanto quanto eu posso dizer, isso deve montar o compartilhamento NFS com o contexto httpd_sys_rw_content_t
, mas quando eu verificá-lo, é realmente:
system_u:object_r:httpd_sys_content_t:s0
O que poderia estar causando a aplicação do contexto mais restrito ao compartilhamento?
A solução simples deve ser usar o SELinux booleano httpd_use_nfs
para permitir que seu servidor da Web exiba e grave conteúdo armazenado em um compartilhamento NFS:
setsebool -P httpd_use_nfs=1
Esse problema estava ocorrendo porque eu estava montando vários compartilhamentos NFS do mesmo servidor, e nem todos tinham o mesmo contexto.
De acordo com o Documentação do RedHat em várias montagens do NFS , eu precisava adicionar nosharecache à minha linha fstab para as montagens. O contexto correto do SELinux é então aplicado em uma base de montagem por montagem.
A linha de trabalho no meu fstab é a seguinte:
filesrv:/data/files/sitefiles /var/www/html/webroot/files nfs nosharecache,context="system_u:object_r:httpd_sys_rw_content_t:s0" 0 0
Tags nfs selinux apache-2.2 centos