Unser Unternehmen verfügt über einen Webserver mit CentOS 7 und unsere Kunden verwalten ihre Websites über FTP (vsftpd). SELinux befindet sich im Durchsetzungsmodus.
Das Problem ist, dass über VSFTPD erstellte / hochgeladene Daten nicht den entsprechenden SELinux-Kontext erben. Lassen Sie mich erklären.
Für WordPress-Sites verfügt der Server beispielsweise bereits über einige Regeln, die mithilfe folgender Regeln angezeigt werden können semanage fcontext -l |grep '/var/www'
:
/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
Wenn ich also eine WordPress-Site kopiere, sagen wir von einem anderen Server in ein Verzeichnis /var/www/html/
von SSH, die Ordner wp-content/
und wp-content/uploads/
den richtigen httpd_sys_rw_content_t
Sicherheitskontext. Wenn diese Ordner jedoch über FTP erstellt werden, erhalten sie den Kontext httpd_sys_content_t
(no rw ). Dies bedeutet, dass die Websites, die unsere Kunden auf den Server hochladen, nicht in diese Verzeichnisse schreiben können, selbst wenn sie dem Apache-Benutzer / der Apache-Gruppe Schreibberechtigungen erteilen, sodass der WordPress-Administrator nicht funktioniert. Wenn sie eine Website hochladen, müssen sie uns um Unterstützung bitten, um dies zu beheben. Dies ist Zeitverschwendung für alle Beteiligten.
Nehmen wir an, der Kunde hat seine Website in hochgeladen httpdocs
. Wenn mv httpdocs/ httpdocs.2/ && cp -pr httpdocs.2/ httpdocs/ && rm httpdocs.2/ -fr
das Problem durch SSH behoben wird, ist an den Daten nichts auszusetzen.
Ich kann auch tun restorecon -Rv httpdocs/
, um das Problem zu beheben.
Die Frage ist also: Wie kann ich die über VSFTPD erstellten / hochgeladenen Verzeichnisse die richtigen SELinux-Kontexte erben lassen, so wie sie geerbt werden, wenn die Verzeichnisse über SSH erstellt / hochgeladen werden?