Einrichtung eines "Upload"-Users für das Apache-Docroot
Mit dem Paket system-user-wwwrun wurden aus Sicherheitsgründen Restriktionen für den Apache2-User wwwrun eingeführt, die es diesem nicht mehr erlauben, sich am System einzuloggen oder Daten mittels scp, sftp oder ftp zu übertragen
Wird dieses benötigt, ist hierzu ein entsprechender User-Acount einzurichten. Der Name des Users ist beliebig und sollte zur Vermeidung von Brute-Force-Angriffen keinesfalls einem weit verbreiteten Usernamen entsprechen. Ich nutze in der folgenden Beschreibung mal beispielhaft den Usernamen “webdoedel”.
Zunächst ist im eisfair-Menü unter “User administration|Unix users” mit F7 der User “webdoedel” als normaler User einzurichten. Nun schauen wir nach, welcher Gruppe die Verzeichnisse in /var/www zugeordnet sind; in der Regel wird dies nogroup sein:
ls -la /var/www
total 36
drwxr-xr-x 5 root root 4096 Aug 1 2022 .
drwxr-xr-x 21 root root 4096 Oct 2 22:14 ..
drwxr-xr-x 2 wwwrun nogroup 4096 Jun 23 12:29 cgi-bin
drwxr-xr-x 16 wwwrun nogroup 4096 Oct 21 17:36 htdocs
drwxr-xr-x 2 wwwrun nogroup 4096 Oct 23 00:00 log
Anschließend fügen wir den User “webdoedel” unter “User administration|Unix users” (Taste F5) nun zusätzlich auch dieser Gruppe hinzu.
Damit der User “webdoedel” nun in das Docroot des Apachen schreiben darf, müssen gegebenenfalls noch Schreibrechte für diese Gruppe erteilt werden:
# Schreibrecht in /var/www
chmod -R g+w /var/www
# Schreibrecht in /var/www/htdocs
chmod -R g+w /var/www/htdocs
# Schreibrecht in /var/www/htdocs/irgendein_unterverzeichnis
chmod -R g+w /var/www/htdocs/irgendein_unterverzeichnis
Wer scp oder sftp zum Befüllen der Webspace nutzt, ist schon fertig. Weitere Konfiguration ist erforderlich, wenn auf dem eisfair-Server ein FTP-Server (proftpd oder pure-ftpd) eingerichtet wird und zur Übertragung von Daten genutzt werden soll.
Der oben generierte Benutzer würde nach Einloggen in den FTP-Server nur sei Home-Verzeichnis “/home/webdoedel” sehen und hätte keinen Zugriff auf den Webspace. Zudem müssen wir nun auch zwischen den beiden FTP-Servern unterscheiden, da sich sich in ihrem Verhalten unterscheiden: pure-ftpd folgt symbolischen Links im Homeverzeichnis von “webdoedel” auch dann, wenn sie außerhalb des Homerverzeichnisses liegen, so dass wir z. B. folgende symbolischen Links anlegen können, wobei der Name des Links frei wählbar ist, ich nehme mal Namen nach dem Schema “link_auf_”:
cd /home/webdoedel
# Link auf /var/www
ln -s /var/www link_auf_www
# Link auf /var/www/htdocs
ln -s /var/htdocs link_auf_htdocs
# Link auf /var/www/htdocs/irgendein_unterverzeichnis
ln -s /var/www/htdocs/irgendein_unterverzeichnis link_auf_irgendein_unterverzeichnis
Der proftpd folgt in der auf eisfair vorliegenden gehärteten Konfiguration solchen Links nicht, weshalb wir hier mit “mount bind” arbeiten müssen. Natürlich funktioniert diese Methode auch mit dem pure-ftpd. Mount binds können auf zwei Weisen angelegt werden: “Eintragung in /etc/fstab" oder “native Systemd-Units”.
Eintragung in die /etc/fstab
Die zugehörigen Zielverzeichnisse im Homeverzeichnis von “webdoedel” sind frei wählbar und sind hier mal beispielhaft immer mit “mount_auf_” eingeleitet. Systemd generiert daraus dann Systemd-Units und legt die Zielverzeichnisse automatisch an, falls sie noch nicht existieren:
Anlegen nativer Systemd-Units
Für jeden “mount bind” ist in /etc/systemd/system eine Datei mit dem vollen Pfad zum Zielverzeichnis und der Dateinamenserweiterung “.mount” als Dateinamen anzulegen, wobei “/” durch ”-” zu ersetzen ist, also z. B: “home-webdoedel-mount_auf_www.mount”. Entsprechend den unter 1. genannten Beispielen müssen diese Unitdateien folgenden Inhalte haben:
Unitdatei home-webdoedel-www.mount:
Unitdatei home-webdoedel-htdocs.mount:
Unitdatei home-webdoedel-irgendein_unterverzeichnis.mount:
Unabhängig davon, ob nun Methode 1 oder 2 gewählt wurde, sind diese nun noch dem Systemd bekannt zu machen:
Aktivieren der Mounts auf der Kommandozeile:
Deaktivieren der Mounts auf der Kommandozeile:
Statusabfrage der Mounts auf der Kommandozeile:
Die folgenden Befehle sind nur bei Anlegen der Mounts als native Systemd-Units sinnvoll, da bei Eintragung dieser in die fstab, alleine der fstab-Eintrag das Verhalten beim Boot bestimmt.
Sollen diese Mount beim Rechnerboot automatisch eingebunden werden, sind sie nun noch zu aktivieren:
Abschalten der automatischen Mounts geschieht mittels: