Seit längerem beschäftigt mich das Thema: "Wie Berechtigungen für VirtualHosts richtig einstellen" und da ich dazu nix brauchbares gefunden habe, habe ich mir selbst ein Konzept überlegt.
Ausgangslage
Ein (apache-)Webserver mit suExcec/fcgi im sog. "ISP hosting setup", d.h. mehrere domains- und subdomains und unterschiedliche User die einen ftp/virtualhost Zugang haben.
Benutzer/Gruppen
jeder Benutzer enthält einen system account in der Form: "domain.tld" und ist in der Standardgruppe: "users".
Der apache selbst hat den gleichnamigen Benutzernamen und ist in der Gruppe: apache
Verzeichnisstruktur
Die Domain Verzeichnisse sind nach domain-tld/subdomain gegliedert, d.h. der Virtualhost: subdomain.domain.tld hätte den document root: /home/web/domain.tld/subdomain/public_html
Eine Skelettstruktur sieht dann entsprechend so aus:
- Code: Select all
/home/web/domain.tld/
`-- www
|-- log
| |-- access_log
| |-- combined.log
| `-- error_log
`-- public_html
|-- index.html
Der user soll dabei einerseits nichts "kaputt machen" können und andererseits soweit von den anderen usern abgeschottet werden wie möglich.
Die Berechtigungen sind wie folgt gesetzt:
- Code: Select all
drwxr-xr-x root root /home/web/
dr-xr-x--- domain.tld apache /home/web/domain.tld/
drwxr-x--- domain.tld apache /home/web/domain.tld/www/
dr-xrwx--- domain.tld apache /home/web/domain.tld/www/log/
drwxr-x--- domain.tld apache /home/web/domain.tld/www/public_html/
-rw-r----- domain.tld apache /home/web/domain.tld/www/public_html/index.php
Dies müsste sicher stellen, dass der User wirklich nur in "seinem" home-Verzeichnis lesen kann; des weiteren darf er auch dort z.B. sein log-Verzeichnis nicht löschen, da dies vom apache verwaltet wird.
Meine Frage an euch ist nun, ob ihr hier noch lücken/verbesserungen seht?
Was könnte man noch anders, bzw. besser machen?