Rechte
Daniel
- sonstiges
0 Sönke Tesch0 andi0 Cheatah0 DANKESCHÖN
Offenbar habe ich das mit den Rechten die man mit chmod
setzt nicht ganz kapiert. Gibt es da einen guten
Link oder vielleicht eine gute Erklärung? Was heisst "Gruppe", "Eigentümer", "Sonstige"?
Bei meinem Template-System wird index.php gestartet. Dieses Script holt die
entsprechenden Daten aus der MySQL-Datenbank/bzw. aus Template-Dateien. Diese
Template-Dateien können aber übers Web administriert werden. Wer hat nun
alles die Möglichkeit in diese Dateien zu schreiben?
Offenbar habe ich das mit den Rechten die man mit chmod
setzt nicht ganz kapiert. Gibt es da einen guten
Link oder vielleicht eine gute Erklärung? Was heisst "Gruppe", "Eigentümer", "Sonstige"?
Wie Du wahrscheinlich weißt, kann man unter Unix verschiedene Benutzer einrichten. Jeder Benutzer ist gleichzeitig Mitglied einer oder mehrerer Gruppen.
Darauf basierend erlaubd es das Dateisystem, jemanden, der auf eine Datei zugreifen will, in drei verschiedene Klassen einzuteilen und ihm entsprechende Rechte zuzubilligen: Eigentümer, Gruppe, sowie alle anderen, die nicht in die ersten beiden Klassen fallen.
Auf diese Art und Weise ist es möglich, recht genau zu bestimmen, wer auf eine Datei zugreifen darf und wer nicht. Zum Beispiel kann ein Lehrer eine Zensuren-Datei erstellen und sich selbst (als Eigentümer) Lese- und Schreibrechte einräumen. Die Datei ordnet er der Gruppe "Klasse 1b" zu und gibt der Gruppe nur Leserechte. Alle anderen bekommen gar keine Rechte.
Somit kann nur er die Zensuren ändern und außer ihm und der Klasse kann niemand sonst die Zensuren einsehen.
Bei meinem Template-System wird index.php gestartet. Dieses Script holt die
entsprechenden Daten aus der MySQL-Datenbank/bzw. aus Template-Dateien. Diese
Template-Dateien können aber übers Web administriert werden. Wer hat nun
alles die Möglichkeit in diese Dateien zu schreiben?
Das hängt von den Rechten ab :)
In der Regel kann man bei normalen Hostern davon ausgehen, daß jeder Nutzer auf dem Rechner Deine Dateien einsehen kann - inklusive in den Skripten stehenden Passwörtern. Mit "jeder Nutzer auf dem Rechner" sind aber wohlgemerkt nur diejenigen gemeint, die tatsächlich auf dem Rechner gemeldet sind, sprich Administratoren und alle Kunden des Webhosters, nicht der ganze Globus.
PHP hat eine eingebaute Sperre, die -wenn aktiviert, was auch nicht selbstverständlich ist- einem Skript nur Zugriff auf Dateien erlaubt, wenn Skripteigentümer und Dateieigentümer identisch sind. In dieser Ecke besteht also gewisse Sicherheit, es ist aber ohne weiteres möglich, über CGI-Anwendungen die Web-Dateien fremder Leute auszulesen, da dort eine solche Sperre nicht vorhanden ist.
Diese allgemeinen Leserechte sind bei 08/15-Standardinstallationen notwendig, da der Webserver gewissermaßen als eigene Identität arbeitet. Aus Sicht des Dateisystems ist der Webserver ein Nutzer mit dem Namen www (oder ähnlichem), dem Leserechte eingeräumt werden müssen. Und das geht nur, indem man "allen Nutzern" Leserechte einräumt, da die Gruppenrechte wegen einer Beschränkung ausscheiden (wenn der Hoster nicht vorgesorgt hat).
Schreibrechte hat normalerweise nur der Eigentümer der Datei. Einzige Ausnahme: Ein PHP-Skript soll in die Datei schreiben dürfen, dann muß in den meisten Fällen wiederum "jeder Benutzer" Schreibrechte haben, da das Skript nicht "in Deinem Namen" läuft, sondern im Namen des Webservers.
Gruß,
soenk.e
hi,
Sieh Dir die Seite mal an:
http://www.pl-forum.de/work/newbie/rechte.html
Andi
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?
Keine der drei Dinge haben etwas miteinander zu tun. Im Prinzip ist es aber ganz einfach:
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.
Vielen Dank für die ausführlichen Antworten!
Vielen Dank für die ausführlichen Antworten!
Vielen Dank für die ausführlichen Antworten!