tarの-p(パーミッションを保持)フラグは実際に何を保存しますか?


22

-ptarballを作成および抽出するときに、フラグは実際に何を保存しますか?rwx保持する権限ですか?

htdocs/rootが所有するtarball を作成したときに、ローカルマシンに展開すると、所有権がrootからユーザーに変更されました。


5
たぶん、ルートとしてアーカイブを抽出しようとする必要があります。別のユーザーに通常のユーザーとしてアクセス許可を設定tarすることはできないため、同様に設定することはできないと思います。これがうまくいったかどうか教えてください。
ルイ・マットハイセン

「ローカルマシン」?このマシンのOSを明確にしてください;)
Rinzwind

また、使用しているファイルシステムを教えてください。ソースとターゲットの両方。
テルドン

ソース:Red Hat Enterprise Linux Server release 6.5 (Santiago) ターゲット:Ubuntu 13.10 両方の使用GPT
nicoX

サイドノート:tar権限を保持します。-pおよび--same-owner/ --no-same-owner(回答のように)は抽出フラグです。アーカイブ中は効果がありません
Fr0zenFyr

回答:


19

所有権と許可は2つの異なるものです。-pフラグが保持され権限を。* nixシステムでは、一般ユーザーはファイル所有権を自分以外のユーザーに変更することはできません。

ここで説明したように

ファイルのユーザーIDと等しい有効なユーザーIDまたは適切な特権を持つプロセスのみが、ファイルの所有権を変更できます。_POSIX_CHOWN_RESTRICTEDがパスに対して有効な場合:

  • ユーザーIDの変更は、適切な特権を持つプロセスに制限されています。

  • グループIDの変更は、ファイルのユーザーIDと等しい実効ユーザーIDを持つプロセスに許可されますが、適切な特権はありません。所有者がファイルのユーザーIDまたは(uid_t)-1でグループが等しい場合のみ呼び出しプロセスの実効グループID、またはその補助グループIDのいずれか。

この背後にある理論的根拠は、この Unix&Linuxの回答で@Gillesによってうまく説明されています。

この制限の理由は、ファイルを別のユーザーに配布すると、まれではあるが依然として重要な状況で悪いことが起こる可能性があるためです。例えば:

  • システムでディスククォータが有効になっている場合、アリスは自分だけがアクセスできるディレクトリの下に誰でも書き込み可能なファイルを作成できます(したがって、誰もその誰でも書き込み可能なディレクトリにアクセスできません)。 。ファイルは、Aliceだけがファイルを使用できる場合でも、Billのディスククォータの下でカウントされます。
  • アリスがビルにファイルを渡した場合、ビルがそのファイルを作成しなかったという痕跡はありません。これは、ファイルに違法またはその他の侵害データが含まれている場合に問題になる可能性があります。
  • 一部のプログラムでは、要求を認証するために入力ファイルが特定のユーザーに属している必要があります(たとえば、ファイルには、そのユーザーに代わってプログラムが実行する命令が含まれています)。これは通常、安全な設計ではありません。ビルが構文的に正しい命令を含むファイルを作成したとしても、この特定の時間にそれらを実行するつもりはなかったからです。それでも、Aliceが任意のコンテンツを含むファイルを作成し、それをBillからの入力として取得できるようにすると、事態が悪化するだけです。

そのため、tarの--same-ownerフラグを使用しても、root所有権を保持するためにファイルを抽出する必要があります。そのフラグはのデフォルトでオンになっているためroot、必要なのは次のとおりです。

sudo tar xpf foo.tgz

9

タールには、さらに2つのオプションがあります。

--same-owner
       try extracting files with the same ownership as exists in the ar‐
       chive (default for superuser)

--no-same-owner
       extract files as yourself (**default for ordinary users**)

2番目がデフォルトなので--same-owner、ユーザーを保存するために追加できます。おそらくこれを行う必要がありsudoます。

それに加えて、これはPOSIXをサポートするシステムでのみ動作します。また、Ubuntu以外のオペレーティングシステムには、これらの2つのオプションがない場合があります(標準ではありません)。


3
--same-ownerroot以外のユーザーのために動作しません、彼らは誰が、自分自身に所有権を設定する権利を持っていません。それはPOSIXで定義されています。
テルドン

4

所有者を保持するには、ルートとして実行するか、抽出時に-pフラグと一緒に--same-ownerフラグを使用します。


3
いずれにしてもrootとして実行する必要があります。非ルートユーザーは、ファイルの所有権を他のユーザーに変更できません。
テルドン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.