Hallo zusammen,
ich suche etwas Hilfe bezüglich Dateiberechtigungen in einer Shared-Hosting-Umgebung. Dabei geht es um folgendes Szenario: Ich habe einen Server, auf dem die Daten für einige Domains gehostet werden. Diese Domains gehören verschiedenen Personen und diese Personen sollen die Möglichkeit haben Dateien hinzuzufügen, zu ändern und zu löschen. Sie sollen das natürlich nur für die Domains machen dürfen, die ihnen gehören.
Im Verzeichnis /var/www/ gibt es verschiedene Unterordner für die jeweiligen Domains, also /var/www/domainA/, /var/www/domainB/, usw. benutzer1 hat das Recht die Daten von domainA und von domainB zu verwalten. benutzer2 nur von domainB und benutzer3 nur von domainC. Als Web-Server fungiert Apache, was als www-data läuft. Pro Domain gibt es in pool.d von PHP-FPM einen Eintrag. Die User sollen ihre Daten nur per SFTP verändern können.
Die Idee ist folgende: Ich erstelle eine Gruppe sftp und füge benutzer1, benutzer2 und benutzer3 dieser Gruppe hinzu. In der sshd-Konfiguration setze ich für die Gruppe sftp ForceCommand internal-sftp und ChrootDirectory /var/www/. Per ACL gebe ich den entsprechenden Nutzern die entsprechenden Rechte auf die entsprechenden Ordner, also z.B.
setfacl -Rm u:benutzer1:rwX domainA domainB
setfacl -Rm d:u:benutzer1:rwX domainA domainB
umask hätte ich auf 0007 (o=) gesetzt, sodass other keine Rechte kriegen kann.
Mein Problem jetzt ist folgendes. Apache und PHP sollen natürlich weiterhin daten lesen können und in speziellen Verzeichnissen soll PHP auch Daten schreiben können, z.B. ein Upload-Verzeichnis für eine Bildergalerie oder ein Log-Verzeichnis. Ich möchte aber nicht, dass alle hochgeladenen Dateien per-se schreibbar sind vom Server-Benutzer (www-data). Ich könnte hergehen und als Ownership root:www-data rekursiv angeben für alle Verzeichnisse innerhalb /var/www/ und der Gruppe Leserechte (und für Verzeichnisse auch Ausführrechte) vergeben. Vom Benutzer neu hochgeladene Dateien gehören aber ihm (sowohl UID als auch GID). Eine Idee wäre noch den Domain-Verzeichnissen das SGID-Bit zu setzen, was aber dazu führt, dass nun alles von www-data schreibbar ist und das möchte ich ja nicht. Wie kann ich das also einrichten und zwar so, dass der Benutzer selber im SFTP-Client auch angeben kann, dass z.B. /var/www/domainA/uploads/ schreibbar ist?