ルートアクセスを必要とするLinuxコマンドを決定するものは何ですか?私は、たとえば、apt-get
にはroot
特権が必要です。しかし、これらのコマンドを他のコマンドと区別するものは何ですか?それは単に実行可能ファイルの所有権と実行権限の問題ですか?
Linuxでは、rootの特権はある時点で「機能」に分割されていたため、そのドキュメントを調べることでrootの特別な特権の完全なリストを取得できます。 man 7 capabilities
。
質問に答えるために、これらの特権の1つが必要な場合、コマンドはrootとして実行する必要があり、その非スクリプト実行可能ファイルには、ファイルメタデータに関連する機能が設定されていません(たとえば、python =スクリプトには機能が必要です。その機能はpythonインタープリター)にある必要があります。
Rootアクセスを必要とする一部のコマンドは、実行可能ファイルにSUIDビットが設定されているため、Sudo
のようなものを必要としないことに注意してください。このビットにより、実行アクセス権を持つユーザーによって実行されると、実行可能ファイルは所有者(通常はroot)として実行されます。例は、Sudo
自体です。これは、ユーザーの変更は、実行する必要のある特権付きのアクションであるためです。
編集:私はあなたの質問から、コマンドを実行する前にコマンドがrootアクセスを必要とするかどうかを決定できるという考えがあるかもしれないことを覚えています。そうではありません。プログラムはroot権限を必要とする場合とそうでない場合があり、実行時にデータが提供されるため、プログラムによって決定される場合があります。たとえば、引数なしでvim
を呼び出してから、一連のキーを押して貼り付け、ファイルに何かを書き込むように指示する、または書き込む権限がない、またはそれ自体が別のコマンドを実行するroot権限が必要です。実行前のコマンドについては、最終的にrootアクセスが必要になることを示すものはありません。それは、それを必要とする何かを行おうとしたときに初めて決定できるものです。
とにかく、ここにrootの権限のリファレンスマンページからの例をいくつか示します。
これは主に、ツールまたはプログラムが行うことの問題ですです。スーパーユーザー以外は、自分が所有またはアクセスできるファイル、つまりすべては、それを実行するためにスーパーユーザーのアクセスを必要とします。
/etc
)/lib
および/usr/lib
)またはバイナリ(/bin
、/usr/bin
)renice
)パーミッションを分割する順番ではなく、パーミッションを検証するのはユーザーのアイデンティティーによると思います。ファイルとユーザーには特権があり、コマンドを分割しないでください。