CHMOD 777
Martin
- webserver
Ist wohl sehr elementar, aber was genau bedeutet es, wenn ein directory 777 gechmodet ist? Was genau bedeutet "public" in diesem Zusammenhang? "owner" ist klar, "group" ist mir nicht so klar, weil ich als normaler User anscheinend keine Gruppen definieren kann. Aber wen aller umfasst "public"? Alle User die Zugang zum System haben, direkt oder per FTP, und alle Scripts die auf dem System liegen? Und wen noch?
Gruß und Dank
Martin
777 bedeutet Lese-, Schreib- und Ausführrecht für alle. "Group" ist die Gruppe in der sich der Eigentümer (Benutzer) befindet und "public" sind halt alle.
Aber wer sind "halt alle"?
Alle Bewohner dieses Erdballs? Alle Menschen, die Zugang zum Internet haben? Alle User, die ein Passwort für den Unix-Server besitzen? Alle Programme, die irgendwo auf dem Server sitzen?
Es geht konkret darum, dass Dateien aus einem Verzeichnis verschwunden sind. Die Berechtigungen für das Verzeichnis waren auf 777 gesetzt, weil ein PHP Script Dateien in diesem Verzeichnis verändert. Nun hat jemand behauptet, "777" (gemeint ist natürlich das letzte w in drwxrwxrwx) würde "world writable" bedeuten und "jedermann auf der Welt" hätte diese Dateien löschen können. Darum möchte ich noch einmal jemanden, der sich mit Unix auskennt, fragen, wer nun aller wirklich Zugriff auf ein solches Verzeichnis hat.
Gruß und Dank
Martin
Hallo!
Aber wer sind "halt alle"?
Alle accounts des Systems. Dh, dass jeder Prozess vollen Zugriff auf die Datei hat.
mfg
frafu
Hi.
Aber wer sind "halt alle"?
Alle accounts des Systems. Dh, dass jeder Prozess vollen Zugriff
auf die Datei hat.
Um es weiter zu konkretisieren:
Es haben alle User (und Programme mit den User IDs) des Systems auf
das besagte Verzeichis Schreibzugriff, die für die komplette
darüberliegende Verzeichnisstruktur mindestens Ausführungsrechte
(eXecute) besitzen.
Gruß
L00NIX
echo $begrüßung;
Aber wer sind "halt alle"?
Alle User, die ein Passwort für den Unix-Server besitzen?
Ein Passwort ist dabei nicht vonnöten.
Es geht konkret darum, dass Dateien aus einem Verzeichnis verschwunden sind. Die Berechtigungen für das Verzeichnis waren auf 777 gesetzt, weil ein PHP Script Dateien in diesem Verzeichnis verändert.
Ja ja, das gedankenlose Setzen irgendwelcher Zahlenwerte, die einem irgendjemand sagte und die man selbst nicht verstanden hat ...
Nun hat jemand behauptet, "777" (gemeint ist natürlich das letzte w in drwxrwxrwx) würde "world writable" bedeuten und "jedermann auf der Welt" hätte diese Dateien löschen können. Darum möchte ich noch einmal jemanden, der sich mit Unix auskennt, fragen, wer nun aller wirklich Zugriff auf ein solches Verzeichnis hat.
Du hast sicher den von mir verlinkten Artikel gelesen, dann weißt du ja schon, wer User, wer Group und wer alle anderen ist.
Es ist aber bei manchen Providern nicht anders möglich, als "allen anderen" Schreibrechte zu geben, wenn man Dateien anlegen lassen möchte.
Nehmen wir an, der User martin gehört zur Gruppe users und der Apache samt PHP läuft unter nobody und der Gruppe nogroup. Das Verzeichnis web in dem deine Dateien liegen gehört dem User martin und der Gruppe users. Ein User kann zwar auch in mehreren Gruppen Mitglied sein, in diesem Beispiel gehört nobody aber keiner weiteren Gruppe an. Somit bekommt nobody nur dann Zugriff auf das Verzeichnis web, wenn web entsprechende Rechte für "alle anderen" hat, er ist ja weder martin noch der Gruppe users zugehörig.
Wenn sich auf solch einem System mehrere Benutzer den gleichen Webserver teilen, können deren Scripte also auch in fremden Verzeichnissen wildern. Wenn man "allen anderen" die Schreibrechte entzieht kann ja auch das eigene Script nicht mehr schreiben.
Es gibt verschiedene Ansätze, ein System weniger anfällig als das beschriebene Szenario zu gestalten. Und wenn du wissen möchtest, welche konkreten Wege in deinem Fall gegangen worden sein können, und welche Maßnahmen dagegen helfen können, müsstest du mindestens ermitteln:
Einige Angaben liefert ein phpinfo(), einige bekommt man als normal sterblicher User nicht unbedingt raus.
echo "$verabschiedung $name";
echo $begrüßung;
Ist wohl sehr elementar, aber was genau bedeutet es, wenn ein directory 777 gechmodet ist?
Nun, zum einen ist chmod ein Programm mit dem man Rechte setzt. Es ist weder ein Zustand noch ein Verb. Man setzt keinen "chmod", man setzt Rechte mit Hilfe von chmod. Man "notepadet" ja auch keine Texte ...
Ansonsten gibt es eine Einführung zu den Rechten unter Unix unter anderem in der Wikipedia: http://de.wikipedia.org/wiki/Chmod
echo "$verabschiedung $name";
Hallo dedlfix.
Man "notepadet" ja auch keine Texte ...
Zumindest _noch_ nicht. Immerhin scheint ja bereits die halbe Welt zu "googeln", wenn sie etwas im Internet sucht...