sudo tarは、抽出されたファイルの所有権を不明なユーザーに変更します


10

私はこのコマンドを実行しています:

$ sudo tar xvzf nexus-latest-bundle.tar.gz

抽出されたファイルは不明な(1001)ユーザーに属しています:

drwxr-xr-x 8     1001     1001      4096 Dec 16 18:37 nexus-2.12.0-01
drwxr-xr-x 3     1001     1001      4096 Dec 16 18:47 sonatype-work

通常の構成ではrootを所有者にすべきではありませんか?

AWS AMIから複製されたLinuxインストールに取り組んでいます。

回答:


15

ルートとしてファイルを抽出する場合、tarは元の所有権を使用します。--no-same-ownerオプションを使用してそれを上書きできます(または、-o)。

あなたのtarファイルは、それを抽出したシステムに存在しないユーザー/グループを参照していました。

自分(非特権ユーザー)としてファイルを抽出した場合、自分が所有するファイルのみを作成できます。

GNU tarマニュアルにはこう書かれています:

--same-owner
アーカイブを抽出するとき、tarは、このオプションが存在する場合、tarアーカイブで指定された所有者を保存しようとします。これはスーパーユーザーのデフォルトの動作です。このオプションは、一般ユーザーにのみ効果があります。See section ファイル属性の処理


1
OK、これはrootの場合にのみ発生します。sudoを使用せずにコマンドを実行すると、「tar xzvf nexus-latest-bundle.tar.gz」となり、所有権が現在のユーザーに設定されます。これは予期される動作ですか?
raspacorp

2
@raspacorp:非rootユーザーとして、自分以外の所有権を持つファイルを作成する権限がありません。したがって、必要に応じて、ファイルは所有者として作成されます。
Nate Eldredge、2016

1

tarファイルを作成した人の有効なユーザーIDとグループID(UID:GID)は1001:1001でした。tarではデフォルトで所有権と権限が保持されるため、展開するとこれらの値が継承されます。システムにUID:GID 1001:1001のユーザーがいる場合、これらのファイルはそのユーザーが所有していることになります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.