絶対パスで固めたtarを展開して、稼働中のファイルを上書きしてしまった
症状(よく出るエラー)
他所から受け取ったアーカイブを tar xf で展開したら、カレントディレクトリではなく /etc や /home の実ファイルが書き換わっていた。GNU tar では作成時に tar: Removing leading '/' from member names という警告が出ることもある。
原因
tar cf backup.tar /etc/app のように絶対パスで作成すると、アーカイブ内のエントリ名にパスがそのまま記録される。GNU tar は既定で先頭の / を外して相対化するが、-P(--absolute-names)付きで作られたアーカイブや古い実装のものを root で展開すると、記録された絶対パスの位置へ直接書き戻され、稼働中の設定ファイルを黙って上書きする。
直し方
展開前に必ず tar tf archive.tar | head で中のパスを確認し、/ や ../ で始まるエントリがあれば警戒する。展開は root ではなく一般ユーザーで、空のディレクトリを作って tar xf archive.tar -C /tmp/extract のように隔離先を明示するのが安全。自分で作るときは cd して tar cf backup.tar -C /etc app のように相対パスで固める習慣にする。