Unabhängiger Vergleich · keine bezahlten Platzierungen
Startseite / Blog / Technik / Dateiberechtigungen: Korrigieren Sie den Zugriff, ohne die gesamte Anwendung zu öffnen

Dateiberechtigungen: Korrigieren Sie den Zugriff, ohne die gesamte Anwendung zu öffnen

Ein Upload, der in 777 schreibt „damit es funktioniert“, wird sechs Monate später zum Tor zu einer Webshell. Die Genehmigungen erfordern eine Operation, kein Massaker.

Redaktion Hébergeurs.eu 5 Min.

Auf dem Ticket steht „Berechtigung verweigert“ für „storage/logs“. Die schnelle Antwort: „chmod -R 777 storage“. Die App funktioniert wieder. Drei Monate später wird eine in „storage/uploads“ hinterlegte „.php“ ausgeführt, da nginx dieses Verzeichnis noch bedient.

Webberechtigungen sind keine Unix-Bürokratie: Trennung zwischen Code, Daten, Uploads und Ausführung.

Empfohlenes Modell

Code (Git Deploy): Mensch/CI-Besitzer, Web schreibgeschützt. Daten („Speicher“, Cache): gezieltes Schreiben von WWW-Daten. Uploads: Teilbaum ohne Interpreter.

PfadEigentümerModeHinweis
app/Bereitstellen:www-data750/640kein Upload
Lagerung/WWW-Daten770 dirsProtokolle, Cache
öffentlich/UploadsWWW-Daten750noexec wenn möglich

umask und systemd

umask 027 oder 002 je nach Gruppenmodell. PHP-FPM „user=www-data“, separater Pool pro mandantenfähige App.

Vermeiden Sie es, Bereitstellungsskripte als Root ohne abschließenden Chown auszuführen.

nginx / Apache

location ^~ /uploads/ { location ~ \.php$ { alles verweigern; } } – Ausführung blockieren, auch wenn eine .php-Datei hochgeladen wird.

Separater vhost-Benutzer bei eingeschränktem Shared Hosting.

ACL für krumme Fälle

setfacl -m u:www-data:rwX storage ohne die Welt zu öffnen. Setzen Sie die ACL nach der Wiederherstellung des Backups zurück – oft vergessen.

Automatisierte Prüfung

