André Laugks: SAFE MODE und uid

Hallo!

Nach einem Serverumzug bekomme ich folgende Fehlermeldung, wenn ich eine Datei die geuploadet wurde, verschieben möchte.

Die Vorgehensweise ist:

  • Verzeichnis anlegen (hier: 252772001093352042)
  • Datei in das Verzeichnis schieben

-----------------------------------><8-------------------------------
Warning: move_uploaded_file(): SAFE MODE Restriction in effect. The script whose uid is 800 is not allowed
to access /home/www/web10/html/datei_dyn/252772001093352042 owned by uid 48 in /home/www/web10/html/admin/inc/class.upload.php
on line 107
-----------------------------------><8-------------------------------

Mit dieser Fehlermeldung kann ich generel was anfangen. Die Scripte laufen unter apache:apache, da das Verzeichnis dem User apache und der Gruppe apache gehört. Der FTP-User ist web10 und Gruppe ftponly.

1. Nach meinen Recherchen ist das Problem nur zu lösen, wenn das Script das ausgefügt wird auch web10:ftponly gehört oder SAFE MODE deaktiviert wird?

2. Wenn das Verzeichnis apache:apache gehört, wieso gibt es dann mit dem Script class.upload.php Probleme wenn es unter apache:apache läuft?!

3. Nach weiteren Recherchen ist move_uploaded_file() von SAFE MODE ausgeschlossen?!

5. Ich habe schon die Brechstange angesetzt und mal dem Verzeichnis 777 vergeben.

4. Ist der Admin paranoid?

5. Blicke ich was nicht!

MfG, André Laugks

