chown
コマンドがroot専用であるのはなぜですか?非rootユーザーがchownを使用して、自分が所有するファイルを配布できないのはなぜですか?
ほとんどのUNIXシステムでは、ユーザーがファイルを「譲渡」することはできません。つまり、ユーザーは、ターゲットユーザーとグループの権限を持っている場合にのみchown
を実行できます。 chown
を使用するには、ファイルを所有するかrootになる必要があるため(ユーザーは他のユーザーのファイルを適切に使用できません)、chown
を実行してファイルの所有者を別のユーザーに変更できるのはrootだけです。
この制限の理由は、ファイルを他のユーザーに譲渡すると、珍しい状況でも、重大な状況が発生する可能性があるためです。例えば:
chown
を実行してそのファイルを作成します。別のユーザーBillが所有しています。そのファイルは、Aliceだけがファイルを使用できる場合でも、Billのディスククォータの下でカウントされます。Linuxでは、chownするためにCAP_CHOWN機能が必要です。ルートはそのように付与されています。説明は http://vouters.dyndns.org/tima/Linux-OpenVMS-C-Implementing_chown.html を参照してください。 CAP_CHOWN機能を提供する場合は、次のようにlibcap-ngまたはlibcapを使用してコードをビルドします。 http://vouters.dyndns.org/tima/Linux-PAM-C-Pluggable_Authentication_Modules_programming_example.html CAP_AUDIT_WRITEをCAP_CHOWNに単純に置き換える必要がある場合。
コマンドを起動できますが、rootでない場合は機能しません。簡単です。ソフトウェアをrootユーザーに変更できるユーザーを想像してみてください。それはsetuidビットを追加することができ、そして、やっと、その人はrootです!したがって、使用によりchmodでビットを追加できますが、ファイルの所有者を変更することはできません。