Verzeichnis/Datei löschen
roger
- php
hallo zusammen!
wie kann ich ein verzeichnis/eine datei löschen, die mir nicht "gehört"?
angelegt wurde es/sie vom ftpuser, gelöscht werden soll sie vom skript (wwwrun).
da nun mal nur der selbe user die datei löschen kann, der sie angelegt hat, brauch ich hierfür irgend eine andere lösung.
könnt ihr mir helfen?
als alternative würde mir reichen,die rechte des verzeichnisses /der datei zu ändern.
schwierig?
danke für evtl. hilfreiche antworten!
r.
Hi,
als alternative würde mir reichen,die rechte des verzeichnisses /der datei zu ändern.
das können root und ftpuser. Möglicherweise kannst Du das von Deinem PHP-Script aus simulieren, indem Du darin - tja, einen FTP-Login machst :-) Wenn es aber eine einmalige Aktion sein soll, mach es doch einfach mit Deinem Lieblings-FTP-Programm.
Cheatah
Hi,
als alternative würde mir reichen,die rechte des verzeichnisses /der datei zu ändern.
das können root und ftpuser. Möglicherweise kannst Du das von Deinem PHP-Script aus simulieren, indem Du darin - tja, einen FTP-Login machst :-) Wenn es aber eine einmalige Aktion sein soll, mach es doch einfach mit Deinem Lieblings-FTP-Programm.
ftp simulieren! gute idee. umständlich aber warum nicht! immerhin ein anfang. danke.
Cheatah
r.
Moin!
wie kann ich ein verzeichnis/eine datei löschen, die mir nicht "gehört"?
was meinst Du damit genau? Wo liegt die Datei genau? Soweit ich weiß kannst Du mit unlink(http://www.php.net/manual/de/function.unlink.php) eigentlich fast alle Dateien löschen!? Ich hatte noch nie Probleme mit den Rechten, wenn Du die aber hast, probiers mal mit http://www.php.net/manual/de/function.chmod.php
angelegt wurde es/sie vom ftpuser, gelöscht werden soll sie vom skript (wwwrun).
was soll wwwrun heißen? Ist das jetzt auf nem anderen Server?
da nun mal nur der selbe user die datei löschen kann, der sie angelegt hat, brauch ich hierfür irgend eine andere lösung.
Warum kann nur derselbe User eine Datei löschen? Welches OS überhaupt?
"besitzer" ändern kannst Du mit http://www.php.net/manual/de/function.chown.php, hab aber kein Ahnung davon.
Hier findest Du eien Übersicht aller Funktionen das Filesystem betreffend: http://www.php.net/manual/de/ref.filesystem.php
Mit Verzeichnissen kenne ich mich da nicht so aus, da kenn ich keien Funktion zum löschen oder so. Such einfach mal ein bisschen im Manual!
Grüße
Andreas
Moin!
wie kann ich ein verzeichnis/eine datei löschen, die mir nicht "gehört"?
was meinst Du damit genau? Wo liegt die Datei genau? Soweit ich weiß kannst Du mit unlink(http://www.php.net/manual/de/function.unlink.php) eigentlich fast alle Dateien löschen!? Ich hatte noch nie Probleme mit den Rechten, wenn Du die aber hast, probiers mal mit http://www.php.net/manual/de/function.chmod.php
welche befehle was machen ist mir schon klar. trotzdem danke.
angelegt wurde es/sie vom ftpuser, gelöscht werden soll sie vom skript (wwwrun).
was soll wwwrun heißen? Ist das jetzt auf nem anderen Server?
nein. wwwrun ist der user, von dem aus der prozess gestartet/ausgeführt wird.
da nun mal nur der selbe user die datei löschen kann, der sie angelegt hat, brauch ich hierfür irgend eine andere lösung.
Warum kann nur derselbe User eine Datei löschen? Welches OS überhaupt?
Linux.
"besitzer" ändern kannst Du mit http://www.php.net/manual/de/function.chown.php, hab aber kein Ahnung davon.
Hier findest Du eien Übersicht aller Funktionen das Filesystem betreffend: http://www.php.net/manual/de/ref.filesystem.php
s.o.
Mit Verzeichnissen kenne ich mich da nicht so aus, da kenn ich keien Funktion zum löschen oder so. Such einfach mal ein bisschen im Manual!
rmdir ;)
Grüße
Andreas
Hi!
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?
Grüße
Andreas
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
Hi!
Naja, ich mußte ausßer bei PERL Scripten und bei gewissen Schreibvorgängen noch nichts an den Rechten verändern, bei mir hat immer alles sonst mirt der automatischen Einstellung funktioniert, aber ich glaube ich verstehe jetzt, wenn man alsftpuser eine Datei anlegt, die für wwrun keine Zugriffsrechte vorsieht, kann man die aus einem php-scritp auch nicht löschen, oder? Kann man auch aus dem php-Script wahrscheinlich die Rechte in diesem Fall nicht verändern, oder? Sonst wäre es ja wierder einfach :-)
Grüße
Andreas
Yo!
Naja, ich mußte ausßer bei PERL Scripten und bei gewissen Schreibvorgängen noch nichts an den Rechten verändern, bei mir hat immer alles sonst mirt der automatischen Einstellung funktioniert, aber ich glaube ich verstehe jetzt, wenn man alsftpuser eine Datei anlegt, die für wwrun keine Zugriffsrechte vorsieht, kann man die aus einem php-scritp auch nicht löschen, oder? Kann man auch aus dem php-Script wahrscheinlich die Rechte in diesem Fall nicht verändern, oder? Sonst wäre es ja wierder einfach :-)
Der Besitzer der Datei (und der Superuser root) kann die Dateirechte und Besitzzuweisungen (User und Gruppe) ändern, alle anderen nicht.
Und nochmal zur Sicherheit: Ich bin mir unsicher :-), ob das Schreibrecht auf eine Datei erlaubt, sie zu löschen. Löschen ist eigentlich eine Verzeichnisoperation, und folglich erfordert sie die richtigen Verzeichnisrechte. Ein 777-Verzeichnis erlaubt alles für alle, und spannender ist dann wieder die Frage, was man mit der Datei machen darf. Aber schon ein 770- oder gar 700-Verzeichnis sind problematisch, weil der "Rest der Welt" oder auch alle anderen als der Verzeichnisbesitzer dann nicht mehr ins Verzeichnis reinkommen, und dort logischerweise auch nichts machen dürfen, weder Löschen noch Neuanlegen - auch nicht Lesen, Schreiben oder Ausführen von enthaltenen Dateien.
In irgendwelchen man-Pages steht, was dahintersteckt, und sicherlich ist es auf instruktiven Webseiten auch nochmal allgemeinverständlich erklärt.
- Sven Rautenberg