Andreas Lindig: Verzeichnisse anlegen und zugreifen

Hallo Forum,

ich habe eine Funktion, die Dateien schreibt/ändert und ggf. eben neu anlegt, wenn sie noch nicht vorhanden sind. Schön. Jetzt habe ich die Klasse erweitert, so daß auch ein fehlendes Verzeichnis mit mkdir() angelegt wird. Aber ich kann auf diese Verzeichnisse nicht zugreifen. Da kommt immer ein Fehler wg. Safe-Mode. Kann man da was machen?

Meine Recherche hat ergeben,daß der Besitzer des Scripts der gleiche sein muß, wie der Besitzer der vom Script zu bearbeitenden Datei. Wie immer verstehe ich diesen Linux-Kram[tm] nicht. Wie mache ich denn die Besitzer gleich - bzw. es soll einfach nur funktionieren ;-)

Gruß, Andreas

--
SELFFORUM - hier werden Sie geholfen,
auch in Fragen zu richtiges Deutsch
  1. Du setzt vor mkdir
    $oldmask=umask(0);

    1. Hallo,

      Du setzt vor mkdir
      $oldmask=umask(0);

      hmm... die Beschreibung zu umask() in der Doku ist sehr mager. Es hat jedenfalls genau _keine_ Auswirkung bei mir. Es steht da jetzt folgendes:

      $olsmask = umask(0);
      return mkdir($this->verzeichnis);

      meintest Du das so? Das Verzeichnis wird nach wie vor angelegt, das Script darf aber nicht drauf zugreifen (sehr logisch... ;-)

      Gruß, Andreas

      --
      SELFFORUM - hier werden Sie geholfen,
      auch in Fragen zu richtiges Deutsch
      1. Hello,

        hmm... die Beschreibung zu umask() in der Doku ist sehr mager. Es hat jedenfalls genau _keine_ Auswirkung bei mir. Es steht da jetzt folgendes:

        umask() ist auch der falsche Weg, da es die Zugriffsrechte per Datei und nicht per User regelt. Hier müsste aber ein chown() durchgeführt werden, dass aber nur 'root' durchführen darf. Der Admin könnte auch die Default-Group entsprtechend schklauneunstellen, dann ginge es auch. Das lässt sich aber schwer verwalten.

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

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. ich kann nicht glauben, daß das so kompliziert sein soll. Dann ist doch so eine Funktion wie mddir im Grunde zunächst mal nutzlos. Was soll das in PHP?

          Gruß, Andreas

          --
          SELFFORUM - hier werden Sie geholfen,
          auch in Fragen zu richtiges Deutsch
          1. Heißa, Andreas,

            ich kann nicht glauben, daß das so kompliziert sein soll. Dann ist doch so eine Funktion wie mddir im Grunde zunächst mal nutzlos. Was soll das in PHP?

            Ich hatte dasselbe Problem bei meinem alten Provider. mkdir hat Verzeichnisse als wwwrun angelegt und durfte dann nicht mehr darauf zugreifen, weil ich ja einen anderen Benutzernamen hatte. Nach einer Mail an den Provider hat der das Problem (zwar unzureichend, aber immerhin) behoben.

            Da ich noch die Möglichkeit dazu hatte, habe ich schnell den Provider gewechselt, und bin jetzt bei einem, bei den PHP wirklich unter meinem Benutzernamen läuft und auch dort Verzeichnisse anlegt.

            Caramba!
            Grüße aus Biberach Riss,
            Candid Dauth

            --
            „Versuche niemals, dein Ansehen auf Kosten der Vernunft zu steigern.“ | Mein SelfCode
            http://cdauth.de/
            1. Hallo,

              Da ich noch die Möglichkeit dazu hatte, habe ich schnell den Provider gewechselt, und bin jetzt bei einem, bei den PHP wirklich unter meinem Benutzernamen läuft und auch dort Verzeichnisse anlegt.

              hm... ich schreib dem mal. Die sind eigentlich ganz hilfsbereit. Mal seh'n.

              Gruß, Andreas

              --
              SELFFORUM - hier werden Sie geholfen,
              auch in Fragen zu richtiges Deutsch
            2. Hello,

              Ich hatte dasselbe Problem bei meinem alten Provider. mkdir hat Verzeichnisse als wwwrun angelegt und durfte dann nicht mehr darauf zugreifen, weil ich ja einen anderen Benutzernamen hatte. Nach einer Mail an den Provider hat der das Problem (zwar unzureichend, aber immerhin) behoben.

              Wenn Ihr Euch konsequent an meinen Vorschlag halten würdet, hättet Ihr solche Probleme gar nicht erst.

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

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau
  2. Hello,

    schau Dir mal die Beschreibung unter http://selfhtml.bitworks.de --> Wie funktioniert der Safe_mode an. Dort habe ich eine Vorgehensweise beschrieben.

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

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hi Tom,

      schau Dir mal die Beschreibung unter http://selfhtml.bitworks.de --> Wie funktioniert der Safe_mode an. Dort habe ich eine Vorgehensweise beschrieben.

      hmm... sehr interessante Ausführungen, aber ist diese Verdopplungsstrategie denn nicht ein Bisschen Zombiemäßig? Mein Ziel ist ja, ein Script ohne seine temporären Dateien auf den Webspace zu kopieren und da soll es dann direkt laufen und sich nötige Dateien/Verzeichnisse selbst anlegen. Meinst Du, ich sollte da eine Selbstgebärautomatik mit einbauen?

      Und verstanden habe ich ja auch nicht, warum mein Script denn nun mit Dateien funktioniert, aber nicht mit Verzeichnissen. Habe ich da nicht die gleiche Inhaber-Diskrepanz?

      Gruß, Andreas

      --
      SELFFORUM - hier werden Sie geholfen,
      auch in Fragen zu richtiges Deutsch
      1. Hello,

        hmm... sehr interessante Ausführungen, aber ist diese Verdopplungsstrategie denn nicht ein Bisschen Zombiemäßig? Mein Ziel ist ja, ein Script ohne seine temporären Dateien auf den Webspace zu kopieren und da soll es dann direkt laufen und sich nötige Dateien/Verzeichnisse selbst anlegen. Meinst Du, ich sollte da eine Selbstgebärautomatik mit einbauen?

        Wenn man sich einmal einen Upload-Mechanismus per PHP schafft, gibt's da keine Verdoppelung mehr. Das wäre allerdings mMn die Aufgabe eines Providers, der den Safe_Mode einsetzt. Der sollte auch das passende Uoloadscript (bei mir unter Bestellnummer 0815xyz@bitworks.web erhältlich *gg*) bereitstellen.

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

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Wenn man sich einmal einen Upload-Mechanismus per PHP schafft, gibt's da keine Verdoppelung mehr.

          ja wie, Du hast online ein Script liegen, das die relvanten Scripte kopiert und das jeweilige Ausgangscript löscht?

          Das wäre allerdings mMn die Aufgabe eines Providers, der den Safe_Mode einsetzt.

          Ich kann Safe_mode auch abstellen, aber was handle ich mir damit ein?

          Gruß, Andreas

          --
          SELFFORUM - hier werden Sie geholfen,
          auch in Fragen zu richtiges Deutsch
          1. Hello,

            ja wie, Du hast online ein Script liegen, das die relvanten Scripte kopiert und das jeweilige Ausgangscript löscht?

            Nein, ich biete ein Upload-Script an.
            Wenn man das statt FTP benutzt, gehören automatisch alle Dateien dem Webserver-Deamon und der Gruppe des Users. Andere habe keine Rechte.

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

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            1. Nein, ich biete ein Upload-Script an.

              ja, daß Du mir was _verkaufen_ willst, habe ich schon gemerkt. Ich will aber wissen, wie es geht ;-) Ich habe gerade Deine Methode mit dem kopieren des Scripts auf dem Server probiert - geht nicht! (Das kopieren schon, aber die Zugriffsrechte fehlen dem neuen Script genauso)

              Gruß, Andreas

              --
              SELFFORUM - hier werden Sie geholfen,
              auch in Fragen zu richtiges Deutsch
              1. Hello,

                ja, daß Du mir was _verkaufen_ willst, habe ich schon gemerkt. Ich will aber wissen, wie es geht ;-)

                Und? Hast Du schon überwiesen? ;-)

                Ich habe gerade Deine Methode mit dem kopieren des Scripts auf dem Server probiert - geht nicht! (Das kopieren schon, aber die Zugriffsrechte fehlen dem neuen Script genauso)

                Wenn Du das konsequent machst, fehlt dem neuen Script eigentlich gar nichts.

                Als Owner wird der Webserver eingetragen.
                Der darf dann auch die Zugriffsrechte für U-G-O festlegen.
                Dazu benötigt man dann chmod() und chgrp()
                Allerdings wird als Gruppe voraussichtlich die des Webservers benutzt und er ist i.d.R. bei den üblichen Providern in keiner weiteren, die mit dem Eigentümer des Hosts korellieren würde.

                Man kann in dem Kopierscript sonst auch umask() verwenden, um gleich die passenden Rechte für U-G-O zu erzeugen.

                Die Verzeichnisse und Dateien, auf die solch ein Script zugreifen soll, müssen natürlich entweder von diesem Script selber erzeugt worden sein, oder auf die gleiche Weise hochgeladen worden sein.

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

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau
                1. Man kann in dem Kopierscript sonst auch umask() verwenden...

                  "kann man...", ich habe das Gefühl, da kommt immer was Neues dazu. Bei mir funktioniert es nicht. Fände es hilfreicher, wenn Du ein funktionierendes Beispiel zeigen würdest, in dem eine Datei kopiert wird und dann Verzeichnisse anlegt und darauf zugreifen darf.

                  Oder gleich schreibst, daß es bei Dir nur gegen Bezahlung zu haben ist. Dann aber bitte den Preis und die _Garantiebedingungen_ nennen. Damit man nicht bei nichtfunktionieren wieder auf "kann man"-probieren angewiesen ist, sondern sich sein Geld zurückholt und dafür schön Eisessen geht :-)

                  Gruß, Andreas

                  --
                  SELFFORUM - hier werden Sie geholfen,
                  auch in Fragen zu richtiges Deutsch
                  1. Hello,

                    "kann man...", ich habe das Gefühl, da kommt immer was Neues dazu. Bei mir funktioniert es nicht. Fände es hilfreicher, wenn Du ein funktionierendes Beispiel zeigen würdest, in dem eine Datei kopiert wird und dann Verzeichnisse anlegt und darauf zugreifen darf.

                    Das Document auf http://selfhtml.bitworks.de --> wie funktioniert der Safe_Mode erklärt das ausführlich und in ganz kleinen Schritten. Das Mitdenken kann ich Dir aber nicht abnehmen.

                    Oder gleich schreibst, daß es bei Dir nur gegen Bezahlung zu haben ist.

                    Was soll denn dieser Blödsinn nun wieder?

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

                    Tom

                    --
                    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                    Nur selber lernen macht schlau
  3. Hello Andreas,

    ich bin nicht beleidigt... ;-)
    Mir scheint eher, dass Du aber beratungsresistent bist.
    Allerdings wollte ich deinen neuen Thread zum Thema "Safe_Mode" nicht noch unnötig verlängern. Er wird ja ohnehin gelöscht werden *gg*

    Um auf Deine ergänzende Frage einzugehen:

    Solange man auf einem Server davon ausgehen kann, dass alle Virtual Hosts in PHP mit einem open_basedir eröffnet werden und die User auch keine geteilten Verzeichnisse haben (Tmp-Dir, Upload-Dir) und auch andere Einrichtungen nicht grenzübergreifend arbeiten können, halte ich den Safe_Mode für überflüssig ABER => [1].

    Da aber PHP für Multiuserumgebungen (Virtual Hosts) eigentlich einen Designfehler hat (es fehlt eben ein sinnvoller Mechanismus, um den Prozess als Eigentümer des Virt-Hosts zu starten).

    [1] Der Safe_Mode regelt allerdings noch mehr Dinge, als nur die Benutzungsrechte für Scripte und Dateien. Er regelt auch die Einschränkung aller kritischen Funktionen. So kann  man z.B. kein system() oder exec() mehr benutzen, wenn der Safe Mode aktiv ist. Es wäre sonst nämlich sinnlos, das open_basedir zu setzen. Ich habe das hier im Forum übrigens mit Anderen zusammen alles schon mal ausfühlich durchgekaut. Wie haben soger versuche gemacht zum Thema und hier beschrieben. Du müsstest die Spuren also bei sinnvoller Verwendung der Forumssuche finden können.

    Oder ist die Suche Dir durch den Safe_Mode verwehrt? *gg*

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

    Tom

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