unlink() fail

27/07/2014 - 16:33 von Paul Berger | Report spam
Hallo,

auf meinem kleinen privaten Linux-Server lege ich u.a. von der Webcam
erzeugte Filme ab. Nun möchte ich diese übers Netz auch löschen können,
kriege das aber nicht hin.
Die Files haben die Berechtigung -rw-r--r-- und gehören dem user "motion".
Ein Löschscript kann darauf natürlich nicht direkt zugreifen, da es als user
www-data ausgeführt wird. Ebenso versagt ein chmod(), hier die Ausgabe
meines Scriptes:
Warning: chmod(): Operation not permitted in /motion/delete.php on line 5

Warning: unlink(27-130732.avi): Permission denied in /motion/delete.php on
line 9

Hier beißt sich die Katze in den Schwanz. Meine Suche im Netz zu diesem
Problem hat keine Lösung ergeben.
Wie macht man sowas? Was wàre der richtige Ansatz?

Gruß,
Paul

PS: Ich mache das rein als Hobby, also bitte langsam schreiben ;-)
 

Lesen sie die antworten

#1 Thomas PointedEars Lahn
27/07/2014 - 17:18 | Warnen spam
Paul Berger wrote:

auf meinem kleinen privaten Linux-Server lege ich u.a. von der Webcam
erzeugte Filme ab. Nun möchte ich diese übers Netz auch löschen können,
kriege das aber nicht hin.
Die Files haben die Berechtigung -rw-r--r-- und gehören dem user "motion".
Ein Löschscript kann darauf natürlich nicht direkt zugreifen, da es als
user www-data ausgeführt wird. Ebenso versagt ein chmod(), hier die
Ausgabe meines Scriptes:
Warning: chmod(): Operation not permitted in /motion/delete.php on line 5

Warning: unlink(27-130732.avi): Permission denied in /motion/delete.php on
line 9

Hier beißt sich die Katze in den Schwanz. Meine Suche im Netz zu diesem
Problem hat keine Lösung ergeben.
Wie macht man sowas? Was wàre der richtige Ansatz?



Das Hinzufügen in ein und Löschen von Dateien aus einem Verzeichnis ist eine
Änderung des *Verzeichnisses* (Verzeichnisinhalts), deshalb sind *dessen*
Attribute ausschlaggebend. Gerade ausprobiert: unlink() löscht auch – und
ohne Warnung, im Unterschied zu rm(1) –, wenn der PHP-Benutzer überhaupt
keine Berechtigung auf die Datei hat, solange er nur ins Verzeichnis
schreiben darf.

Der Benutzer “www-data” bzw. der Account, der PHP ausführt, muss in diesem
Verzeichnis Schreibrechte haben; das geht entweder mit

chown www-data .
chmod u+w .

oder

chgrp www-data .
chmod g+w .

als “root” oder mit sudo(8) (“.” ist das aktuelle Verzeichnis; nötigenfalls
durch den relativen oder absoluten Pfad ersetzen). Letzteres, wenn der
Benutzer “www-data” Mitglied der gleichnamigen Benutzergruppe ist, so wie
allgemein üblich. Zum Beispiel mit “ls -ld .” kannst Du überprüfen, ob die
Änderung umgesetzt wurde.

Mit PHP hat das sehr wenig zu tun → <news:de.comp.os.unix.linux.misc>

PS: Ich mache das rein als Hobby, also bitte langsam schreiben ;-)



Tschuuu schpàààt.


PointedEars
Anyone who slaps a 'this page is best viewed with Browser X' label on
a Web page appears to be yearning for the bad old days, before the Web,
when you had very little chance of reading a document written on another
computer, another word processor, or another network. -- Tim Berners-Lee

Ähnliche fragen