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


37

ミニムとしてログインしています。

su権限なしで自分が所有するファイルをchownできないのはなぜかわかりません。明らかにsudoを使用できますが、その理由を理解したいのですが?www-dataグループのためですか?

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

回答:


51

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

ここで説明したように(@slhckに感謝):

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

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

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

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

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

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


ありがとう@slhck manページをチェックしましたが、これについての明示的な言及を見つけることができませんでした、回答が更新されました。
テルドン14年

すばらしいです!今、非常に明確です...もし最小がwww-dataグループの一部であるとしたら?

@SandroDzneladzeいや、チャンクしたいユーザーと同じユーザーIDが必要です。
テルドン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.