GNU tarを使用すると、単純に
tar -xvf untrusted_file.tar
空のディレクトリ。GNU tar /
は、--absolute-names
オプションで明示的に指示されない限り、抽出時に先頭のメンバー名を自動的に削除します。また、GNU tarは、使用により../
ファイルがトップレベルディレクトリの外に抽出されることを検出し、それらのファイルを代わりにトップレベルディレクトリに配置します。たとえば、コンポーネントfoo/../../bar/qux
はbar/qux
トップレベルディレクトリbar/qux
の親ではなくトップレベルディレクトリに。GNU tarはまた、例えばトップレベルのディレクトリ、外指すシンボリックリンクの世話をするfoo -> ../..
とfoo/bar
発生しませんbar
トップレベルのディレクトリ外に抽出されます。
これは(十分に最近のバージョンの)GNU tar(および* BSD tarやBusyBox tarなどの他の実装)にのみ適用されることに注意してください。他のいくつかの実装には、そのような保護がありません。
シンボリックリンクのため、使用する保護は十分ではありません。アーカイブには、ツリー外のディレクトリを指すシンボリックリンクが含まれ、そのディレクトリ内のファイルが抽出される可能性があります。メンバー名だけに基づいてその問題を解決する方法はありません。シンボリックリンクのターゲットを調べる必要があります。
すでにシンボリックリンクが含まれているディレクトリに展開する場合、保証が適用されなくなる可能性があることに注意してください。