rob: verzeichnisrechte, upload,

hi, bin nun schon stunden auf der suche nach einer lösung, aber habe noch
nix passendes gefunden...

folgendes:

eine datei soll per formular auf den server hochgeladen werden. dies klappt
wenn ich die rechte des zielverzeichnisses über ftp auf 777 setze, soweit so
gut.

jedoch sollen nun die dateien dieses verzeichnis nur von bestimmten
benutzern aus einer mysql-datenbank online eingesehen werden können, sprich
man loggt sich ein und kann nun diese dateien anschauen/downloaden (oder
eigene hochladen)...

meine frage:
kann ich die rechte des verzeichnisses irgendwie temporär über meine
php-skripte steuern?
hab schon
chmod ("xyz/xyz/verzeichnis" , 0777);
ausprobiert, bekomme aber nur ein "Operation not permitted" zurück.
(datei-rechte kann ich nicht mal über ftp ändern).

oder gibt es was anderes schlaues, wie ich meine
session/datenbank-user-daten mit den dateizugriffen verknüpfen kann?

hatte an ftp gedacht, da ich mich dann ja als superuser einlogge und
volle rechte hab auch wenn gruppen/public keine haben...

thx
rob

  1. Moin!

    kann ich die rechte des verzeichnisses irgendwie temporär über meine php-skripte steuern?

    Ja. Informiere Dich über den system()- Befehl. Sei Dir dabei gegenwärtig, daß der "Benutzer" derjenige ist, unter dem der Apache läuft. Dem sollten die Dateien auch gehören.

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Meinereinerselbst ist auf der Suche nach Aufträgen
    1. Ja. Informiere Dich über den system()- Befehl. Sei Dir dabei gegenwärtig, daß der "Benutzer" derjenige ist, unter dem der Apache läuft. Dem sollten die Dateien auch gehören.

      äh, konnte ausm php-manual nicht allzu viel darüber rausziehen, kannst du das nicht etwas näher beschreiben, speziell die sache mit dem benutzer?

      thx

      1. Moin!

        Der Server wird als Demon gestartet. Das ist eine sehr nette Angelegenheit: aber "wer" startet ihn? Unter Windows ist das gefährlicherweise per default das "System". Dies führt dazu, daß der Apache mehr Rechte hat als der Admin... Ein Skript kann zum Beispiel net stop wasweisich ausführen. Bei einem PHP- Skript wäre das system("net stop telnet").

        Unter Linux musst Du mal nachschauen: meist ist es der "user" "wwwrun" (SuSE), der den Apache ausführt. Da PHP häufig als Modul ausgeführt wird (unter anderem daran zu erkennen, dass für PHP-Skripte das Ausführungsrecht nicht gestzt werden muss, für Perl wohl...) ist es der Apache, also "wwwrun", der die PHP- Skripte ausführt. Wenn dieser jetzt keine Schreib/oder Leserechte an der Datei hat, dann gibts die genannten Probleme. Es reicht also nicht, mit chmod 777 die Rechte für's Verzeichnis zu setzen, Du musst auch mit system("chmod xxx /pfad/datei") die Dateirechte setzen.

        Was die system()- Funktion macht findest Du unter:
        http://de.php.net/manual/de/function.system.php

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix®

        --
        Meinereinerselbst ist auf der Suche nach Aufträgen
        1. Moin!

          Ach so... da jeder, der Dateien uploaden kann auch PHP- oder Perl- Skripte draufspielen könnte musst Du natürlich ein wenig aufpassen:
          Diese dürfen in dem Verzeichnis nicht ausgeführt werden und(am besten) / oder die Dateinamen .* (.htaccess, .htuser, versteckte dateien ...), *.pl *.php *.cgi *.sh würde ich verbieten. Das muss dann dein Uploadscript ausfiltern.

          MFFG (Mit freundlich- friedfertigem Grinsen)

          fastix®

          --
          Meinereinerselbst ist auf der Suche nach Aufträgen