Ich versuche, eine Shared-Hosting-Umgebung einzurichten, in der Benutzer SFTP-Zugriff auf einen oder mehrere Ordner erhalten. Stellen Sie sich folgendes Szenario vor:
/var/www/
enthält mehrere Verzeichnisse, die Domänen darstellen. Die Benutzer können Dateien in Verzeichnissen basierend auf ACLs hinzufügen, ändern oder löschen, sodass Benutzer vollen Zugriff auf und john
haben können , aber nicht auf . Gleichzeitig muss der Webserver natürlich in der Lage sein, die Dateien in allen Verzeichnissen zu lesen./var/www/domain1.com
/var/www/domain2.org
/var/www/domain3.de
Was ich nicht ganz verstehe, ist, wie ich das alles so absichern kann, dass
- alle Benutzer werden eingeschränkt
/var/www/
und können nur die Domänen (Unterordner) sehen, die sie sehen dürfen - der Apache-Benutzer
www-data
hat nur Lesezugriff auf alle Ordner - PHP hat Schreibzugriff auf einige Ordner, wie z. B. einen Benutzer-Upload-Ordner oder einen Protokollordner innerhalb
/var/www/domain/
- Neue Dateien, die über SFTP hochgeladen werden, erhalten automatisch die richtigen Berechtigungen und der Benutzer kann angeben, in welchen Ordner PHP schreiben kann, ohne dass andere Benutzer des Shared Hostings darauf zugreifen können.
Mit PHP meine ich eine PHP-FPM-Instanz, bei der jede Domäne ein separater Eintrag ist pool.d
und der Benutzer frei konfigurierbar ist.
Meine Ideen waren bisher, eine Gruppe namens hinzuzufügen sftp
und zu konfigurieren sshd
, um Benutzer, die zu der Gruppe gehören, sftp
in zu jailen /var/www/
, ihnen die Kennwortauthentifizierung zu erlauben und hinzuzufügen ForceCommand internal-sftp
. Dann würde ich rekursiv Standard-ACLs für die Ordner darin festlegen, /var/www/
damit die richtigen Benutzer Zugriff auf die richtigen Verzeichnisse haben. Aber was lege ich als besitzenden Benutzer und Gruppe für die Ordner fest? Muss ich die Umask anpassen? Was ist der entsprechende Benutzer und die entsprechende Gruppe für die jeweilige PHP-FPM-Poolinstanz?