web-dev-qa-db-ja.com

tarballは、抽出に使用されたコマンドに関係なく、ファイルの抽出先を変更できるのは本当ですか?

知らない変更を加える可能性があるため、tarballを慎重に抽出する必要があるという同僚がいます。 tarballは単に圧縮ファイルの階層にすぎないと思っていたので、/ tmp/example /に解凍すると、/ etc /などにファイルをこっそり入れることはできません。

27
Adam R. Grey

この点では、tarユーティリティの動作が異なるため、注意する必要があります。作成していないtarファイルの場合は、抽出する前に必ず目次をリストしてください。

Solaris tar

指定されたファイルはtarfileから抽出され、現在のディレクトリを基準にして、tarfileで指定されたディレクトリに書き込まれます。抽出するファイルとディレクトリの相対パス名を使用します。

Tarアーカイブに含まれる絶対パス名は、絶対パス名を使用して解凍されます。つまり、先頭のスラッシュ(/)は削除されません。

次のような完全な(絶対)パス名を含むtarファイルの場合:

/tmp/real-file
/etc/sneaky-file-here

...そのようなファイルを抽出すると、両方のファイルが作成されます。

GNU tar

デフォルトでは、GNU tarは入力または出力で先頭の/を削除し、..コンポーネントを含むファイル名について警告します。この動作をオフにするオプションがあります:

--absolute-names

-P

ファイル名から先頭のスラッシュを削除せず、..ファイル名コンポーネントを含むファイル名を許可します。

... -Pオプションを使用してGNU tarwithoutを使用して完全パスのtarファイルを抽出すると、 :

tar:メンバー名から先頭の/を削除

ファイルを現在のディレクトリのサブディレクトリに抽出します。

AIX tar

それについては何も言わず、Solaris tarとして動作します-完全/絶対パス名でtarファイルを作成および抽出します。

HP-UX tar (より良いオンラインリファレンスを歓迎)

[〜#〜]警告[〜#〜]

絶対パス名を相対位置に戻す方法はありません。

OpenBSD tar

-P

パス名から先頭のスラッシュ(/)を削除しないでください。デフォルトでは、先頭のスラッシュが削除されます。

MacOS、FreeBSD、NetBSDのtarにも-Pオプションが実装されており、同じセマンティクスでtar on FreeBSD およびmacOSは、..なしで「パス名に-Pが含まれているアーカイブエントリまたはシンボリックリンクによってターゲットディレクトリが変更されるアーカイブエントリの抽出を拒否します」。

schilytools star

-/

アーカイブを抽出するときに、ファイル名から先頭のスラッシュを削除しないでください。通常、絶対パス名を含むtarアーカイブはお勧めできません。他のtar実装では、既存のファイルを壊さずに抽出することはできません。そのため、スターを付けます。抽出モードの場合、デフォルトでは、ファイル名から先頭のスラッシュが削除されます。

41
Jeff Schaller

tar bombs で発生する陽気なことの1つは、現在のディレクトリの権限をtarballに含まれているものに変更することです。

たとえば、tarballに「。」が含まれている場合/ tmpにrootとして解凍すると、/ tmpをroot以外の誰もが書き込み不可にしてシステムを破壊します。

9
mosvy