web-dev-qa-db-ja.com

ルートアクセスを必要とするLinuxコマンドを決定するものは何ですか?

ルートアクセスを必要とするLinuxコマンドを決定するものは何ですか?私は、たとえば、apt-getにはroot特権が必要です。しかし、これらのコマンドを他のコマンドと区別するものは何ですか?それは単に実行可能ファイルの所有権と実行権限の問題ですか?

24
Brian Dobby

Linuxでは、rootの特権はある時点で「機能」に分割されていたため、そのドキュメントを調べることでrootの特別な特権の完全なリストを取得できます。 man 7 capabilities

質問に答えるために、これらの特権の1つが必要な場合、コマンドはrootとして実行する必要があり、その非スクリプト実行可能ファイルには、ファイルメタデータに関連する機能が設定されていません(たとえば、python =スクリプトには機能が必要です。その機能はpythonインタープリター)にある必要があります。

Rootアクセスを必要とする一部のコマンドは、実行可能ファイルにSUIDビットが設定されているため、Sudoのようなものを必要としないことに注意してください。このビットにより、実行アクセス権を持つユーザーによって実行されると、実行可能ファイルは所有者(通常はroot)として実行されます。例は、Sudo自体です。これは、ユーザーの変更は、実行する必要のある特権付きのアクションであるためです。

編集:私はあなたの質問から、コマンドを実行する前にコマンドがrootアクセスを必要とするかどうかを決定できるという考えがあるかもしれないことを覚えています。そうではありません。プログラムはroot権限を必要とする場合とそうでない場合があり、実行時にデータが提供されるため、プログラムによって決定される場合があります。たとえば、引数なしでvimを呼び出してから、一連のキーを押して貼り付け、ファイルに何かを書き込むように指示する、または書き込む権限がない、またはそれ自体が別のコマンドを実行するroot権限が必要です。実行前のコマンドについては、最終的にrootアクセスが必要になることを示すものはありません。それは、それを必要とする何かを行おうとしたときに初めて決定できるものです。

とにかく、ここにrootの権限のリファレンスマンページからの例をいくつか示します。

  • プロセスUID(setuid(2)、setreuid(2)、setresuid(2)、setfsuid(2))を任意に操作します。
  • ファイルの読み取り、書き込み、および実行の権限チェックをバイパスします。 (DACは「任意アクセス制御」の略です。)
  • シグナルを送信するための許可チェックをバイパスします(kill(2)を参照)。これには、ioctl(2)KDSIGACCEPT操作の使用が含まれます。
  • さまざまなネットワーク関連操作を実行します。
    • インターフェース設定;
    • iPファイアウォールの管理、マスカレード、およびアカウンティング。
    • ルーティングテーブルを変更する。
  • ソケットをインターネットドメインの特権ポート(1024未満のポート番号)にバインドします。
  • カーネルモジュールをロードおよびアンロードします(init_module(2)およびdelete_module(2)を参照)。
  • システムクロックを設定します(settimeofday(2)、stime(2)、adjtimex(2));リアルタイム(ハードウェア)クロックを設定します。
  • Quotactl(2)、mount(2)、umount(2)、swapon(2)、swapoff(2)、sethostname(2)、setdomainname(2)など、さまざまなシステム管理操作を実行します。
  • Reboot(2)およびkexec_load(2)を使用してください。
  • Chroot(2)を使用してください。
  • プロセスのナイス値(Nice(2)、setpriority(2))を上げ、任意のプロセスのナイス値を変更します。
15
JoL

これは主に、ツールまたはプログラムが行うことの問題ですです。スーパーユーザー以外は、自分が所有またはアクセスできるファイル、つまりすべては、それを実行するためにスーパーユーザーのアクセスを必要とします。

  • リスニングを開くTCP 1024未満のポートのソケット
  • システム構成の変更(例:/etc
  • グローバルにアクセス可能な新しいライブラリ(/libおよび/usr/lib)またはバイナリ(/bin/usr/bin
  • 十分な許容モードを持たない、タッチを実行しているユーザーが所有していないファイルにタッチする
  • 他のユーザーのファイルの所有権を変更する
  • プロセスの優先順位を上げる(例:renice
  • ほとんどのサービスの開始または停止
  • カーネル構成(例:swappinessの調整)
  • ファイルシステムクォータの調整
  • 「フル」ディスクへの書き込み(ほとんどのファイルシステムはrootユーザーのためにいくらかのスペースを予約しています)
  • 他のユーザーとしてのアクションの実行
32
DopeGhoti

パーミッションを分割する順番ではなく、パーミッションを検証するのはユーザーのアイデンティティーによると思います。ファイルとユーザーには特権があり、コマンドを分割しないでください。

0
Aldridge