なぜchown
コマンドはルート専用ですか?非rootユーザーがchownを使用して所有するファイルを配布できないのはなぜですか?
chown
するために使用できない理由だと思います。(ファイルシステム構成に応じて、できるシステムを見てきました。)
なぜchown
コマンドはルート専用ですか?非rootユーザーがchownを使用して所有するファイルを配布できないのはなぜですか?
chown
するために使用できない理由だと思います。(ファイルシステム構成に応じて、できるシステムを見てきました。)
回答:
ほとんどのUNIXシステムは、ユーザーがファイルを「渡す」ことを防ぎます。つまり、ユーザーchown
は、ターゲットユーザーとグループの特権を持っている場合にのみ実行できます。使用chown
するにはファイルを所有するか、rootになる必要があるため(ユーザーは他のユーザーのファイルを適切に使用できない)、rootのみが実行chown
してファイルの所有者を別のユーザーに変更できます。
この制限の理由は、ファイルを別のユーザーに配布すると、まれではあるが依然として重要な状況で悪いことが起こる可能性があるためです。例えば:
chown
。このファイルは、Aliceのみがファイルを使用できる場合でも、Billのディスククォータの下でカウントされます。/bin/bash
してsetuidし、その後chown
、必要な人にコピーできることです。今、彼らはその人としてシェルにアクセスできます。
chown
常にsetuidビットとsetgidビットをクリアします。
drwxr-xr-x ring0 ring0 .
ルートが通常のファイルを(持っている)を-rw-r--r-- root root file
、なぜ私が行うことができない、)chown ring0 file
とにかくとして、行うことが許されているのでring0
、 cp file x ; rm file ; mv x file
(といくつかのオプションtouch sometime file
...)?
Linuxでは、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ビットを追加できます。そのため、使用するとchmodでビットを追加できますが、ファイルの所有者を変更する機会はありません。