Linux Dateirechte und 755, 777, etc verstehen
Problem:
Was bedeuten eigentlich diese Linux Dateirechte, was chmod 755, chmod 777 ?
Antwort:
Grundsätzlich kann man bei Linux die Dateirechte numerisch (755, 777) oder symbolisch (
r,
w,
x) vergeben. Alle Rechte lassen sich für Eigentümer (user oder kurz
u), Gruppe (group oder kurz
g) und sonstige Benutzer (other oder kurz
o) festlegen.
Eine typisches Dateirecht sieht so aus:
-rwxr-xr-x
Ein typisches Verzeichnis sieht so aus:
drwxr-xr-x
Im Detail:
Die 1. Stelle bedeutet: Verzeichnis ja oder nein. Ist es ein Verzeichnis, steht dort ein "d" für Directory
2.-4. Stelle (hier rwx): Das sind die Eigentümer-Rechte.
5-7. Stelle (hier r-x): Das sind die Gruppen-Rechte.
8-10. Stelle (hier r-x): Das sind die Sonstige-Rechte.
Die Rechte im Detail:
d = Verzeichnis (Directory)
l = Verknüpfung (Link)
r = Lesen (Read)
w = Schreiben (Write)
x = Ausführen (eXecute)
Beispiel:
drwxr-xr-x
Bedeutet also: Es ist ein Verzeichnis, der Eigentümer hat (Lese Schreib Ausführrechte), die Gruppe hat (Lese Ausführrechte) und sonstige haben (Lese Ausführrechte).
Dateirechte ändern:
Die Rechte kann man entsprechend wieder für den Eigentümer (u), die Gruppe (g) oder sonstige (o) ändern. Unter Linux lautet der Befehl zum Rechte ändern
chmod.
Beispiele:
chmod g=rx dateiname
Setzt die Rechte von
dateiname der Gruppe auf lesen ausführen (rx).
chmod ugo=rx dateiname
Setzt die Rechte von
dateiname des Eigentümers, der Gruppe und sonstige auf lesen ausführen (rx)
Und was hat es jetzt mit 755, 777 etc. auf sich?
Lesen = 4
Schreiben = 2
Ausführen = 1
Wenn man das Recht lesen UND schreiben möchte, dann addiert man die Werte einfach: Lesen (4) Schreiben (2) = 6
chmod 755 dateiname
Setzt die Rechte von dateiname des Eigentümers auf (Lesen Schreiben Ausführen), der Gruppe auf (Lesen Ausführen) und sonstige auf (Lesen Ausführen).
Möchte man z.B. Bilder über PHP hochladen (= SCHREIBEN) und diese anschließend anzeigen (= LESEN!), dann benötigt man:
chmod 666
Möchte man z.B. PHP-Erweiterungen hochladen (= SCHREIBEN) und diese anschließend starten (= AUSFÜHREN), dann benötigt man:
chmod 777
Warum vergebe ich nicht generell überall 777 ?
777 ist somit das höchst mögliche Recht und man sollte damit vorsichtig umgehen. Insbesondere
ausführen ist gefährlich, da nicht alle hochgeladenen Dateien immer gutartig sein müssen. Eine ausführbare Datei könnten auch ein Rootkit sein! Es genügt, dass dieses Script einen Dateimanager innerhalb Ihres Webspaces erlaubt. So könnte man problemlos in die Konfigurationsdateien reinschauen und die Kennwörter, die ja zu 99% im Klartext dastehen, auslesen!
Warum 777 und nicht 755 etc.?
Problematik: Es gibt Datei-Eigentümer und es gibt Prozesse, die evtl. unter einem anderen Eigentümer laufen (= laufen als other). Gerade bei PHP und Apache ist das häufig der Fall, z.B. die Dateien gehören dem Linux-User, während der Apache als wwwrun läuft. In der Praxis bedeutet das schlicht: Ausprobieren! Laufen Apache und Dateien unter demselben Benutzer, genügt 755 völlig. Laufen Apache und Dateien unter unterschiedlichen Benutzern, wird vermutlich 777 nötig sein.
Quelle:
Sie müssen registriert sein, um Links zu sehen.