ソースターゲットファイルの所有権を維持しながら上書きされたtarアーカイブを抽出できますか?

ソースターゲットファイルの所有権を維持しながら上書きされたtarアーカイブを抽出できますか?

tarアーカイブをrootとして抽出し、意図的に一部のターゲットファイルをアーカイブコンテンツで上書きする特定のユースケースがあります。これはすべて大丈夫で実装が簡単ですが、元のターゲットファイルの元の所有権と権限も維持したいと思います。たとえば、

$ touch file && tar cf test.tar.gz file && sudo chown www-data:www-data file && sudo tar xf test.tar.gz && ls -l file -rw-r--r-- 1 tim tim 0 May 1 11:26 file

ここでは、自分のユーザー()でファイルを作成し、tim:timそれをアーカイブし、所有権を変更してwww-data:www-dataから(ルートとして)アーカイブを抽出して元のファイルを上書きします。ご覧のとおり、所有権は事前にアーカイブされた状態のファイル所有権に変更されていますが、抽出後はwww-data:www-data.

マニュアルページをかなり詳しく見てみましたが、tar私が望むことをすぐに達成するための確実な方法が見つかりません。私は何を逃したことがありませんか?

答え1

一般ユーザーはwww-dataが所有するファイルを上書きすることはできず、所有者は書き込み権限のみを持っているため、目的の内容はこの例では機能しません。

ユーザーがこれらのファイルに書き込むことができる場合を使用すると効果的です--overwrite。ただし、tarファイルの変更時間と権限を変更しようとすると、通常のユーザーとして書き込みが許可されないため、エラーが発生します。あなたに属していないファイルはこれを行います。

関連情報