Per CGI-Script erstellte Dateien nicht löschbar
Oliver Smith
- perl
Hallo!
Ich habe auf meiner Seite ein CGI-Script (Perl), dass unter anderem bei bestimmten Interaktionen des Besuchers einen neuen Ordner auf dem Server erstellt, in dem dann auch noch verschiedene Dateien erstellt werden.
Will ich nun per FTP den Ordner oder eine der Dateien löschen, dann kommt die Fehlermeldung "Permission denied". Also habe ich nach den Zugriffsrechten geschaut, sie standen/stehen auf Read/Write für den Owner und nur Read für Group und Everyone. Will ich nun für den Owner zusätzlich das Recht für Execute setzen, dann kommt wiederum die Fehlermeldung "Permission denied". Ich kann also selbst gar nicht mehr entscheiden, was auf meinem Server liegen soll oder nicht, die Dateien sind nicht löschbar!
Brauche dringend Hilfe!
Danke an alle,
O. Smith
Hallo,
Ist doch klar. Wenn das Script die Datei produziert, ist das Script bzw der Server Owner und nicht du, also kannst du auch gar nichts daran ändern.
Benutze den File Manager deines Providers, um die Datei zu löschen. Sowas musst du bei einem halbwegs gutem Provider in deinem Domain COntrol Panel haben.
Falls doch nicht, mach ein Script, dass folgendes enthält:
#!/usr/bin/perl -w
unlink DATEINAME;
Eine bequemere Lösung fällt mir nicht ein.
$xNeTworKx.
Hallo,
Hm die Möglichkeit von $xNeTworKx ist wohl die Einzige um die Dateien zu löschen.
Du solltest Dir aber mal anschauen , welche Rechte Du vergeben musst, damit Du das auch per FTP löschen kannst. Entsprechende Rechte beim Erstellen der Datei vergeben und schon ist das Problem gelöst ;-)
Grüsse
Andreas
Moin!
Du solltest Dir aber mal anschauen , welche Rechte Du vergeben musst, damit Du das auch per FTP löschen kannst. Entsprechende Rechte beim Erstellen der Datei vergeben und schon ist das Problem gelöst ;-)
Es ist schlau, gleich direkt nach dem Erstellen von Verzeichnissen und/oder Dateien zuerst die Rechte (chmod) auf die gewünschten oder notwendigen Werte zu stellen, danach die Gruppe (chgrp) auf den Wert zu stellen, den die eigenen, per FTP hochgeladenen Dateien besitzen, und zum Schluß den Dateibesitzer (chown) auf die eigene User-ID zu setzen. Die Reihenfolge ist dabei wichtig. Dateirechte kann das Skript z.B. nur setzen, wenn es noch Eigentümer der Datei ist.
- Sven Rautenberg
Hallo!
Danke für deine Antwort!
Es ist schlau, gleich direkt nach dem Erstellen von Verzeichnissen und/oder Dateien zuerst die Rechte (chmod) auf die gewünschten oder notwendigen Werte zu stellen,
OK, das kann ich.
danach die Gruppe (chgrp) auf den Wert zu stellen, den die eigenen, per FTP hochgeladenen Dateien besitzen,
Das verstehe ich nicht!?
und zum Schluß den Dateibesitzer (chown) auf die eigene User-ID zu setzen.
Und was ist meine User-ID? Ist das der Login-Name, den ich benutze, wenn ich mich auf dem Server einlogge?
O. Smith
Moin!
Es ist schlau, gleich direkt nach dem Erstellen von Verzeichnissen und/oder Dateien zuerst die Rechte (chmod) auf die gewünschten oder notwendigen Werte zu stellen,
OK, das kann ich.
danach die Gruppe (chgrp) auf den Wert zu stellen, den die eigenen, per FTP hochgeladenen Dateien besitzen,
Das verstehe ich nicht!?
Eine Datei gehört zu einem User und zu einer Gruppe. Wenn du die Skript-gesteuert angelegten Dateien mit denselben Rechten ausgestattet haben willst, wie deine anderen Dateien, mußt du die Dateirechte und die Zugehörigkeiten der Dateien verändern auf die Werte, die deine Dateien normal haben.
Wenn du CHMOD kennst, kannst du mit CHGRP und CHOWN ebenso umgehen.
CHMOD 644 dateiname
CHGRP deinegruppe dateiname
CHOWN deinusername dateiname
Die Werte für "deinegruppe" und "deinusername" entnimmst du am besten einem Directory-Listing, beispielsweise von deinem FTP-Programm generiert.
Und was ist meine User-ID? Ist das der Login-Name, den ich benutze, wenn ich mich auf dem Server einlogge?
Ziemlich wahrscheinlich ja.
- Sven Rautenberg
Hallo!
CHMOD 644 dateiname
CHGRP deinegruppe dateiname
CHOWN deinusername dateinameDie Werte für "deinegruppe" und "deinusername" entnimmst du am besten einem Directory-Listing, beispielsweise von deinem FTP-Programm generiert.
Mmmhhh, wo kriege ich so ein Directory-Listing her bzw. was ist das? Mein FTP-Programm hat sowas glaube ich nicht (habe ich nicht gefunden).
Und nochwas: Wer stellt eigentlich die "Gruppe" bei den Zugriffsrechten dar?
O. Smith
Moin!
Die Werte für "deinegruppe" und "deinusername" entnimmst du am besten einem Directory-Listing, beispielsweise von deinem FTP-Programm generiert.
Mmmhhh, wo kriege ich so ein Directory-Listing her bzw. was ist das? Mein FTP-Programm hat sowas glaube ich nicht (habe ich nicht gefunden).
Vergiß es - funktioniert nicht. Du kannst nur die Dateirechte einstellen, bestenfalls noch die Gruppe ändern, aber nicht die Datei auf deinen User-Account übertragen. Also brauchst du auch nicht wissen, welche Daten das eigentlich wären.
Aber wenn du's doch mal wissen willst: Eigentlich sollte jedes FTP-Programm so eine Directory-Funktion haben (meins hat sowas nicht, was ich aber nicht sonderlich vermisst habe). WS_FTP hats jedenfalls. Wenn man die Funktion aufruft, erscheint der Windows-Notepad und zeigt ein Directory-Listing an, in dem User und Gruppe einer Datei enthalten sind.
Und nochwas: Wer stellt eigentlich die "Gruppe" bei den Zugriffsrechten dar?
Eine Datei gehört immer auch einer Gruppe. Wer noch alles in der Gruppe drin ist, kann man von außen nicht sehen. Es richtet sich auch immer nach den lokalen Erfordernissen. Man kann damit z.B. Benutzergruppen realisieren, z.B. eine Entwicklergemeinschaft. Jeder Entwickler hat seinen eigenen Account, und die von ihm angelegten Dateien tragen seine User-ID. Aber da er in der Entwickler-Gruppe ist, kann er den Mit-Entwicklern leicht Zugriff geben. Wenn andere Accounts auf dem Rechner nicht in der Entwickler-Gruppe sind, kriegen die eben keinen Zugriff - oder nur, wenn die Rechte für "Andere" entsprechend gesetzt sind.
- Sven Rautenberg
Hallo!
Vergiß es - funktioniert nicht. Du kannst nur die Dateirechte einstellen, bestenfalls noch die Gruppe ändern, aber nicht die Datei auf deinen User-Account übertragen. Also brauchst du auch nicht wissen, welche Daten das eigentlich wären.
D.h. ich kann es gar nicht so erreichen, dass ich die vom CGI-Script erstellten Dateien per FTP löschen kann!?
Aber wenn du's doch mal wissen willst: Eigentlich sollte jedes FTP-Programm so eine Directory-Funktion haben (meins hat sowas nicht, was ich aber nicht sonderlich vermisst habe). WS_FTP hats jedenfalls. Wenn man die Funktion aufruft, erscheint der Windows-Notepad und zeigt ein Directory-Listing an, in dem User und Gruppe einer Datei enthalten sind.
Ein Directory-Listing habe ich jetzt mit dem FTP-Programm von Windows mal erstellen lassen. Dort stellt jeweils als User und Gruppe "apache".
Und nochwas: Komischerweise kann ich Dateien, die von einem CGI-Script in einem Ordner erstellt wurden, den ich vorher per FTP angelegt habe, löschen. Das Problem, das die Dateien nicht löschbar sind, ergibt sich nur, wenn Dateien von einem CGI-Script in einem Ordner erstellt wurden, den auch selbst das CGI-Script angelegt hat.
Wer kann sich daraus einen Reim machen?
O. Smith
Hallo Sven,
und zum Schluß den Dateibesitzer (chown) auf die eigene User-ID zu setzen.
und wie macht man das, wenn man nicht selbst "root" ist?
Viele Grüße
Michael
Moin!
und zum Schluß den Dateibesitzer (chown) auf die eigene User-ID zu setzen.
und wie macht man das, wenn man nicht selbst "root" ist?
Ähm, guter Punkt. Ich hatte jetzt eigentlich gedacht, dass man das Besitzrecht einer eigenen Datei zugunsten eines anderen Users aufgeben könnte, aber da habe ich mich wohl geirrt. Ich hatte es vorher nicht ausprobiert - Schande über mich.
- Sven Rautenberg