Cwd モジュールのドキュメントにfast_abs_path
は、これは「より危険ですが、潜在的に高速なバージョン」であると記載されていabs_path
ます。どのような点で危険ですか?どのような状況で速くなりますか?動作はプラットフォームによって異なりますか?
1 に答える
11
fast_abs_path
chdir
各コンポーネントを注意深くチェックして新しいパスを少しずつ構築するのではなく、渡したパスに至るまでのパスをカーネルに一度に解決させるために呼び出します。chdir
問題は、パーミッションによって後で元のディレクトリに戻れない可能性があることです。(一部のシステムではこれを回避するためにopen
andfchdir
を使用できますが、Perl が実行されるすべてのプラットフォームで確実に利用できるわけではありません。)
これが発生するかどうかは、直接アクセスできないディレクトリでスクリプトを実行できるかどうかによって異なります。Unix ライクなシステムでは、これは、setuid ラッパーchdir
が制限されたアクセス許可領域に移動し、setuid を削除したときに発生する可能性があります。(歴史的に、制限された許可は という名前のパス コンポーネントにlock
あります。さまざまなメールおよび Usenet ニュース サブシステムは、キュー ディレクトリを保護するためにこれを使用してきました。)
于 2012-05-11T16:45:00.167 に答える