Dateien löschen geht, Ordner löschen geht nicht

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

  • Dateien löschen geht, Ordner löschen geht nicht

    Dateien konnte ich ohne Probleme via unlink() löschen.
    Nun wollte ich, die dadurch leer gewordenen Ordner mit rmdir löschen, bekomme jedoch die Nachricht nicht genügend Rechte zu besitzen.

    erstellt wurde der zu löschende Ordner mit mkdir ( Ordner, 0777), müsste also volle schreibrechte haben, bekomme dennoch die Fehlermeldung:

    Permission denied...



    Kann mir jemand helfen ?





    ______________________________
    benutze xampplite auf nem windows pc

  • #2
    Zeig bitte den relevanten Code und die vollständige Fehlermeldung.

    Kommentar


    • #3
      PHP-Code:
      $path "gal/".$_POST["gdelete"];            
      $verzeichnis opendir($path);   
         if(!
      $verzeichnis) die("Kann Verzeichnis $path nicht öffnen");
                  
      rewinddir($verzeichnis);  
        while(
      $file readdir($verzeichnis)) {  
                if(
      $file != "." and $file != "..") {
                  
      unlink($path."/".$file);
                 }
        }
                  
      rmdir($path);   // Line 24 
      Fehlermeldung:
      rmdir(gal/test) [function.rmdir]: Permission denied in ..edit.inc.php on line 24

      Kommentar


      • #4
        1. Sag mir die URL zu diesem Script und ich lösche deine gesamte Festplatte. Denk mal drüber nach!
        2. Wenn du alle Dateien in einem Ordner gelöscht hast, muss er noch lange nicht leer sein.
        3. closedir()

        Kommentar


        • #5
          zu. 3 )erst mal danke hab gar nicht mehr dran gedacht mein geöffnetes verzeichnis wieder zu schließen, thx.

          zu 2) in diesem Fall war sicher nichts mehr im Ordner drin (weder versteckt noch sonst was und Ordner hatte genau 0 byte)

          zu 1) Bin leider noch nicht so vertraut mit der Materie, Wäre dir echt dankbar, wenn mir sagst, warum ein so starkes Gefahrenpotenzial vorhanden ist?

          Kommentar


          • #6
            Dein Script löscht den Unterordner von gal, den man ihm via POST-Formular mitteilt. Nun kann sich aber jeder ein POST-Formular bauen, das die Daten an dein Script schickt. Ich auch. Und ich kann darin ein Eingabefeld namens gdelete mit dem Wert "../../../../../../" ausfüllen.

            Dann setzt dein Script $path auf "gal/../../../../../../", was höchstwahrscheinlich "/" entsprechen dürfte und damit eine gesamte Linuxplatte löscht.

            Klar kannst du jetzt behaupten, dass der Webserver oberhalb von gal gar kein Schreibrecht hat. Aber du kannst auch einfach realpath() oder str_replace() nutzen, um diese Gefahr zu umschiffen.

            Kommentar


            • #7
              Also schließe ich daraus, dass in diesem Fall "POST" schlecht ist? Wie kann man das Problem denn dann anschaulich lösen? wenn nicht mit Post?

              Thx

              k hat sich erledigt... mit realpath sagtest du ja... und dann kann nix mehr schief gehn ?
              Und kannst du mir bitte noch die Methode mit str_replace genauer erläutern`?
              Zuletzt geändert von sypr0; 13.05.2007, 20:36.

              Kommentar


              • #8
                POST kannst du benutzen, aber die Eingabe vor dem Ausführen prüfen. zB. Ob darin ".." enthalten ist.
                EDIT: Hat sich dann ja auch erledigt. Weiß auch nicht ob das die beste Methode gewesen wäre, aber immerhin ist es eine :P


                Achja, eigentlich könnte die Platte nicht gelöscht werden weil die entsprechenden Rechte dafür fehlen. Das ist aber kein Grund die Sicherheitslücke nicht zu beachten.

                Click
                Du kannst jeden Tag wie deinen letzten leben, du musst nur jeden Tag das Gleiche tun.

                Denk' mal drüber nach!

                Kommentar

                Lädt...
                X