tar アーカイブ内のファイルのファイル所有権の変更

tar アーカイブ内のファイルのファイル所有権の変更

私はユーザーとして働いており、解凍したときに(rootとして)root所有権にファイルを抽出するtarアーカイブを作成したいと思います(そうでなければ、rootは各ファイルをターゲットに抽出した後に各ファイルの所有権を手動で変更する必要があります)。

私はfakerootこれがまさにそうするようです。しかし、アーカイブを作成するために必要な構文が見つかりません。

rootに解凍したときにファイルがrootの所有権を持つようにtar.xzアーカイブを作成するにはどうすればよいですか?

do something with fakeroot ...
tar cfpJ foo.tar.xz foo/

答え1

rootに解凍したときにファイルがrootの所有権を持つようにtar.xzアーカイブを作成するにはどうすればよいですか?

これは解凍されたルートによって異なります。

tar --no-same-owner -xf ...

すべてルートから開始するには、次のものを使用できます。

tar --owner=root --group=root -cf ...

答え2

近さ

これ近さユーティリティまたは最新のユーティリティ偽のルート-ng(同じ目的、他の実装技術)プログラムを実行し、プログラムがrootとして実行され、システムコールが成功したかのchownように偽装します。プログラムでのみこれらの呼び出しが成功したと見なされ、実際にはファイルシステムに何も反映されません(fakeroot追加の権限がないため不可能です)。ただし、プログラムがファイルの所有権を変更し、そのファイルの所有権に応じていくつかの操作を実行すると、プログラムの動作が変わる可能性があります。

fakerootで役に立つタスクを実行する一般的な方法は、次のことが発生するfakeroot環境を実行することです。

  1. いくつかのファイルを作成して移動し、所有権やモードなどを変更します。
  2. これらのファイルのアーカイブを作成します。

例:

fakeroot sh -c '
    chown root:root usr/bin/foo
    tar cf foo.tar usr
'

fakeroot呼び出しの間にメモリがないため、単一の呼び出しを使用する必要があります。

Linuxネームスペース

完全性を期すために、Linuxカーネルが≥3.8の場合は、次の点に言及します。名前空間偽のルート環境を作成する別の方法です。ユーザーレイヤーのサポートはまだ完了していないので、詳しくは説明しません。

アーカイブマウント

問題を解決する別の方法は、アーカイブをディレクトリにマウントすることです。あなたはそれを使用することができますアーカイブマウント、次の方法で複数のアーカイブ形式を変更できます。無料アーカイブ、圧縮されたtarを含みます。

mkdir mnt
archivemount foo.tar.xz mnt
chown root:root mnt/usr/bin/foo
fusermount -u mnt

関連情報