O SELinux impede que o Nginx leia o arquivo [duplicado]

2

Eu tenho o nginx em execução na minha máquina do CentOS 7. Todos os dias eu executo um cron job que gera novos parâmetros Diffie-Hellman. Eles são salvos em /etc/ssl/dh/dhparam.pem . Mas o SELinux está impedindo que o nginx leia este arquivo.

Esta é a linha no log de erros do nginx:

nginx[3189]: nginx: [emerg] BIO_new_file("/etc/ssl/dh/dhparam.pem") failed (SSL: error:0200100D:system library:fopen:Permission denied:fopen('/etc/ssl/dh/dhparam.pem','r') error:2006D002:BIO routines:BIO_new_file:system lib)

Este é o log de auditoria:

type=AVC msg=audit(1473285202.181:334): avc:  denied  { open } for  pid=1393 comm="nginx" path="/etc/ssl/dh/dhparam.pem" dev="dm-1" ino=101646309 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_tmp_t:s0 tclass=file
type=AVC msg=audit(1473285832.647:743): avc:  denied  { open } for  pid=2958 comm="nginx" path="/etc/ssl/dh/dhparam.pem" dev="dm-1" ino=101646309 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_tmp_t:s0 tclass=file
type=AVC msg=audit(1473287010.821:803): avc:  denied  { open } for  pid=3083 comm="nginx" path="/etc/ssl/dh/dhparam.pem" dev="dm-1" ino=101646316 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_tmp_t:s0 tclass=file
type=AVC msg=audit(1473287142.871:826): avc:  denied  { open } for  pid=3118 comm="nginx" path="/etc/ssl/dh/dhparam.pem" dev="dm-1" ino=101646309 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_tmp_t:s0 tclass=file
type=AVC msg=audit(1473287172.480:843): avc:  denied  { open } for  pid=3134 comm="nginx" path="/etc/ssl/dh/dhparam.pem" dev="dm-1" ino=101646309 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_tmp_t:s0 tclass=file
type=AVC msg=audit(1473287681.994:866): avc:  denied  { open } for  pid=3189 comm="nginx" path="/etc/ssl/dh/dhparam.pem" dev="dm-1" ino=101646309 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_tmp_t:s0 tclass=file

Eu não estou muito familiarizado com o SELinux (sei que deveria aprender isso): Como posso conceder acesso ao nginx sem desabilitar o SELinux (ou defini-lo como permissivo)?

    
por LuMa 08.09.2016 / 01:44

1 resposta

5

O SELinux está lhe negando acesso ao arquivo, já que você moveu em vez de copiado de algum lugar no sistema de arquivos para o local final. Assim, manteve seu contexto de segurança original, que não permitia que o Apache o acessasse.

Para resolver o problema, volte a etiquetar o arquivo com restorecon .

Para evitar o problema no futuro, copie os arquivos (e exclua o original, se necessário) ou use mv -Z .

    
por 08.09.2016 / 04:34