Die Dokumentation für das Cwd-Modul besagt, dass fast_abs_path
ein "gefährlicheres ist, aber möglicherweise schnellere Version von abs_path
". Inwiefern ist es gefährlich? Unter welchen Umständen ist es schneller? Verändert sich das Verhalten je nach Plattform?
fast_abs_path
ruft chdir
auf, damit der Kernel den Pfad auflöst, der zu dem führt, an dem Sie ihn alle gleichzeitig übergeben haben, anstatt jede Komponente sorgfältig zu prüfen und Stück für Stück einen neuen Pfad zu erstellen; Das Problem besteht darin, dass Berechtigungen dazu führen könnten, dass %% nicht mehr in das ursprüngliche Verzeichnis zurückgespeichert wird. (Einige Systeme können chdir
und open
verwenden, um dies zu umgehen, aber es ist nicht zuverlässig auf allen Plattformen verfügbar, auf denen Perl ausgeführt wird.)
Ob dies überhaupt möglich ist, hängt davon ab, ob Ihr Skript in einem Verzeichnis ausgeführt werden kann, auf das es nicht direkt zugreifen könnte. Auf Unix-ähnlichen Systemen kann dies passieren, wenn ein setuid-Wrapper fchdir
s auf einen eingeschränkten Berechtigungsbereich und dann die setuid ablegt. (Historisch gesehen befinden sich die eingeschränkten Berechtigungen in einer Pfadkomponente namens chdir
; verschiedene Mail- und Usenet-Nachrichtensubsysteme haben dies zum Schutz ihrer Warteschlangenverzeichnisse verwendet.)
Tags und Links perl