Nuestra empresa tiene un servidor web con CentOS 7 y nuestros clientes administran sus sitios web a través de FTP (vsftpd). SELinux está en modo de imposición.
El problema es que los datos creados / uploadad a través de VSFTPD no heredan el contexto SELinux apropiado. Dejame explicar.
Por ejemplo, para los sitios de WordPress, el servidor ya tiene un par de reglas que se pueden ver usando semanage fcontext -l |grep '/var/www'
, que son:
/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
Entonces, cuando copio un sitio de WordPress, digamos desde otro servidor en un directorio /var/www/html/
de SSH, las carpetas wp-content/
y wp-content/uploads/
el httpd_sys_rw_content_t
contexto de seguridad adecuado . SIN EMBARGO, cuando esas carpetas se crean a través de FTP, el contexto que obtienen es httpd_sys_content_t
(sin rw ). Esto significa que los sitios que nuestros clientes cargan en el servidor no pueden escribir en esos directorios incluso si otorgan permisos de escritura al usuario / grupo apache, por lo que el administrador de WordPress no funciona. Entonces, cuando suben un sitio, tienen que solicitarnos ayuda para solucionarlo, lo cual es una pérdida de tiempo para todos los involucrados.
Digamos que el cliente cargó su sitio en httpdocs
, si a través de SSH hago mv httpdocs/ httpdocs.2/ && cp -pr httpdocs.2/ httpdocs/ && rm httpdocs.2/ -fr
el problema está resuelto, por lo que no hay nada de malo en los datos.
También puedo hacer restorecon -Rv httpdocs/
para solucionar el problema.
Entonces, la pregunta es: ¿cómo puedo hacer que los directorios creados / cargados a través de VSFTPD hereden los contextos SELinux adecuados tal como se heredan cuando los directorios se crean / cargan a través de SSH?