web-dev-qa-db-ja.com

chown - 操作は許可されていません

私はminimeとしてログインしています。

私が自分の所有するファイルをsu特権なしでチャウンすることができないのはなぜかわかりません。明らかに私はSudoを使用することができます、しかし、私はなぜ理解したいですか? WWWデータグループのため?

chown minime:www-data user-functions.php

ls -lh

-rw-r--r--  1 minime minime    24K Jan  6 16:11 user-functions.php

Error:

chown: changing ownership of `user-functions.php': Operation not permitted
34
user98645

非特権ユーザー(root以外)は他のユーザー名にファイルをchownすることはできません。 chownを使用するには、ユーザーはターゲットユーザーの権限を持っている必要があります。つまり、rootだけが他のユーザーにファイルを渡すことができます。

説明したように ここで (ありがとう@slhck):

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

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

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

この根拠は、 this@ Gilles によってうまく説明されています&Linuxの回答:

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

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