In welcher Weise ist 'fast_abs_path' "gefährlich, aber möglicherweise schneller"?

8

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?

    
Matthew Simoneau 11.05.2012, 16:33
quelle

1 Antwort

11

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.)

    
geekosaur 11.05.2012, 16:45
quelle

Tags und Links