Kurze Antwort
Dateiberechtigungen unter Linux steuern, wer Dateien lesen, schreiben oder ausführen darf. Die Befehle `chmod` und `chown` ändern Berechtigungen und Eigentümerschaft, aber eine unsachgemäße Verwendung kann zu Fehlern wie 403 Forbidden oder Zugriffsproblemen führen. Lernen Sie die richtige Syntax und die häufigsten Szenarien kennen, um Fehler zu vermeiden.
So erkennen Sie das Problem
- Der Webserver meldet 403 Forbidden für Dateien, die verfügbar sein sollten
- Sie können Änderungen an einer Datei nicht speichern, obwohl Sie als Benutzer angemeldet sind
- Ein Skript oder Programm kann nicht ausgeführt werden, obwohl es die entsprechenden Berechtigungen hat
- Nach dem Verschieben von Dateien sind Eigentümerschaft und Berechtigungen falsch
- Der Zugriff auf eine Datei über einen FTP/SFTP-Client gibt den Fehler Permission denied zurück
Häufigste Ursachen
Falsch gesetzte Berechtigungen
Berechtigungen wie 777 oder 666 sind zu freizügig und können Sicherheitsprobleme oder Konflikte mit dem Webserver verursachen.
Falscher Dateieigentümer
Die Datei gehört dem Benutzer root oder einem falschen Benutzer, sodass der Webserver oder die Anwendung nicht darauf zugreifen kann.
Ungeeignete Gruppe
Die Datei gehört einer Gruppe ohne die erforderlichen Berechtigungen, oder der Benutzer ist nicht Mitglied der entsprechenden Gruppe.
Vererbte Berechtigungen beim Kopieren
Das Kopieren von Dateien ohne Beibehaltung der Berechtigungen (z. B. `cp` ohne `-p`) weist der Kopie einen neuen Eigentümer und Berechtigungen gemäß dem umask-Wert zu.
Falscher umask-Wert
Der System-umask-Wert kann die Standardberechtigungen neuer Dateien und Ordner beeinflussen.
Lösung Schritt für Schritt
- 1
Überprüfen Sie die aktuellen Berechtigungen und Eigentümerschaft
Führen Sie
ls -lim Verzeichnis mit der Datei aus. Die Ausgabe zeigt Berechtigungen, Anzahl der Links, Eigentümer, Gruppe, Größe und Datum. Zum Beispiel bedeutet-rw-r--r-- 1 benutzer gruppe 1234 Jan 1 12:00 datei.txt, dass der Eigentümer Lesen/Schreiben, die Gruppe Lesen und andere Lesen dürfen. - 2
Verstehen Sie die Berechtigungssymbole
Standardberechtigungen bestehen aus drei Ziffern (Eigentümer, Gruppe, Andere). Jede Ziffer ist eine Summe: 4=Lesen, 2=Schreiben, 1=Ausführen. Zum Beispiel bedeutet 644 rw- für den Eigentümer, r-- für Gruppe und Andere. 755 bedeutet rwx für den Eigentümer, r-x für Gruppe und Andere.
- 3
Ändern Sie Berechtigungen mit chmod
Verwenden Sie
chmodmit oktaler oder symbolischer Schreibweise. Berechtigungen können vom Dateieigentümer oder root geändert werden. Zum Beispiel setztchmod 644 datei.txtdie Berechtigungen auf rw-r--r--. Für einen Ordner, der für alle zugänglich sein soll, aber nur der Eigentümer schreiben darf, verwenden Siechmod 755 ordner. Symbolisch:chmod u+x skript.shfügt dem Eigentümer Ausführungsrechte hinzu. - 4
Ändern Sie den Eigentümer mit chown
Der Befehl
chownerfordert normalerweise root odersudo.chown benutzer:gruppe dateiändert Eigentümer und Gruppe. Zum Beispiel setztsudo chown www-data:www-data index.phpEigentümer und Gruppe auf www-data. Für eine rekursive Änderung verwenden Sie-R(z. B.sudo chown -R www-data:www-data /var/www/html). Notieren Sie vorher den aktuellen Zustand (ls -lR) oder erstellen Sie eine Sicherungskopie, da die rekursive Änderung alle Dateien und Ordner umfasst. - 5
Verwenden Sie Gruppen für gemeinsamen Zugriff
Wenn mehrere Benutzer auf eine Datei zugreifen sollen, fügen Sie sie einer gemeinsamen Gruppe hinzu und setzen Sie Gruppenberechtigungen. Zum Beispiel
chmod 664 dateiundchgrp gemeinsame_gruppe datei. Benutzer in dieser Gruppe erhalten Lese-/Schreibzugriff. - 6
Setzen Sie spezielle Berechtigungen (setuid, setgid, sticky)
Setuid (
chmod u+s) ermöglicht die Ausführung eines Programms mit den Privilegien des Eigentümers. Setgid (chmod g+s) auf einem Ordner bewirkt, dass neue Dateien und Unterordner die Gruppe des Ordners erben. Das Sticky-Bit (chmod +t) auf einem Ordner erlaubt das Löschen hauptsächlich dem Dateieigentümer, dem Ordnereigentümer und root. Verwenden Sie diese mit Vorsicht. - 7
Ändern Sie die Standardberechtigungen mit umask
Der Befehl
umaskzeigt die aktuelle Maske an. Ein neuer Wert wird mitumask 022gesetzt, was bedeutet, dass neue Dateien 644 und Ordner 755 erhalten. Dies wirkt sich nur auf die aktuelle Sitzung aus; für dauerhafte Änderungen bearbeiten Sie~/.bashrcoder/etc/profile. - 8
Überprüfen und testen Sie die Änderungen
Führen Sie nach den Änderungen erneut
ls -laus, um die Berechtigungen zu überprüfen. Testen Sie den Zugriff als entsprechender Benutzer (z. B.sudo -u www-data ls /var/www/html). Stellen Sie sicher, dass die Anwendung fehlerfrei läuft.
Wenn nichts hilft
Wenn Sie weiterhin Berechtigungsprobleme haben, prüfen Sie, ob SELinux oder AppArmor aktiviert ist und den Zugriff blockiert. Der Befehl getenforce (SELinux) oder aa-status (AppArmor) kann den Status anzeigen. Überprüfen Sie auch die Webserver-Logs (/var/log/nginx/error.log oder /var/log/apache2/error.log) für Details zu Fehlern. Vermeiden Sie Berechtigungen 777. Wenn Sie prüfen müssen, ob das Problem an den Berechtigungen liegt, tun Sie dies an einer Kopie der Website oder in einer Testumgebung und stellen Sie die vorherigen Berechtigungen sofort wieder her. Für fortgeschrittene Fälle konsultieren Sie die Dokumentation zu ACL (Access Control Lists) mit setfacl und getfacl.
So beugen Sie vor
- Vermeiden Sie Berechtigungen 777 und 666; verwenden Sie die minimal erforderlichen Berechtigungen.
- Überprüfen Sie regelmäßig Eigentümerschaft und Berechtigungen von Webanwendungsdateien.
- Verwenden Sie Gruppen für gemeinsamen Zugriff, anstatt allen Berechtigungen zu erteilen.
- Verwenden Sie beim Kopieren `cp -p`, um Berechtigungen und Zeitstempel beizubehalten, und Eigentümerschaft, wenn Sie über die entsprechenden Rechte verfügen.
Wann Sie einen Profi rufen sollten
Wenn Sie unsicher sind, welche Berechtigungen für Ihre Anwendung erforderlich sind, oder wenn Berechtigungsänderungen den Betrieb der Website unterbrechen, wenden Sie sich an einen IT-Fachmann. Auch wenn Sie einen Sicherheitsvorfall im Zusammenhang mit Berechtigungen vermuten, ist es besser, dies von einem Profi überprüfen zu lassen.
IT-Infrastruktur-Wartung · Server, Netzwerke, Backup, Sicherheit und HelpdeskHäufige Fragen
Was ist der Unterschied zwischen chmod und chown?
`chmod` ändert die Zugriffsberechtigungen (Lesen, Schreiben, Ausführen) für Eigentümer, Gruppe und Andere. `chown` ändert Eigentümer und Gruppe einer Datei. Beide Befehle sind für eine ordnungsgemäße Zugriffsverwaltung unerlässlich.
Warum sollte man chmod 777 nicht verwenden?
Berechtigungen 777 ermöglichen allen das Lesen, Schreiben und Ausführen einer Datei, was ein großes Sicherheitsrisiko darstellt. Angreifer können die Datei ändern oder missbrauchen. Verwenden Sie immer die minimal erforderlichen Berechtigungen.
Wie ändere ich Berechtigungen nur für Ordner, nicht für Dateien?
Verwenden Sie `find` mit `-type d` für Ordner: `find /pfad -type d -exec chmod 755 {} \;`. Für Dateien verwenden Sie `-type f` und `chmod 644`.