Tarballを作成および抽出するときに、-p
フラグは実際に何を保存しますか?それが保持するrwx
パーミッションですか?
Rootが所有するhtdocs/
tarballを作成したときに、ローカルマシンに展開すると、所有権がrootからユーザーに変更されました。
所有権と許可は2つの異なるものです。 -p
フラグは許可を保持します。 * nixシステムでは、通常のユーザーはファイルの所有権を自分以外のユーザーに変更することはできません。
説明したように ここ :
ファイルのユーザーIDと等しい有効なユーザーIDまたは適切な特権を持つプロセスのみが、ファイルの所有権を変更できます。 _POSIX_CHOWN_RESTRICTEDがパスに対して有効な場合:
ユーザーIDの変更は、適切な特権を持つプロセスに制限されています。
グループIDの変更は、ファイルのユーザーIDと等しい実効ユーザーIDを持つプロセスに許可されますが、適切な特権はありません。所有者がファイルのユーザーIDまたは(uid_t)-1と等しく、グループが等しい場合にのみ呼び出しプロセスの実効グループID、またはその補助グループIDのいずれか。
この理由は、@ Gillesが this Unix&Linux answer:でうまく説明しています。
この制限の理由は、ファイルを別のユーザーに配布すると、まれではあるが依然として重要な状況で悪いことが起こる可能性があるためです。例えば:
- システムでディスククォータが有効になっている場合、アリスは自分だけがアクセスできるディレクトリの下に誰でも書き込み可能なファイルを作成できます(したがって、誰もその誰でも書き込み可能なディレクトリにアクセスできません)。 。ファイルは、Aliceだけがファイルを使用できる場合でも、Billのディスククォータの下でカウントされます。
- アリスがビルにファイルを渡した場合、ビルがそのファイルを作成しなかったという痕跡はありません。これは、ファイルに違法またはその他の侵害データが含まれている場合に問題になる可能性があります。
- 一部のプログラムでは、要求を認証するために入力ファイルが特定のユーザーに属している必要があります(たとえば、ファイルには、ユーザーに代わってプログラムが実行する命令が含まれています)。これは通常、安全な設計ではありません。ビルが構文的に正しい命令を含むファイルを作成したとしても、この特定の時間にそれらを実行するつもりはなかったからです。それでも、Aliceが任意のコンテンツを含むファイルを作成し、それをBillからの入力として取得できるようにすると、事態が悪化するだけです。
そのため、tarの--same-owner
フラグを使用しても、所有権を保持するために、ファイルをroot
として抽出する必要があります。そのフラグはroot
に対してデフォルトでオンになっているため、必要なものは次のとおりです。
Sudo tar xpf foo.tgz
タールには、さらに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つのオプションがない場合があります(標準ではありません)。
所有者を保持するには、ルートとして実行するか、抽出時に-pフラグと一緒に--same-ownerフラグを使用します。