Andreas-Lindig: wie geht das genau mit den Dateirechten unter Linux?

Hallo Forum,

Ich habe gerade bei einem neuen Hoster angeheuert und das böse Erwachen kommt erst jetzt: Ich muß da immer die Dateirechte vergeben, sonst funktionieren die PHP-Scripte nicht. Was ich zu diesem Thema im Archiv gefunden habe ist dies:
http://forum.de.selfhtml.org/archiv/2003/11/63240/#m358353

Nur habe ich nicht wirklich verstanden:
1. was der Unterschied zwischen den Rechten für das Verzeichnis und denen der einzelnen Datei ist.
2. wer der "Besitzer", die "Gruppe" und "andere/Welt" sind.
3. was ist "ausführen" - gilt das auch für PHP?

muß ich jetzt für alle Dateien einzeln Rechte vergeben oder reicht es für die Verzeichnisse? Es geht darum, daß PHP Dateien anlegen, ändern, löschen, und natürlich lesen können soll.

und: kann man die Rechte auch einmalig global vergeben - also für das oberste Verzeichnis?

Gruß, Andreas

  1. Ganz kurz, weil ich jetzt keine Zeit habe:
    Ja, auch die PHP-Files müssen ausführbar sein, denn sie sollen ja ausgeführt werden.
    Ja, das mußt du einzeln für die Files einstellen. Nur das Verzeichnis reicht nicht.
    Und: Das Ausführrecht auf einem Verzeichnis bedeutet, daß man da rein wechseln darf

    1. Hallo.

      Ja, auch die PHP-Files müssen ausführbar sein, denn sie sollen ja ausgeführt werden.

      Ja, das klingt plausibel, denn es scheint ja plausibel zu klingen ;-)
      MfG, at

    2. Hello,

      Ganz kurz, weil ich jetzt keine Zeit habe:
      Ja, auch die PHP-Files müssen ausführbar sein, denn sie sollen ja ausgeführt werden.

      Nein, php-Files müssen kein x-Recht haben, da sie nicht vom Betriebssystem, sondern vom Apachen ausgeführt werden.

      Ja, das mußt du einzeln für die Files einstellen. Nur das Verzeichnis reicht nicht.
      Und: Das Ausführrecht auf einem Verzeichnis bedeutet, daß man da rein wechseln darf

      ...dass man es in den Pfad aufnehmen darf.

      Ich würde mich an Deiner Stelle mittels phpinfo() erst einmal über die aktuellen Einstellungen informieren und dann mal alles über den Safe-Mode (gib bei der Suche auch "Save Mode" ein. Wird nämlich oft falsch geschrieben) lesen, was es hier gibt, für den Fall, dass der eingeschaltet ist.

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    3. Hi!

      Ja, auch die PHP-Files müssen ausführbar sein, denn sie sollen ja ausgeführt werden.

      nein, das müssen sie nur sein wenn Du sie direkt ausfühst in der Shell, ohne Interpreter.
      Dan muss in der 1. Zeile des Scriptes aber auch sowas stehen:
      #! /usr/bin/php

      Ja, das mußt du einzeln für die Files einstellen. Nur das Verzeichnis reicht nicht.

      Das kann man auch elegant mit einer EInstellung im (S)FTP Client machen ;-)

      Grüße
      Andreas

  2. Hallo!

    Ich habe gerade bei einem neuen Hoster angeheuert und das böse Erwachen kommt erst jetzt: Ich muß da immer die Dateirechte vergeben, sonst funktionieren die PHP-Scripte nicht.

    Was genau fordert er denn für Rechte? Womit lädst Du die Dateien hoch? Die meisten (S)FTP Clients haben die Möglichkeit die Rechte und Besitzer standardmäßig einzustellen. Such mal bei den Einstellungen...

    Nur habe ich nicht wirklich verstanden:

    1. was der Unterschied zwischen den Rechten für das Verzeichnis und denen der einzelnen Datei ist.

    Bei Verzeichnissen gibt es andere Probleme als bei Dateien...
    Es wird geregelt was die Benutzer in dem Verzeichnis dürfen, bei Dateien halt was die Benutzer mit Dateien machen dürfen.

    1. wer der "Besitzer", die "Gruppe" und "andere/Welt" sind.

    Besitzer ist der der die Datei angelegt hat, und die Gruppe ist seine Standardgruppe, oder wahlweise ein andere Gruppe in der der Besitzer ist. Welt sind alle Benutzer des Systems. Wenn Du z.B. im Shared Hostimg bist sind die anderen Benutzer auch die User der anderen Kunden des Providers, die ebenfalls auf Deiner Maschine sind.

    1. was ist "ausführen" - gilt das auch für PHP?

    Nur wenn Du PHP-Scripte direkt ausführen willst, solange Du den Webserver oder den PHP-Interpreter zum Aufruf verwendest brauchst Du das nicht.

    muß ich jetzt für alle Dateien einzeln Rechte vergeben oder reicht es für die Verzeichnisse?

    Nein. Du musst schon den Dateien eigene Rechte geben. Du kannst die Rechte die standardmäßig vergeben werden aber meist einstellen, s.o.

    Es geht darum, daß PHP Dateien anlegen, ändern, löschen, und natürlich lesen können soll.

    Wo ist das Problem? Du musst ein Verzeichnis haben in das der Benutzer unter dem der Webserver läuft schreiben, lesen und ausführen kann.

    Wenn PHP eine Datei schreibt werden dieser Datei automatisch die entsprechenden Rechte gegeben, um die Datei mit demselben User lesen zu können.

    und: kann man die Rechte auch einmalig global vergeben - also für das oberste Verzeichnis?

    Du kannst Recht rekursiv vergeben, sehe Dir mal "chmod --help" und "chown --help" an.

    http://www.selflinux.org/selflinux/html/nutzer_unter_linux.html (vor allem Kapitel 5)
    http://aktuell.de.selfhtml.org/artikel/server/linux/index.htm (vor allem Kapitel "Rechte im Dateisystem")

    Diese Artikel sollten einige Fragen beantworten.

    Grüße
    Andreas

    1. Hallo Andreas,

      Was genau fordert er denn für Rechte?

      'permission denied' oder so änlich. Inzwischen geht das erste Testprojekt ja auch wieder (nachdem mein Provider das auf Aufforderung eingerichtet hat ;)

      Womit lädst Du die Dateien hoch? Die meisten (S)FTP Clients haben die Möglichkeit die Rechte und Besitzer standardmäßig einzustellen.

      Ich lade mit Windows-Commander hoch. Ich habe nur eine Einstellung gefunden, die ich jedesmal neu setzen muß.

      Es geht darum, daß PHP Dateien anlegen, ändern, löschen, und natürlich lesen können soll.
      Wo ist das Problem? Du musst ein Verzeichnis haben in das der Benutzer unter dem der Webserver läuft schreiben, lesen und ausführen kann.

      Mein Problem ist, daß ich das noch nie machen mußte, bei meinem bisherigen Hoster lief das einfach so - der hat wohl alles richtig voreingestellt.

      1. Nun weiß ich eben nicht, welche Standardeinstellungen richtig sind, so daß nicht nur das Ganze funktioniert, sondern auch Fremde keinen Schindluder treiben können. Ich will also genügend, aber nicht zu viele Rechte vergeben.

      2. Ich habe keine Lust bei jedem Neuhochladen eines Projekts allen Dateien einzeln neue Rechte zuzuweisen.

      http://www.selflinux.org/selflinux/html/nutzer_unter_linux.html (vor allem Kapitel 5)
      http://aktuell.de.selfhtml.org/artikel/server/linux/index.htm (vor allem Kapitel "Rechte im Dateisystem")

      vielen Dank, da habe ich erstmal zu tun.

      Gruß, Andreas