Fabian: Welche Rechte für das Apache-Verzeichnis?

Hi!

Ich habe für mein Apache-Verzeichnis /var/www/htdocs und /var/www/uploads als root per chmod 777 gesetzt, da ich nicht genau weiß, welche Rechte die darin liegenden PHP-Dateien so brauchen. Ist das denn überhaupt schlimm, wenn ich soviele Rechte gesetzt habe? Oder einfach unnötig, aber nicht weiter erwähnenswert? Wie sieht es da mit Exploits (gerade im Month of PHP Bugs...) aus?

  1. Hello,

    Ich habe für mein Apache-Verzeichnis /var/www/htdocs und /var/www/uploads als root per chmod 777 gesetzt, da ich nicht genau weiß, welche Rechte die darin liegenden PHP-Dateien so brauchen. Ist das denn überhaupt schlimm, wenn ich soviele Rechte gesetzt habe? Oder einfach unnötig, aber nicht weiter erwähnenswert? Wie sieht es da mit Exploits (gerade im Month of PHP Bugs...) aus?

    Der Apache wird i.d.R. unter root gestartet. Er spaltet dann aber einen Prozess unter einem User ab, der in der httpd.conf eingestellt wird. Dieser erzeugt dann bei Bedarf die Instanzen für die Abarbeitung der Requests.

    Wenn Du also konsequent einrichten willst, dann sollte nur dieser Prozess auf seine Verzeichnisse vollen Zugriff haben. Root kann sie sich ja jederzeit bei Bedarf verschaffen, sollte aber für Sicherungszwecke, Suchen etc überall Browse- und Leserechte haben. Others benötigen eigentlich keinen Zugriff.

    "Out of the Box" sind die Systeme aber meistens

    root   root   ????
       rwx    r-x    r-x

    eingerichtet.

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

    1. hallo Tom,

      Der Apache wird i.d.R. unter root gestartet.

      Nein, nicht "in der Regel", sondern grundsätzlich. Das spielt aber keine Rolle.

      Er spaltet dann aber einen Prozess unter einem User ab, der in der httpd.conf eingestellt wird. Dieser erzeugt dann bei Bedarf die Instanzen für die Abarbeitung der Requests.

      Das ist keine "Abspaltung", sondern ein zweiter Prozeß.

      Wenn Du also konsequent einrichten willst, dann sollte nur dieser Prozess auf seine Verzeichnisse vollen Zugriff haben.

      Nein. Bei mir ist der "Benutzerprozeß" beispielsweise "www", aber die DocumentRoot gehört "root". Es geht nicht um die Besitzverhältnisse, sondern um die Rechte insgesamt. Und da ist 777 viel zu "viel". Die Verzeichnisse unterhalb der DocumentRoot sollten bestenfalls auf 644 gesetzt werden. Einzelnen Scripts, die Ausführungsrechte benötigen, kann man ja unabhängig von den für das Gesamtverzeichnis geltenden Rechten dann noch 755 verpassen. Das dürfte in aller Regel völlig ausreichen.

      Grüße aus Berlin

      Christoph S.

      --
      Visitenkarte
      ss:| zu:) ls:& fo:) va:) sh:| rl:|
  2. Ich grüsse den Cosmos,

    Ich habe für mein Apache-Verzeichnis /var/www/htdocs und /var/www/uploads als root per chmod 777 gesetzt, da ich nicht genau weiß, welche Rechte die darin liegenden PHP-Dateien so brauchen. #

    Faustregel: Ordner 755, Dateien 644

    Ist das denn überhaupt schlimm, wenn ich soviele Rechte gesetzt habe?

    Naja, damit ermöglichst du, das jeder diesen Ordner lesen und schreiben kann. Ich würde das nicht wollen, da ich nie wissen kann, ob ein Kunde mal was böses will.

    Oder einfach unnötig, aber nicht weiter erwähnenswert? Wie sieht es da mit Exploits (gerade im Month of PHP Bugs...) aus?

    Jeder baut sich seine Sicherheitslücken anders ;)

    Möge das "Self" mit euch sein

    --
    Neulich dachte ich mir, einmal S/M ausprobieren wäre eine tolle Erfahrung. Also hab ich Windows gebootet ...
    ie:{ br:> fl:| va:| ls:& fo:{ rl:( n4:{ de:] ss:) ch:? js:| mo:) sh:( zu:)
    1. hallo,

      Faustregel: Ordner 755, Dateien 644

      Andersherum: Verzeichnisse 644, Scripts nötigenfalls 755.

      Grüße aus Berlin

      Christoph S.

      --
      Visitenkarte
      ss:| zu:) ls:& fo:) va:) sh:| rl:|
      1. hallo,

        Faustregel: Ordner 755, Dateien 644

        Andersherum: Verzeichnisse 644, Scripts nötigenfalls 755.

        Bekommt man dann nicht ein Problem, wenn man mal per Konsole was macht? Afaik müssen Verzeichnisse Ausführenrechte haben, damit man in sie wechseln kann.

        Gruß

        Stareagle

      2. echo $begrüßung;

        Faustregel: Ordner 755, Dateien 644
        Andersherum: Verzeichnisse 644, Scripts nötigenfalls 755.

        644 = rw-r--r--
        755 = rwxr-xr-x

        Warum willst du den Verzeichnissen nicht das Recht gönnen, in sie hineinwechseln zu können (x)?

        "Scripts" ist viel zu allgemein formuliert, auch das "nötigenfalls" klärt nicht darüber auf, wann sich nun diese Notwendigkeit ergibt.

        echo "$verabschiedung $name";

        1. Hello,

          644 = rw-r--r--
          755 = rwxr-xr-x

          Warum willst du den Verzeichnissen nicht das Recht gönnen, in sie hineinwechseln zu können (x)?

          ... sie in den Pfad aufnehmen zu dürfen wäre besser formuliert.

          Wenn man dediziert angegebene Dateien benutzen können soll, aber nicht unbedingz die Verzeichnisse auslesen können soll.

          Dann reicht bei den Verzeichnissen --x
                      bei Dateien            r--

          Wenn man auch noch schreiben soll  rw-
          und bei Verzeichnissen, wenn
          man Dateien anlegen können soll    -wx

          Das nur, um die minimalistischen Einstellungen auch mal genannt zu haben.

          Harzliche Grüße vom Berg
          http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau

      3. Ich grüsse den Cosmos,

        Andersherum: Verzeichnisse 644, Scripts nötigenfalls 755.

        Dann wirst du ziemlich gar nichts mehr machen können. Du nimmst den Verzeichnissen, wie schon erwähnt, die nötigen Rechte.
        Und ein Script braucht nur 755, wenn es als CGI o.ä. ausgeführt wird. Also PERL, Python usw. PHP braucht nur 644, wenn PHP als CGI läuft, reicht meist sogar 600

        Möge das "Self" mit euch sein

        --
        Neulich dachte ich mir, einmal S/M ausprobieren wäre eine tolle Erfahrung. Also hab ich Windows gebootet ...
        ie:{ br:> fl:| va:| ls:& fo:{ rl:( n4:{ de:] ss:) ch:? js:| mo:) sh:( zu:)
        1. hallo,

          Andersherum: Verzeichnisse 644, Scripts nötigenfalls 755.
          Dann wirst du ziemlich gar nichts mehr machen können. Du nimmst den Verzeichnissen, wie schon erwähnt, die nötigen Rechte.

          Nein. Aber mir scheint da im Thread bisher ein Verständigungsproblem vorzuliegen. Nämlich:

          • welche Rechte braucht jemand, der über HTTP (und damit Apache) etwas geliefert bekommen möchte?
          • welche Rechte braucht der Serveradmin, der sich unmittelbar am Serverrechner eingeloggt hat?

          Der Apache selbst (und damit der "user", der den Apache anfragt) braucht eben wirklich nur 644.
          Der Serveradmin braucht dann, wenn er als root eingeloggt ist, gar keine besonderen Rechte. Er hat alle. Wenn er sich aber mit einem am System gültigen usernamen einloggt, wird es etwas problematischer. Dann "greifen" auch Rechtevorgaben für Verzeichnisse - aber für die online-(Internet-)Kommunikation spielt das keine Rolle.

          Und ein Script braucht nur 755, wenn es als CGI o.ä. ausgeführt wird

          Ja, deshalb habe ich "nötigenfalls" angegeben. Wichtig war/ist mir der Hinweis, daß einzelne Dateien in einem Verzeichnis durchaus über andere Rechte verfügen können als das Verzeichnis selbst.

          Grüße aus Berlin

          Christoph S.

          --
          Visitenkarte
          ss:| zu:) ls:& fo:) va:) sh:| rl:|