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


10

私はユーザーとして作業していて、(ルートによって)解凍するとファイルをルート所有権で抽出するtarアーカイブを作成したい(そうしないと、ファイルが抽出された後、ルートごとにファイルの所有権を手動で変更する必要がある)その目的地へ)。

私はfakerootそれがまさにそれをしているように見えることを発見しました。しかし、私は自分のアーカイブを作成するために使用する必要がある構文を見つけることができません。

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

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

回答:


12

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

それは解凍するルート次第です:

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

すべてを最初からrootにしたい場合は、

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

それは私にとって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.
user1968963

あなたは-あなたの短いオプション文字列の前に必要です:tar --owner=root --group=root -cfpJ ...すなわち-cfpJ、ではありませんcfpJ
goldilocks 2014

tar --owner=root --group=root -cfpJ files.tar.xz files/別のエラーが表示されます。tar: files.tar.xz: Cannot stat: No such file or directory tar: Exiting with failure status due to previous errorsさらに、というファイルが作成されpJます。
user1968963 2014

3
はい。私は常にf最後に(直感的に理解できるので)低く置き、見た目は同じですが、-cfpJBUT でも同じエラーが発生し-cpJfます。
goldilocks 2014

@ user1968963:fは、「次のパラメータがファイル名」であることを意味するため、常にファイル名の直前になければなりません。ファイル名の直前に配置しない場合、tarはファイル名が「」であると見なし、「」ファイルを開こうとしますが、(もちろん)statできません。
Olivier Dulac 2016

8

偽根

fakerootのユーティリティ、または新しいユーティリティのfakeroot-NG(同じ目的のために、異なる実装技術)は、プログラム及びそれがルートとして実行されていることをプログラムになりすましを実行したように、そのシステムは、呼び出しchown成功しました。これらの呼び出しが成功したとプログラムだけが信じており、実際にはファイルシステムには何も反映されてfakerootいません(特別な権限がないため、ファイルシステムには反映されません)。ただし、プログラムがファイルの所有権を変更し、そのファイルの所有権に基づいて何らかのアクションを実行すると、プログラムの動作が変更される可能性があります。

以下が発生するfakeroot環境を実行することにより、fakerootから有用な作業を得る典型的な方法:

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

例:

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

での巧妙なトリックですがarchivemount、それでも特権の昇格が必要であり、ユーザーがマウントおよびアンマウントを許可されている信頼されたグループに属している場合でも、プロセスはで失敗するchownため、fakerootまたは名前空間のようなある種のサードパーティツールを使用する必要がありますも。
アントンサムソノフ2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.