Nossa empresa possui um servidor web com o CentOS 7 e nossos clientes gerenciam seus sites por FTP (vsftpd). O SELinux está no modo de imposição.
O problema é que os dados criados / enviados pelo VSFTPD não estão herdando o contexto apropriado do SELinux. Deixe-me explicar.
Por exemplo, para sites WordPress, o servidor já possui algumas regras que podem ser vistas usando semanage fcontext -l |grep '/var/www'
, que são:
/var/www/html(/.*)?/uploads(/.*)? all files system_u:object_r:httpd_sys_rw_content_t:s0
/var/www/html(/.*)?/wp-content(/.*)? all files system_u:object_r:httpd_sys_rw_content_t:s0
Portanto, quando copio um site WordPress, digamos de outro servidor para um diretório /var/www/html/
do SSH, as pastas wp-content/
e wp-content/uploads/
o httpd_sys_rw_content_t
contexto de segurança adequado . NO ENTANTO, quando essas pastas são criadas por FTP, o contexto que elas obtêm é httpd_sys_content_t
(sem rw ). Isso significa que os sites que nossos clientes carregam no servidor não podem gravar nesses diretórios, mesmo que concedam permissões de gravação ao usuário / grupo apache, para que o administrador do WordPress não funcione. Portanto, quando eles enviam um site, precisam solicitar nosso suporte para corrigir isso, o que é uma perda de tempo para todos os envolvidos.
Digamos que o cliente enviou o site para o site httpdocs
, se através do SSH eu mv httpdocs/ httpdocs.2/ && cp -pr httpdocs.2/ httpdocs/ && rm httpdocs.2/ -fr
resolver o problema, não haverá nada de errado com os dados.
Também posso fazer restorecon -Rv httpdocs/
para corrigir o problema.
Portanto, a pergunta é: como os diretórios criados / enviados por meio do VSFTPD herdam os contextos adequados do SELinux, assim como eles são herdados quando os diretórios são criados / enviados por meio do SSH?