Skript nach der Bereitstellung: schlägt fehl, wenn „find . -perm -0002`. Benachrichtigungen zu SUID neu. Dokumentieren Sie die vorübergehende Ausnahme mit Ticket und Ablaufdatum.

Express-Berechtigungsprüfung

„Bash Finden Sie /var/www -type f -perm -0002 finde /var/www -type d -perm -0002 find /var/www -name '.php' -path '/uploads/*'


Richtig: chown deploy:www-data, chmod 640 Dateien / 750 Verzeichnisse, nginx verweigert PHP-Uploads.



Dokumentieren Sie Ausnahmen mit Ticket und Ablaufdatum. Scannen Sie das CI nach der Bereitstellung erneut.



Entwicklerschulung: „Berechtigung verweigert“ → strace/id/groups vor chmod.



Ein einziger Upload eines weltweit beschreibbaren Verzeichnisses reicht für kleine Kompromisse in der CMS-Lieferkette aus.



SELinux/AppArmor auf gehärteten Distributionen: chcon ist manchmal nach der Bereitstellung erforderlich – Dokumentkontexte, nicht nur chmod.



Container: Volume-Mount-UID-Zuordnung – Berechtigung verweigert, mysteriös, oft UID-Host ≠ Container-Benutzer.



## Technische Schuldenerlaubnisse



Prüfvermächtnis: Der alte Anbieter „chmod 777 storage“ ist nirgends dokumentiert. Sprint-Behebungsplan: Nginx Deny + ACL + Chown.



PHP-FPM-Poolbenutzer pro Multi-Tenant-Client, wenn gemeinsam genutzt, benutzerdefiniert – Isolierung durch Unix-Benutzer > chmod-Welt.



Git verfolgt standardmäßig keine Berechtigungen – Post-Checkout-Hook-Wiederherstellungsmodi, falls erforderlich.



## Betriebszusammenfassung



Die richtigen Berechtigungen beim Webhosting trennen Lesen, Schreiben und Ausführen nach Rollen: „Deploy“ schreibt Code, „www-data“ schreibt Uploads und Cache, niemand führt PHP in Uploads aus. Das gemeinsame System kompensiert manchmal mit open_basedir; VPS erfordert explizite Disziplin.



Webshell-Prüfung nach dem Vorfall: chmod allein reicht nicht aus – Nginx verweigert die Ausführung, Rotationsgeheimnisse, Vektor-Upload-Analyse. Integrieren Sie Scanberechtigungen in die CI-Bereitstellung. Training: Berechtigung verweigert → Besitzer/Gruppe vor Modus.



## Schritt-für-Schritt-Anleitung



1. Identifizieren Sie den Benutzer PHP-FPM („ps aux | grep php-fpm“).

2. Listen Sie den Web-Root des aktuellen Besitzers auf („namei -l /var/www/app/public“).

3. Wenden Sie „deploy:www-data 750/640“ auf den Code an.

4. Speicherung und Uploads von 770/750 WWW-Daten.

5. Nginx verweigert PHP in Uploads.

6. Scannen Sie CI weltweit beschreibbar.

7. Ausnahmen dokumentieren.



Bei böswilligem Upload-Vorfall: vhost isolieren, Datei zur Analyse aufbewahren, DB-Passwort rotieren, wenn SQL-Injection vermutet wird, Berechtigungen von IaC wiederherstellen, keine manuelle CHMOD-Panik.



Führen Sie ein datiertes Runbook, Vorher-/Nachher-Kennzahlen und eine Überprüfung nach dem Vorfall – kumulative Disziplin vermeidet Panik am Freitagabend.



Führen Sie ein datiertes Runbook, Vorher-/Nachher-Kennzahlen und eine Überprüfung nach dem Vorfall – kumulative Disziplin vermeidet Panik am Freitagabend.



Führen Sie ein datiertes Runbook, Vorher-/Nachher-Kennzahlen und eine Überprüfung nach dem Vorfall – kumulative Disziplin vermeidet Panik am Freitagabend.



Führen Sie ein datiertes Runbook, Vorher-/Nachher-Kennzahlen und eine Überprüfung nach dem Vorfall – kumulative Disziplin vermeidet Panik am Freitagabend.



Führen Sie ein datiertes Runbook, Vorher-/Nachher-Kennzahlen und eine Überprüfung nach dem Vorfall – kumulative Disziplin vermeidet Panik am Freitagabend.



Führen Sie ein datiertes Runbook, Vorher-/Nachher-Kennzahlen und eine Überprüfung nach dem Vorfall – kumulative Disziplin vermeidet Panik am Freitagabend.



## CMS



WP lädt Nicht-Exec-Laravel-Speicher hoch, der nur beschreibbar ist. Symlink-Bereitstellungsberechtigungen für den aktuellen Stand.



:::Hinweis

**Denken Sie daran.** Zielbesitzer/-gruppe und ACL korrigieren; 777 ist eine Sicherheitsschuld, keine Lösung.

:::



:::Höhepunkt

**Ein rekursiver chmod ist die Berechtigungsversion einer „DROP TABLE“ – schnell, irreversibel ohne Backup und oft nutzlos.**

:::



## Entscheide dich und gehe ohne blinden Fleck voran



1. **Identifizieren Sie den PHP-FPM-Benutzer** – „namei -l“ im Web-Root, Eigentümer „deploy:www-data“.

2. **Wenden Sie 750/640 auf den Code an** – Speicherung und Uploads 770/750, Nginx verweigert PHP in Uploads.

3. **Weltweit beschreibbar scannen** – nach der Bereitstellung im CI nach Ausnahmen mit Ticket und Ablaufdatum suchen.

4. **Schule die Entwickler** – Berechtigung verweigert → strace/id/groups vor chmod 777-Panik.

5. **Wiederherstellung von IaC** nach einem böswilligen Upload-Vorfall – kein manuelles Notfall-chmod.



Shared vs. VPS: Vergleichen Sie die Grenzwerte im [Verzeichnis](/de/verzeichnis/) und in unseren Sicherheitsleitfäden (/fr/guides/).

## Häufig gestellte Fragen



### chmod 755 oder 775 für eine Website?



755 für statische Dateien, wenn www-data alleine liest. 775 nur, wenn mehrere Benutzer in der Gruppe schreiben müssen – strenge Gruppe, niemals weltweit beschreibbar.



### Eigentümer www-data oder bereitstellen?



App-Dateien: Deploy: www-data 640, Ordner 750. Uploads: www-data beschreibbar, PHP-Ausführung im Upload-Verzeichnis über Nginx deaktiviert.



### ACL vs. rekursiver chmod?



setfacl für bestimmte Fälle (deploy + www-data). chmod -R 777 ist ein Anti-Pattern, das den tatsächlichen Benutzer-/Gruppenkonflikt verbirgt.



### Wie auditiert man?



Weltbeschreibbar finden, unerwartete SUID finden, Upload-Pfade überprüfen. Integrieren Sie es in CI oder ein Post-Deployment-Skript.



---



Nächster Fehler: Berechtigung verweigert: Besitzer vor Modus ändern – immer in dieser Reihenfolge.

Europäische Hoster vergleichen

Filtern nach Compliance, Standort und Einsatzzweck — dann die Datenblätter öffnen, um den echten Umfang zu prüfen.

Verzeichnis durchsuchen
Blog

Weiterlesen

Alle Artikel →