Problem bei der Rechtevergabe bei mkdir()

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem bei der Rechtevergabe bei mkdir()

    Hi leute,

    habe ein Problem und zwar will ich in meinem script ein ordner anlegen und danach sofort eine datei uploaden in diesen ordner:

    Code:
    			$old = umask(0);
    			if (mkdir("dateien/".$dir, 0777)) {
        				echo "Das Verzeichnis \"" . $dir . "\" wurde erfolgreich angelegt!<br><br>";
    			} else {
        				echo "Fehler beim Anlegen des Verzeichnisses \"" . $dir . "\"!<br><br>";
    			}
    			umask($old);
    
             		$inputdata = move_uploaded_file($strFileTemp, "./dateien/".$dir."/".$strFileName);
    zuerst hat er die rechte immer auf 755 gesetzt, doch dank der sache mit der umask setzt er nun auch die rechte auf 777 trotzdem ist es nicht möglich eine datei hochzuladen, denn dieser fehler taucht immer wieder auf:

    Warning: move_uploaded_file(): SAFE MODE Restriction in effect. The script whose uid is 678 is not allowed to access /home/www/web16/html/ftp/dateien/A98w69x2T4qzSckmq2Ey owned by uid 33 in /home/www/web16/html/ftp/index.php on line 77


    line77:

    Code:
    $inputdata = move_uploaded_file($strFileTemp, "./dateien/".$dir."/".$strFileName);
    dieser befehl wurde aber schon getestet und funzt!

    weiß nicht wodran es nun noch liegen kann!

    mfg Nok1a

  • #2
    was mir noch auffällt, in meinem ftp programm steht bei ordnern die per mkdir gemacht worden unter gruppe: apache und unter besitzer: 33

    bei ordnern die per ftp gemacht worden sind und mit denen es geht unter gruppe: ftponly und unter besitzer: 678

    mfg Nok1a

    Kommentar


    • #3
      Da hast du die Lösung schon. Bei Dateien/Ordnern die mit php erstellt werden, trägt sich der Server (bei bestimmten Serverkonfigurationen, die du wohl nicht ändern kannst) automatisch als Eigentümer ein. Wenn der Safe-Mode dann eingeschaltet ist, greift einer seiner "Schutzmechanismen", welcher verhindert, dass ein User auf Dateien usw. zugreifen kann welche einem anderen User gehören. Umgehen kannst du das nur indem du die betroffenen Scripte komplett zum Eigentum des Servers machst, sprich Sie einmal per copy() kopierst oder direkt per Upload-Script auf deinen Server lädst.

      Dadurch könnten aber Sicherheitsprobleme entstehen, da diese Dateien dann von allen Usern auf dem Server aufgerufen werden können. Vorausgesetzt der Server ist wiederum schlecht/falsch konfiguriert.

      Kommentar


      • #4
        Mein Server Admin bekommt das ausschalten des SAFE MODE glaub ich nicht so ganz auf die reihe muss also fürs erste das Problem umgehen, nur wie das gehen soll hab ich noch nicht ganz verstanden was genau soll ich kopieren mit copy()?

        mfg
        Zuletzt geändert von Nok1a; 01.11.2005, 13:09.

        Kommentar


        • #5
          Wenn du eine Datei kopierst bzw. neu erstellst macht der Server sich automatisch zum Eigentümer der Datei. Den Umstand kannst du ausnutzen indem du deine ganzen Scripte, welche auf Grund der "Zugriffsverletzungen" nicht richtig laufen, per php kopierst, wodurch der Server zum Eigentümer der Datei wird!

          Code:
          bla.php umbenennen in bla.txt (per ftp) ->
          
          copy(bla.txt, bla.php);
          Jetzt ist bla.php Eigentum des Servers und kann auf alle per php erstellten Dateien und Verzeichnisse zugreifen.
          Der Haken bei der Sache ist nur, dass du mit der neuen bla.php nicht mehr auf die per ftp hochgeladenen Dateien zugreifen kannst!

          /Das ganze musst du dann natürlich in einer separaten php-Datei machen.

          Kommentar


          • #6
            bei:

            Code:
            copy("./".index.txt, "./".index.php)
            kommt immer nur:

            Code:
            Warning: copy(./indextxt): failed to open stream: No such file or directory in /home/www/web16/html/ftp/copy.php on line 3
            mfg

            Kommentar


            • #7


              PHP-Code:

              copy
              ("./index.txt""./index.php"); 
              könnte das Problem beheben.

              Kommentar


              • #8
                tut es leider nicht:

                Code:
                Warning: copy(./index.php): failed to open stream: Permission denied in /home/www/web16/html/ftp/copy.php on line 3
                code:

                Code:
                if(copy("./index.txt", "./index.php"))
                {
                	echo "OK";
                } else {
                	echo "Fehler";
                }

                Kommentar


                • #9
                  Verzeichnissrechte?

                  Kommentar


                  • #10
                    hehe das wars =) waren net auf 777 aber nun hat das script nicht mehr eine fehlermeldung sondern zwei:

                    Code:
                    Warning: mkdir(): SAFE MODE Restriction in effect. The script whose uid is 33 is not allowed to access /home/www/web16/html/ftp/dateien owned by uid 678 in /home/www/web16/html/ftp/index.php on line 91
                    Fehler beim Anlegen des Verzeichnisses "2YsaYSF9p36T4zNeaNGB"!
                    
                    
                    Warning: move_uploaded_file(): SAFE MODE Restriction in effect. The script whose uid is 33 is not allowed to access /home/www/web16/html/ftp/dateien owned by uid 678 in /home/www/web16/html/ftp/index.php on line 98
                    Beim Hochladen der Datei ist ein Fehler aufgetreten!
                    mfg

                    Kommentar

                    Lädt...
                    X