Oh, was für ein langer Beitrag.
Ja, hallo ersma ... </rüdigerhoffmann>
Diesmal geht es um chmod, das ich nicht verstanden habe. Damit Ihr Euch keine unnötige Mühe macht, möchte ich vorauschicken:
Deine Beschreibung zeigt relativ klar, wie du die Sachlage verstanden hast bzw. wo deine Lücken sind.
Was ich hingegen nicht verstanden habe, das ist die wirkliche Bedeutung von „lesen”, „schreiben” und „ausführen”. Ich verstehe diese Begriffe im Sinne der Alltagssprache, im Sinne der Pädagogik (z. B. „sinnentnehmendes Lesen”), im Sinne der gehobenen Literatursprache usw., aber nicht im Sinne der Informatik.
Gut dann fangen wir damit an.
Lesen bedeutet, den Inhalt eines Objekts anzuschauen, ohne ihn zu verändern.
Ist das betrachtete Objekt zum Beispiel eine Textdatei, dann bedeutet Lesen, den darin enthaltenen Text z.B. anzuzeigen oder sonstwie zu verarbeiten. Bildlich gesprochen: Das Buch zu öffnen und hineinzuschauen.
Ist das Objekt ein Verzeichnis (en: directory), dann bedeutet Lesen, die darin enthaltenen Dateien aufzulisten.
Schreiben bedeutet, den Inhalt zu verändern. Also zum Beispiel eine Textdatei zu verändern und dann wieder zu speichern. Ist das betrachtete Objekt ein Verzeichnis, dann ist jede Veränderung von Dateien darin ein Schreibvorgang.
Ausführen bedeutet, den Dateiinhalt zu lesen, als Programmcode zu betrachten und diesen Code auszuführen. Das können neben "echten" Programmdateien (im Windows-Kontext: exe-Dateien) auch Shell-Scripte sein (Batchdateien), die auch als Programm betrachtet werden.
Ist das betrachtete Objekt ein Verzeichnis, dann bedeutet Ausführen das "Betreten" des Verzeichnisses, also ein cd in dieses Verzeichnis zu machen.
So, das war die Beschreibung der drei Vorgänge.
Fangen wir einmal mit der letzten Ziffer an, der ganzen Welt:
- Wenn ich eine html-Datei der allereinfachsten Art habe und möchte, dass die ganze Welt diese Datei als Internet-Seite AUFRUFEN kann, dann reicht es, dass ich „lesen” angebe, nicht wahr?
Ja. Nur ist es auf technischer Ebene nicht "irgendjemand auf der Welt", der die HTML-Datei liest, sondern der Webserver, der auf dem Computer läuft.
- Wenn die html-Seite Hintergrundbilder (src…), Bilder (img…), eingebundene CSS-Dateien (link…) EINBINDET und wenn man sich von der Seite auf eine andere BEGEBEN kann (a href…), reicht dann immer noch das „lesen”?
Ja. Aber auch dann ist auf der Technik-Ebene der Webserver derjenige, der die Datei "liest", nicht der Nutzer in Norwegen, der die Seite aufruft.
- Wenn ich die html-Datei in eine php-Datei umbenenne, ohne jedoch richtiges php einzufügen, bleibt es dann immer noch bei „lesen”, oder muss da etwas „ausgeführt” werden?
Das ist ein Grenzfall. Die Denkweise ist eigentlich völlig richtig. Trotzdem reicht "Lesen" hier noch aus, weil erst ein Programm gestartet wird (nämlich der PHP-Interpreter), das seinerseits die PHP-Datei nur "liest", interpretiert und dann den Code ausführt.
- Falls nein: Und wenn ich echtes php einfüge, z. B. die Funktion <include>?
Das ändert nichts.
- Und was ist mit Bilddateien (jpg, png…)? Habe ich richtig verstanden, dass Bilder „gelesen” werden?
Ja.
- Und die CSS-Dateien? Werden die auch „gelesen”?
Ja.
- Und Kontaktformulare, welche die Besucher AUSFÜLLEN, und die mit Javascript und PHP arbeiten? Muss man da „schreiben” hinzufügen?
Nein, weil die Datei, die den eigentlichen Code enthält, nicht mehr "geschrieben", also verändert wird.
Und was würde sich ändern, wenn man bei all diesen Dateien „schreiben” hinzufügte?
Zunächst mal nichts. Nur dass im Fall eines Programmfehlers diese Dateien dann verändert bzw. überschrieben werden könnten. Zum Vergleich: Wenn du vom Nachbarn des Schlüssel für seine Wohnung bekommst, heißt das ja auch noch nicht, dass du da in der Wohnung Rabbatz machst. Aber du könntest es, wenn du plötzlich einen Tobsuchtsanfall kriegst.
Des weiteren glaube ich verstanden zu haben, dass für Ordner „5” empfohlen wird. Dass das Ausführrecht nötig ist, um den ZUGANG zu den Dateien zu GEWÄHRLEISTEN, habe ich verstanden. Aber wozu braucht die Welt bei den Ordnern das Leserecht? Was würde sich ändern, wenn ich das Leserecht unterdrückte (also die letzte Ziffer auf „1” setzte)?
Dann könnte "die Welt", also alle Benutzer außer dir und den Gruppenmitgliedern, nicht mehr sehen, was in dem Verzeichnis liegt - aber trotzdem noch einzelne Dateien darin öffnen, wenn sie den Namen genau kennen.
Und was würde passieren, wenn man „schreiben” hinzufügte?
Siehe oben: Solange alles fehlerfrei läuft, würde es nichts ändern. Du vergibst nur eine Berechtigung, die aber im Normalfall niemand in Anspruch nimmt. Aber wenn irgendein Programm aufgrund eines Fehlers aus dem Ruder läuft, könnte es nach Belieben Dateien in diesem Verzeichnis erzeugen, verändern oder löschen.
Nächster Fragenkomplex, die mittlere Ziffer (Gruppe) betreffend:
Wenn ich eine Web-Site alleine betreibe, muss ich dann die Rechte der Gruppe
• auf „0” stellen
• auf dieselbe Ziffer stellen wie die letzte Ziffer
• auf dieselbe Ziffer stellen wie die erste Ziffer?
Das hängt davon ab, wie dein Webhoster die Benutzer und Gruppen verwaltet. Daher solltest du diese Frage lieber dort stellen.
Letzter Fragenkomplex, die erste Ziffer betreffend: Hier verstehe ich am allerwenigsten. Ich habe zwar Empfehlungen gelesen, die besagen, dass man bei Dateien die erste Ziffer auf „6” stellen soll (um es noch einmal zu wiederholen: ich weiß,dass damit „lesen” und „schreiben” gemeint ist) und bei den Ordnern auf „7” ( ich weiß, dass das alle Rechte beinhaltet). Aber warum?
Bei gewöhnlichen Dateien möchtest du selbst wahrscheinlich in der Lage sein, sie auch wieder zu lesen. Und vielleicht auch, sie später nochmal zu verändern, zu überschreiben.
Wenn ich meine Dateien von meinem Computer auf den Server des Providers mittels Filezilla HOCHLADE, von welchem Recht mache ich da Gebrauch? Vom Ausführrecht oder vom Schreibrecht?
Nur vom Schreiben.
Oder wenn ich die Datei auf demselben Weg wieder LÖSCHE?
Das Löschen einer Datei ist ein Schreibzugriff auf das Verzeichnis, in dem die Datei liegt. Auf die Datei selbst brauchst du zum Löschen keine Berechtigungen.
Wozu brauche ich persönlich Leserechte? Ich kann doch meine Dateien vor dem Hochladen auf meinem Computer ANSCHAUEN, und nach dem Hochladen kann ich die Seite so wie die ganze Welt AUFRUFEN. Was ändern die zusätzlichen Rechte? Was würde passieren, wenn ich nur genauso viele Rechte wie die ganze Welt hätte?
Mach dir bitte klar, dass es auf dem Rechner, auf dem deine Webpräsenz liegt, nur ein paar wenige User gibt, die für dich von Bedeutung sind. Der wichtigste davon ist der Webserver (sagen wir, als virtuelle Person). Du musst daher immer wissen, welcher auf dem Computer bekannte User gerade auf die Dateien zugreift. Das bist fast nie du selbst mit deinem Namen, sondern der Zugriff wird in der Regel auf eines der Programme abgebildet, die auf diesem Computer laufen.
Deswegen sind auch die Zugriffsrechte (rwxrwxrwx) allein nicht aussagekräftig; dazu gehört mindestens noch die Angabe, wer der Besitzer dieser Datei ist.
Morgen und übermorgen habe ich Zeit, zu antworten, aber am Wochenende überhaupt nicht. Und falls Ihr nächste Woche Nachrichten schickt, könnte es einige Tage dauern, bis ich antworte. Entschuldigung, aber es ist nicht anders möglich.
Ja, dann ist das eben so. :-)
Ciao,
Martin