所有権と許可は2つの異なるものです。-p
フラグが保持され権限を。* nixシステムでは、一般ユーザーはファイル所有権を自分以外のユーザーに変更することはできません。
ここで説明したように:
ファイルのユーザーIDと等しい有効なユーザーIDまたは適切な特権を持つプロセスのみが、ファイルの所有権を変更できます。_POSIX_CHOWN_RESTRICTEDがパスに対して有効な場合:
この背後にある理論的根拠は、この Unix&Linuxの回答で@Gillesによってうまく説明されています。
この制限の理由は、ファイルを別のユーザーに配布すると、まれではあるが依然として重要な状況で悪いことが起こる可能性があるためです。例えば:
- システムでディスククォータが有効になっている場合、アリスは自分だけがアクセスできるディレクトリの下に誰でも書き込み可能なファイルを作成できます(したがって、誰もその誰でも書き込み可能なディレクトリにアクセスできません)。 。ファイルは、Aliceだけがファイルを使用できる場合でも、Billのディスククォータの下でカウントされます。
- アリスがビルにファイルを渡した場合、ビルがそのファイルを作成しなかったという痕跡はありません。これは、ファイルに違法またはその他の侵害データが含まれている場合に問題になる可能性があります。
- 一部のプログラムでは、要求を認証するために入力ファイルが特定のユーザーに属している必要があります(たとえば、ファイルには、そのユーザーに代わってプログラムが実行する命令が含まれています)。これは通常、安全な設計ではありません。ビルが構文的に正しい命令を含むファイルを作成したとしても、この特定の時間にそれらを実行するつもりはなかったからです。それでも、Aliceが任意のコンテンツを含むファイルを作成し、それをBillからの入力として取得できるようにすると、事態が悪化するだけです。
そのため、tarの--same-owner
フラグを使用しても、root
所有権を保持するためにファイルを抽出する必要があります。そのフラグはのデフォルトでオンになっているためroot
、必要なのは次のとおりです。
sudo tar xpf foo.tgz
tar
することはできないため、同様に設定することはできないと思います。これがうまくいったかどうか教えてください。