--
L-Andre @ gmx.de
  1. Hi,

    prüfe mal deine UID Breiche, die werden sich bestimmt geändert haben, da Confixx diese je nach Installation unterschiedlich vergibt.

    nice -n 19 chgrp -R ftponly

    sinnvoll ist natürlich nochmal chown -R web10:ftponly drüber laufen zu lassen ;-)

    Safemode und move_upload sollte kein Problem sein solange du einen Pfad angibst in dem du dich bewegen darfst ...

    Gruß,

    Chris

    1. Hallo!

      prüfe mal deine UID Breiche, die werden sich bestimmt geändert haben, da Confixx diese je nach Installation unterschiedlich vergibt.

      Ich habe auf diesem Webserver keinen Adminzugang.

      sinnvoll ist natürlich nochmal chown -R web10:ftponly drüber laufen zu lassen ;-)

      Habe ich über exec() versucht, läuft aber nicht.

      Safemode und move_upload sollte kein Problem sein solange du einen Pfad angibst in dem du dich bewegen darfst ...

      Ok, davon habe ich eben schon gelesen, das man Pfad angeben kann. Das ist aber Problem des Admins.

      MfG, André Laugks

      --
      L-Andre @ gmx.de
      1. Hallo!

        Habe ich über exec() versucht, läuft aber nicht.

        Kann ja auch nicht, weil ich keine SU-Rechte habe, ist mir aber erst danach eingefallen.

        MfG, André Laugks

        --
        L-Andre @ gmx.de
        1. Hi,

          Habe ich über exec() versucht, läuft aber nicht.

          Kann ja auch nicht, weil ich keine SU-Rechte habe, ist mir aber erst danach eingefallen.

          nee, das sollte weniger das Problem sein, denke mal das liegt an deinem SafeMode, diese Funktionen sind damit Standardmässig OFF, bzw beschränkt ;-)

          Gruß,

          Chris

          1. Hallo!

            nee, das sollte weniger das Problem sein, denke mal das liegt an deinem SafeMode, diese Funktionen sind damit Standardmässig OFF, bzw beschränkt ;-)

            Mhh, lese ich auch gerade in der Doku welche Funktionen wie eingeschränkt sind.

            Aber den Besitzer zu ändern ohne SU zu sein wird schwierig werden...

            MfG, André Laugks

            --
            L-Andre @ gmx.de
            1. hi,

              Aber den Besitzer zu ändern ohne SU zu sein wird schwierig werden...

              wie gesagt, wenn du per ftp hochgeladen hast haben die dateien eigentlich auch den user mit dem sie hochgeladen wurden, also in deinem fall web10:ftponly.

              zumindest kenne ich es so, es kann natürlich auch anders sein ;-)

              so jetzt duschen und heia machen ...

              gruß, chris

      2. Hi,

        Ich habe auf diesem Webserver keinen Adminzugang.

        kann man nix machen.

        sinnvoll ist natürlich nochmal chown -R web10:ftponly drüber laufen zu lassen ;-)

        Habe ich über exec() versucht, läuft aber nicht.

        SafeMode eben ;-)

        Aber was anders, wie hast du die Daten auf den Server bekommen ?
        Wenn du nur Userrechte hast müsten doch der User und die Gruppe Automatisch angepasst werden, weil sonst würden die Daten ja erst garnicht dort ankommen, bin mir da jetzt nett sicher ;-)

        Ok, davon habe ich eben schon gelesen, das man Pfad angeben kann. Das ist aber Problem des Admins.

        Glaub nicht ;-)

        upload_tmp_dir

        Denke mal wenn du hier dein Verzeichnis angibst wo du deine Daten zwischen speichern willst sollte es klappen.
        Kommt da wohl auf die Einstellungen an die auf dem Server grade laufen, bzw unter welchen user php läuft.

        Grüße ...

        Chris

        1. Hallo!

          Aber was anders, wie hast du die Daten auf den Server bekommen ?
          Wenn du nur Userrechte hast müsten doch der User und die Gruppe Automatisch angepasst werden, weil sonst würden die Daten ja erst garnicht dort ankommen, bin mir da jetzt nett sicher ;-)

          Alle daten gehören web10:ftponly (User web10, Gruppe ftponly), also der User mit dem ich mich einloge. Nur Verzeichnisse und Dateien die durch die Scripte generiert werden, gehören apache:apache (User apache, Gruppe apache).

          Ok, davon habe ich eben schon gelesen, das man Pfad angeben kann. Das ist aber Problem des Admins.

          Glaub nicht ;-)

          Doch, weil der das in der httpd.conf oder in der php.ini machen muß.

          upload_tmp_dir

          Denke mal wenn du hier dein Verzeichnis angibst wo du deine Daten zwischen speichern willst sollte es klappen.
          Kommt da wohl auf die Einstellungen an die auf dem Server grade laufen, bzw unter welchen user php läuft.

          Muß ich morgen mal probieren. Trotzdem sollte es immer noch das Problem geben, daß die scripte unter einem anderen User laufen und die Verzeichnisse und Dateien das annehmen.

          Da werde ich mal morgen früh drüber nachdenken...

          MfG, André Laugks

          --
          L-Andre @ gmx.de
          1. Doch, weil der das in der httpd.conf oder in der php.ini machen muß.

            siehe: 4.2.4. PHP Skripte abschotten
            http://www.debianhowto.de/howtos/de/webconfig/webconfig_apache.html

            MfG, André Laugks

            --
            L-Andre @ gmx.de
            1. Naja,

              http://www.debianhowto.de/howtos/de/webconfig/webconfig_apache.html

              langsam verliere ich den Überblick ;-)

              php_admin_value upload_tmp_dir /var/www/user1/user1-1.tld/temp

              solche sachen kannst du in den meisten fällen selber per .htaccess setzen, oder der admin setzt dir ein httpspezial.

              ist ganz sicher der schnelle weg, aber mal davon abgesehen das die der neue upload pfad nicht unbedingt weiterhilft ;-)

              wie du schon erkannt hast werden alle daten mit apache:apache in dein verzeichnis geladen das dem user web10:ftp... gehört.

              ganz klar greift hier safemode, was durchaus sinn macht.

              wenn du schnell dein script zum laufen bringen willst setze einen flag:

              <Directory "/home/www/web10/html/">
                php_admin_flag safe_mode Off
              </Directory>

              entweder mittels .htaccess wenn es geht oder lass es von deinem hoster erledigen, wenn er es denn macht ;-)

              ... der richtige weg ist deine scripte anzupassen, also nach dem upload muss nochmal ein script laufen das den user erneut setzt, so das keine konflikte mehr auftretten.

              grüße...

              chris

  2. Hallo André,

    -----------------------------------><8-------------------------------
    Warning: move_uploaded_file(): SAFE MODE Restriction in effect. The script whose uid is 800 is not allowed
    to access /home/www/web10/html/datei_dyn/252772001093352042 owned by uid 48 in /home/www/web10/html/admin/inc/class.upload.php
    on line 107
    -----------------------------------><8-------------------------------

    Mit dieser Fehlermeldung kann ich generel was anfangen. Die Scripte laufen unter apache:apache, da das Verzeichnis dem User apache und der Gruppe apache gehört.

    Nein, die Scripte laufen normalerweise unter der gleichen Benutzerkennung wie der Webserver, da diese von diesem gestarten werden.

    1. Nach meinen Recherchen ist das Problem nur zu lösen, wenn das Script das ausgefügt wird auch web10:ftponly gehört oder SAFE MODE deaktiviert wird?

    Es scheint so, oder du überdenkst dein Programm so, dass es mit den Einschränkungen von Safe Mode klar kommt.

    1. Wenn das Verzeichnis apache:apache gehört, wieso gibt es dann mit dem Script class.upload.php Probleme wenn es unter apache:apache läuft?!

    Das Verzeichnis gehört wahrscheinlich dem FTP-Benutzer, immerhin musst du ja Dateien dahin hochladen können. Das einzige, was sicher ist, dass das Verzeichnis jemand anderem (Dem Benutzer mit der UID 48) als dem Benutzer (UID 800), unter dem das Script ausgeführt wird, gehört.

    1. Nach weiteren Recherchen ist move_uploaded_file() von SAFE MODE ausgeschlossen?!

    Da hast du nich ganz recht, es ist lediglich mit einigen Einschränkungen versehen: http://www.php.net/manual/en/features.safe-mode.functions.php.

    1. Ich habe schon die Brechstange angesetzt und mal dem Verzeichnis 777 vergeben.

    Das bringt nichts, wegen den Einschränkungen, die Safe Mode move_uploaded_file() auferlegt.

    Schöne Grüße,

    Johannes

    --
    Der folgende Satz ist wahr.
    Der vorhergehende Satz ist gelogen.
    ss:| zu:} ls:[ fo:} de:] va:} ch:) sh:( n4:| rl:( br:< js:| ie:{ fl:( mo:}
    1. Hallo!

      Nein, die Scripte laufen normalerweise unter der gleichen Benutzerkennung wie der Webserver, da diese von diesem gestarten werden.

      Ja, den das neu angelegt Verzeichnis gehört apache:apache. Unter apache:apache wird also auch das Script laufen. Deshalb ist mir es im Moment ein wenig unbegreiflich.

      Es scheint so, oder du überdenkst dein Programm so, dass es mit den Einschränkungen von Safe Mode klar kommt.

      Das kann ich nicht überdenken. Es müßen Dateien geuploadet werden. Der Kunde wird sich freuen, wenn ich ihm dieses Feature nehme.

      Das Verzeichnis gehört wahrscheinlich dem FTP-Benutzer, immerhin musst du ja Dateien dahin hochladen können. Das einzige, was sicher ist, dass das Verzeichnis jemand anderem (Dem Benutzer mit der UID 48) als dem Benutzer (UID 800), unter dem das Script ausgeführt wird, gehört.

      Wie schon gesagt, gehört das neu angelegte Verzeichnis apache:apache und nicht web10:ftponly. Verzeichnisse die mit umgezogen sind, gehören web10:ftponly.

      Das bringt nichts, wegen den Einschränkungen, die Safe Mode move_uploaded_file() auferlegt.

      Ja, ich dachte der Hammer macht es... :-)

      MfG, André Laugks

      --
      L-Andre @ gmx.de