Thread remove_tree CHILD_DIR löscht PARENT_DIR
(8 answers)
Opened by Andreas at 2011-11-11 15:37
Hallo,
mir war ein folgenschwerer Fehler unterlaufen. Ich wollte mit "remove_tree" alle Ordner in einem Verzeichnis löschen, deren Name nicht in einem Hash definiert waren. Das Ergebnis war, das alles im Parent-Odner, welcher das Root-Verzeichnis des Webservers war, gelöscht wurde. OK, die Zugriffsrechte hätten das verhindern sollen, es ist aber nunmal passiert. Zukünftig werde ich die Zugriffsrechte besser kontrollieren und remove_tree nur eindeutig definierte absolute Pfade übergeben, aber kann mir jemand erklären, was hier genau schief gelaufen ist? Hat remove_tree den "../"-Ordner gelöscht oder ist Perl ins "../"-Verzeichnis gewechselt, nachdem der relative Pfad "./" gelöscht wurde? Oder was anderes? Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 use File::Path qw(remove_tree); chdir("$MEDIA_DIR"); # absoluter Pfad opendir(DIR, ".") || die $!; @entries = readdir(DIR); closedir(DIR); foreach (@entries) { # Hier habe ich die "."-Ordner "vergessen" remove_tree("$_") unless defined $media{"_$_"}; } Last edited: 2011-11-11 15:46:34 +0100 (CET) |