知らない変更を加える可能性があるため、tarballを慎重に抽出する必要があるという同僚がいます。 tarballは単に圧縮ファイルの階層にすぎないと思っていたので、/ tmp/example /に解凍すると、/ etc /などにファイルをこっそり入れることはできません。
この点では、tarユーティリティの動作が異なるため、注意する必要があります。作成していない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 : (より良いオンラインリファレンスを歓迎)
[〜#〜]警告[〜#〜]
絶対パス名を相対位置に戻す方法はありません。
-P
パス名から先頭のスラッシュ(
/
)を削除しないでください。デフォルトでは、先頭のスラッシュが削除されます。
MacOS、FreeBSD、NetBSDのtar
にも-P
オプションが実装されており、同じセマンティクスでtar
on FreeBSD およびmacOSは、..
なしで「パス名に-P
が含まれているアーカイブエントリまたはシンボリックリンクによってターゲットディレクトリが変更されるアーカイブエントリの抽出を拒否します」。
-/
アーカイブを抽出するときに、ファイル名から先頭のスラッシュを削除しないでください。通常、絶対パス名を含むtarアーカイブはお勧めできません。他のtar実装では、既存のファイルを壊さずに抽出することはできません。そのため、スターを付けます。抽出モードの場合、デフォルトでは、ファイル名から先頭のスラッシュが削除されます。
tar bombs で発生する陽気なことの1つは、現在のディレクトリの権限をtarballに含まれているものに変更することです。
たとえば、tarballに「。」が含まれている場合/ tmpにrootとして解凍すると、/ tmpをroot以外の誰もが書き込み不可にしてシステムを破壊します。