Aus Sicherheitsgründen sollten die Datei- und Verzeichnisrechte wie auch die Benutzer im Apache-Datenverzeichnis immer richtig gesetzt sein. Sind die Rechte unnötigerweise zu leger steigt die Gefahr von erfolgreichen Angriffen auf die Seite, sind sie zu rigide funktionieren automatische Backups durch ein CMS nicht, etc.
Für die Ungeduligen sowie die Scheib- und Lesefaulen hier gleich das Ergebnis:
chmod -R u+rwX,go+rX,go-w * && chown -R www-data:www-data *
Beim obigen Beispiel sollte Apache als www-data laufen und man sollte sich im gewünschten Datenverzeichnis befinden. Ich verwende hier absichtlich die Sterne (*) und keine Punkte (.) weil ich Dateien wie zB .htaccess nicht verändern will.
Ein bisschen mehr Detailinfo:
Grundsätzlich sollte der Besitzer auf alle Dateien lesend (4) und schreibend (2) zugreifen dürfen. Mitglieder der Gruppe und alle anderen sollen nur lesen dürfen (4). Das Ergibt also 4+2 für den Besitzer und für die Gruppe und andere 4 also 644. In die Verzeichnisse und Unterverzeichnisse soll zusätzlich noch jeder wechseln (1) können also 755. Weiter möchte ich hier auf Linux Dateirechte nicht eingehen.
Eine einfache Variante ist mit dem Befehl find Dateien und Verzeichnisse zu finden und sie mit -exec zu chmoden. Danach mit chown rekursiv den Besitzer setzten
find * -type d -exec chmod 755 {} + find * -type f -exec chmod 644 {} + chown -R www-data:www-data *
Vielleicht nochmal ganz kurz zum oben genannten Einzeiler:
chmod -R u+rwX,go+rX,go-w * && chown -R www-data:www-data *
-R | rekursiv |
u+rwX | Benutzer kann lesen,schreiben,ausführen |
go+rX | Gruppe und Andere können lesen, ausführen |
go-w | Gruppe und Andere können explizit nicht schreiben |
Das Wichtige daran ist das große X. Das große X wird von Verzeichnissen akzeptiert von Dateien nicht.