La nostra azienda ha un server web con CentOS 7 e i nostri clienti gestiscono i loro siti Web tramite FTP (vsftpd). SELinux è in modalità di applicazione.
Il problema è che i dati creati / caricati tramite VSFTPD non ereditano il contesto SELinux appropriato. Lasciatemi spiegare.
Ad esempio, per i siti WordPress il server ha già pronto un paio di regole che possono essere viste usando semanage fcontext -l |grep '/var/www'
, che sono:
/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
Quindi, quando copio un sito WordPress diciamo da un altro server in una directory in /var/www/html/
SSH, le cartelle wp-content/
e wp-content/uploads/
hanno il giusto httpd_sys_rw_content_t
contesto di sicurezza. TUTTAVIA, quando quelle cartelle vengono create tramite FTP, il contesto che ottengono è httpd_sys_content_t
(no rw ). Ciò significa che i siti caricati dai nostri clienti sul server non possono scrivere in quelle directory anche se danno autorizzazioni di scrittura all'utente / gruppo apache, quindi l'amministratore di WordPress non funziona. Quindi, quando caricano un sito, devono richiederci supporto per risolvere il problema, il che è una perdita di tempo per tutti i soggetti coinvolti.
Diciamo che il cliente ha caricato il proprio sito in httpdocs
, se attraverso SSH faccio mv httpdocs/ httpdocs.2/ && cp -pr httpdocs.2/ httpdocs/ && rm httpdocs.2/ -fr
il problema è risolto, quindi non c'è niente di sbagliato nei dati.
Posso anche fare restorecon -Rv httpdocs/
per risolvere il problema.
Quindi, la domanda è: come posso fare in modo che le directory create / caricate tramite VSFTPD ereditino i contesti SELinux appropriati proprio come sono ereditate quando le directory vengono create / caricate tramite SSH?