Cheatah: Rechte

Beitrag lesen

Hi,

Offenbar habe ich das mit den Rechten die man mit chmod
setzt nicht ganz kapiert.

es sind die Rechte, die das Filesystem kennt. Jede Datei (jedes Verzeichnis usw.) erlaubt dem User (Eigentümer) und der Gruppe, zu der sie gehört, sowie der "Welt" bestimmte Dinge; aufgeteilt nach Lesen, Schreiben und Ausführen (bzw. bei Verzeichnissen "Hindurchgehen").

Was heisst "Gruppe", "Eigentümer", "Sonstige"?

Der Eigentümer ist derjenige, der die Datei besitzt (also gewöhnlich angelegt hat). Jeder User (z.B. Du, wenn Du Dich eingeloggt hast; oder auch ein Programm, z.B. der Server) hat einen Benutzernamen und ist einer oder mehreren Gruppen zugeteilt. Gehört eine Datei "User X" und "Gruppe Y", und ein "User Z", der den Gruppen "A", "B" und "Y" angehört, so gelten die Gruppenrechte der Datei (also die mittlere Ziffer, die Du bei chmod angibst). Die "Welt"-Rechte ("Sonstige") gelten für jeden, der weder Eigentümer ist, noch zur entsprechenden Gruppe gehört.

Bei meinem Template-System wird index.php gestartet.

Das ganze läuft auf dem Server ab, und der Server tritt gegenüber dem Filesystem - wie jedes Programm - als ein User mit (mindestens) einer Gruppe auf. Völlig egal ist dabei, was der Server intern für irgendwelche Berechtigungen verwaltet; diese sind sein Bier und interessieren das Filesystem nicht die Bohne. HTTP Authentication beispielsweise ist nicht mal mit dem Rechtesystem kompatibel - zumal es unabhängig davon ist, ob das Filesystem nun ein linux- oder ein windowsübliches ist. Wenn der Server also z.B. als User "wwwrun" mit der Gruppe "wwwgroup" läuft, wird _jedes_ Deiner Scripts so auftreten, als hättest Du Dich per Telnet als "wwwrun" eingeloggt (und nur zur Gruppe "wwwgroup" gehören). Meistens tust Du dies allerdings als "deinusername" und gehörst dann einer Gruppe "user" o.ä. an.

Dieses Script holt die
entsprechenden Daten aus der MySQL-Datenbank

Eine Datenbank verwaltet ebenfalls völlig eigene Berechtigungen, die wiederum nicht das geringste mit den Rechten des Filesystems zu tun haben - oder mit denen eines anderen Programms, etwa Deinem HTTP-Server.

Wer hat nun
alles die Möglichkeit in diese Dateien zu schreiben?

  • Das Script im HTTP-Server gibt dem User, der sich anmeldet, irgendwelche Rechte, die innerhalb dieses Scripts gelten.
  • Der Datenbank-Server gibt dem User, als der sich das Script connectet, irgendwelche Rechte.
  • Das Filesystem gibt dem HTTP-Server _im ganzen_ irgendwelche Rechte, die für alles gelten, was der HTTP-Server[1] oder ein darin laufendes Script tut.

Keine der drei Dinge haben etwas miteinander zu tun. Im Prinzip ist es aber ganz einfach:

  • Deine Scripts treten gegenüber dem DB-Server immer als der selbe User auf (identischer Connect-Vorgang).
  • Dein HTTP-Server tritt gegenüber dem Filesystem immer als der selbe User auf.
  • Welche User Du im HTTP-Server (also bei Authentication) erlaubst, ist Deine freie Entscheidung und ändert nicht das geringste bei anderen Berechtigungen.
  • Das einzige, was es beim Filesystem zu bedenken gibt: Wenn Du Dich (persönlich, per FTP oder Telnet beispielsweise) einloggst, bist Du ein anderer User, als der HTTP-Server; bzw. als Du, wenn Du irgendetwas über den HTTP-Server tust.

Cheatah

[1] Ein kleines Detail: Der Server _selbst_, der also etwa das Schreiben von Logfiles durchführt, wird als "root" gestartet (der Superuser, der immer alles darf). Als "wwwrun.wwwgroup" (o.ä.) wird allerdings jeder einzelne Serverprozess gestartet, der Dich interessiert. Aus Deiner Sicht gibt es beim Server keinen "root"; für den Administrator ist dies jedoch wichtig.

--
X-Will-Answer-Email: No