Daniel: Selbst angelegte Dateien nicht löschbar?

Hallo!

Hat irgendwer von euch auch schon einmal das Problem gehabt, dass er die selbst erstellten Dateien am Server nicht löschen kann? Es kommt immer der sinnlose Safe_Mode Fehler (der ist natürlich aktiviert :( ), aber das kann doch nicht sein, wenn ich mittels eines Scriptes eine Datei schreib und 10 Zeilen später wieder lösche???

Warning: unlink(): SAFE MODE Restriction in effect. The script whose uid is 835 is not allowed to access /home/www/web66/html/verwaltung/site_structure/tmp_img/b52033a34e99257ecf9ac6495c910477_small.jpg owned by uid 30 in /home/www/web66/html/verwaltung/includes/file_functions.inc on line 127

Hier spricht er von 2 verschiedenen UID's, aber wieso???

Gruss,
Daniel

  1. hi, ist dein provider GIWEB? wenn ja, alles klar!!

    naja, egal, muss wohl daran liegen, das die datei von nem php script erstellt wurde, also der benutzer der webserver ( uid 30  ) ist und dein ftp browser ist nunmal nicht der webserver. wäre zumindest meine vermutung.

    ronny

    1. Hallo Ronny,

      hi, ist dein provider GIWEB? wenn ja, alles klar!!

      Nein mein Provider ist Rhs-It, ist aber auch nicht besonders

      naja, egal, muss wohl daran liegen, das die datei von nem php script erstellt wurde, also der benutzer der webserver ( uid 30  ) ist und dein ftp browser ist nunmal nicht der webserver. wäre zumindest meine vermutung.

      Ich erstelle ja die Datei in Script und das Script soll es auch gleich wieder löschen, das ist ja das unverständliche daran.

      Gruss,
      Daniel

    2. Hallo,

      naja, egal, muss wohl daran liegen, das die datei von nem php script erstellt wurde, also der benutzer der webserver ( uid 30  ) ist und dein ftp browser ist nunmal nicht der webserver. wäre zumindest meine vermutung.

      Du hast schlecht gelesen.
      Er will die Datei nicht via FTP loeschen, sondern ebenfalls mit einem PHP-Skript.
      Und es waere eben zu erwarten, dass ein PHP-Skript eine Datei, die es selbst
      erzeugt hat (und von der "es"/PHP bzw. der Webserver, mit dem es die UID teilt,
      der Owner ist) wieder loeschen kann.

      Gruesse,

      Thomas

      1. hi,

        Du hast schlecht gelesen.

        *augenreib*

        *ins bett geh*

        ja sorry, hast recht ;)

        ciao

        ronny

      2. Hello,

        Und es waere eben zu erwarten, dass ein PHP-Skript eine Datei, die es selbst
        erzeugt hat (und von der "es"/PHP bzw. der Webserver, mit dem es die UID teilt,
        der Owner ist) wieder loeschen kann.

        Nein.
        Das File oder Directory wird IMMER unter der UID des Webservers angelegt. Solange damit nichts kaputt gemacht wird, darf das jedes Script. Das Löschen des Files und eigentlich auch das Lesen und Schreiben darin mit neuem Handle darf aber nur ein Script, dass dem Webserver gehört. Da ein Ownerwechwel nur von rot vorgenommen werden darf, kann man eigentlich nur versuchen SafeModeGID zu aktivieren und sich mit einem Gruppenwwechsel des Files zu behelfen. Der Webserver und der Owner des Scriptes müssten dann eine gemeinsame Gruppe haben.

        Grüße

        Tom

  2. Hello,

    das scheint ganz einfach zu sein:

    Beim Erzeugen von Dateien gehören diese IMMER dem PHP-Core, also bei Dir dem User 30. Das ist ganz egal, wem das Script gehört. Du kannst versuchen, im Script die Gruppe der Datei zu wechseln.

    Beim Löschen von Dateien greift dann der SafeMode. Wenn das Script nun aber User 835 gehört, dann darf dieses Script die Datei nicht wieder löschen. Es ist ja wahrscheinlich ein anderes Handle dafür angefordert worden.

    Wenn Du nicht die Entschärfung SafeModeGID aktiviert hast, beißt Du Du Dir an dem Konzept die Zähne aus. Du müsstest alle "zertifizierten" Scripte an User 30 übertragen (chown). Das darf aber nur Root. Ggf.

    Wenn Du SafeModeGID = ON hast, dann reicht es, die Gruppe der Scripte an den die Gruppe des Users 30 zu übertragen. Das müsstest auch Du dürfen, wenn Du ebenfalls in der Gruppe bist.

    Grüße

    Tom

    1. Hallo Tom

      Beim Erzeugen von Dateien gehören diese IMMER dem PHP-Core, also bei Dir dem User 30. Das ist ganz egal, wem das Script gehört. Du kannst versuchen, im Script die Gruppe der Datei zu wechseln.

      Beim Löschen von Dateien greift dann der SafeMode. Wenn das Script nun aber User 835 gehört, dann darf dieses Script die Datei nicht wieder löschen. Es ist ja wahrscheinlich ein anderes Handle dafür angefordert worden.

      Wenn Du nicht die Entschärfung SafeModeGID aktiviert hast, beißt Du Du Dir an dem Konzept die Zähne aus. Du müsstest alle "zertifizierten" Scripte an User 30 übertragen (chown). Das darf aber nur Root. Ggf.

      Wenn Du SafeModeGID = ON hast, dann reicht es, die Gruppe der Scripte an den die Gruppe des Users 30 zu übertragen. Das müsstest auch Du dürfen, wenn Du ebenfalls in der Gruppe bist.

      Danke für die Antwort, jetzt weiss ich wenigstens einmal _wieso_ das nicht funktioniert :) .
      Aber leider ist bei mir die SafeModeGID auf OFF, also kann ich warscheinlich nur mit dem Provider reden, damit er mir wenigstens diese Funktion einschaltet.

      Noch eine kurze Frage bitte: Wie bekomme ich die zu meinem Skript zugehörige Gruppe heraus? In den Funktionen habe ich nur Methoden gefunden, die die UID's und Gruppen von gespeicherten Objekten auslesen, da das aber eh immer der wwwrun ist weiss ich nicht welche das Skript dann hat?

      Grüsse,
      Daniel

      1. Hello,

        Noch eine kurze Frage bitte: Wie bekomme ich die zu meinem Skript zugehörige Gruppe heraus? In den Funktionen habe ich nur Methoden gefunden, die die UID's und Gruppen von gespeicherten Objekten auslesen, da das aber eh immer der wwwrun ist weiss ich nicht welche das Skript dann hat?

        Das beste wäre ein ssh-Zugang zum Server. Dann hast Du ja eine Konsole ("Terminalfenster") und kannst versuchen auch root-Befehle zu nutzen. Vielleicht hast Du ja eine Root-Shell.

        Ich habe nun angenommen, es ist Linux.

        Da gib mal ein

        #>groups --help

        Grüße

        Tom