8

Cwd モジュールのドキュメントにfast_abs_pathは、これは「より危険ですが、潜在的に高速なバージョン」であると記載されていabs_pathます。どのような点で危険ですか?どのような状況で速くなりますか?動作はプラットフォームによって異なりますか?

4

1 に答える 1

11

fast_abs_pathchdir各コンポーネントを注意深くチェックして新しいパスを少しずつ構築するのではなく、渡したパスに至るまでのパスをカーネルに一度に解決させるために呼び出します。chdir問題は、パーミッションによって後で元のディレクトリに戻れない可能性があることです。(一部のシステムではこれを回避するためにopenandfchdirを使用できますが、Perl が実行されるすべてのプラットフォームで確実に利用できるわけではありません。)

これが発生するかどうかは、直接アクセスできないディレクトリでスクリプトを実行できるかどうかによって異なります。Unix ライクなシステムでは、これは、setuid ラッパーchdirが制限されたアクセス許可領域に移動し、setuid を削除したときに発生する可能性があります。(歴史的に、制限された許可は という名前のパス コンポーネントにlockあります。さまざまなメールおよび Usenet ニュース サブシステムは、キュー ディレクトリを保護するためにこれを使用してきました。)

于 2012-05-11T16:45:00.167 に答える