Yo!
Irgendwie habe ich mich wohl etwas zu weit aus dem Fenster gelehnt :-)
Aber verstehen tue ich das nicht. Wenn ich per FTP eine Datei anlege, kann ich die per unlink() löschen wie ich lustig bin! Oder geht es darum, das Du eine Datei löschen willst, die gerade benutzt wird, und so wie auch immer schreibgeschützt ist? Aber wobei passiert sowas?
Dir wird nicht entgangen sein, daß es unter Unix/Linux für jede Datei einen Besitzer und eine Gruppe gibt, zu denen die Datei gehört, und für die drei "Elemente" Besitzer, Gruppe und "Rest der Welt" die drei Dateirechte "lesen", "schreiben" und "ausführen" separat vergeben werden können.
Wenn man also per FTP unter dem Benutzer "ftpuser" eine Datei anlegt, wird man in der Regel diesem Benutzer alle Rechte geben (zumindest lesen und schreiben), und für die Gruppe und "Rest der Welt" nur Leserechte. Wenn also ein Skript ankommt, daß unter der Benutzerkennung des Webservers läuft ("wwwrun" heißt der üblicherweise), dann gelten für den immer die Rechte vom "Rest der Welt", wenn er sich als Benutzer in der Gruppe befindet, der die Datei gehört, dann eben diese Rechte. Wenn für beide aber nur Leserechte vergeben wurden, ist eben nichts anderes möglich.
Dummerweise spielt auch noch die Rechtevergabe des Verzeichnisses eine Rolle (die Rechte sieht man eine Ebene höher), ob der aktuelle User Dateioperationen wie Löschen ausführen darf. Löschen bezieht sich nämlich auch auf das Verzeichnis, in dem sich die Datei befindet. Ich kriege aus dem Kopf nicht mehr zusammen, welche Rechte da für Lese-, Schreib- und Ausführen stehen (denn ein Verzeichnis kann man zwar auch irgendwie lesen und schreiben, und sogar ausführen, das bedeutet aber was anderes als bei normalen Dateien). Im Zweifel hilft CHMOD 777, was aber aus verständlichen Gründen etwas leichtsinnig ist.
- Sven Rautenberg