偽根
fakerootのユーティリティ、または新しいユーティリティのfakeroot-NG(同じ目的のために、異なる実装技術)は、プログラム及びそれがルートとして実行されていることをプログラムになりすましを実行したように、そのシステムは、呼び出しchown
成功しました。これらの呼び出しが成功したとプログラムだけが信じており、実際にはファイルシステムには何も反映されてfakeroot
いません(特別な権限がないため、ファイルシステムには反映されません)。ただし、プログラムがファイルの所有権を変更し、そのファイルの所有権に基づいて何らかのアクションを実行すると、プログラムの動作が変更される可能性があります。
以下が発生するfakeroot環境を実行することにより、fakerootから有用な作業を得る典型的な方法:
- いくつかのファイルを作成し、移動し、所有権とモードを変更します。
- これらのファイルのアーカイブを作成します。
例:
fakeroot sh -c '
chown root:root usr/bin/foo
tar cf foo.tar usr
'
呼び出しのfakeroot
間にメモリがないため、の単一の呼び出しを使用する必要があります。
Linux名前空間
完全を期すために、3.8以上のLinuxカーネルを使用している場合、名前空間は、ルートの偽の環境を作成するもう1つの方法であることを述べます。ユーザーランドのサポートはまだ十分ではないので、これ以上詳しくは説明しません。
アーカイブをマウントする
問題を解決する別の方法は、アーカイブをディレクトリとしてマウントすることです。圧縮されたtarを含むlibarchiveを介していくつかのアーカイブ形式を変更できるarchivemountを使用できます。
mkdir mnt
archivemount foo.tar.xz mnt
chown root:root mnt/usr/bin/foo
fusermount -u mnt
tar --owner=root --group=root cfpJ files.tar.xz files/
はtar: You must specify one of the
うまくいきません:エラー -Acdtrux 'または--test-label' options Try
tar --help'またはtar --usage' for more information.