Run0 と Sudo: 違いは何ですか?
![Run0 と Sudo: 違いは何ですか?](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/run0-vs-sudo-linux-00-featured-image-1-640x375.webp)
![端末プロンプトにコマンドが表示されているモニターの写真 端末プロンプトにコマンドが表示されているモニターの写真](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/run0-vs-sudo-linux-00-featured-image.webp)
Run0 は、Systemd ベースの Linux システム用の新しい権限昇格プログラムです。sudo と同様に、ルート ユーザーとしてコマンドを実行し、マシンの内部にアクセスできます。この記事では、Run0 と Sudo を比較して、適切な権限昇格ツールを決定できるようにします。
Run0 と Sudo: 並べて比較
カテゴリー | Run0 | 須藤 |
---|---|---|
構成可能性 | 設定ファイルは付属していません。コマンドラインフラグを使用して動作を変更します。 | 2つの設定ファイルと多数のコマンドラインフラグが付属 |
使いやすさ | ほとんどのタスクでシンプルで簡単に使用できます | 正常に動作させるには、いくつかの設定が必要になる場合があります |
安全 | SUIDに依存せず、コードフットプリントが小さい | SUIDに依存しており、コードサイズが大きいため攻撃対象領域が広くなります。 |
拡張性 | サードパーティのプラグインをサポートしていない | サードパーティのプラグインを開発するためのAPIを備えています |
ネットワークサポート | 単一のマシンで実行するように設計 | 集中アクセスポリシーを使用してコンピュータネットワークを操作できる |
最適な用途 | よりシンプルなSudoの代替品を探している一般ユーザー | カスタマイズできる信頼性の高いオプションを探しているパワーユーザー |
Run0とは何か、なぜ使うのか
Systemd のバージョン 256 でリリースされた Run0 は、Linux の権限昇格に関する独自のアプローチです。Systemd-run を使用して、ルート権限でプログラムを実行するための安全で分離された環境を作成します。
Run0 の主なセールスポイントは、ルート コマンドを実行するために setuid (SUID) に依存しないことです。これにより、プログラムは大規模な SUID プログラムによくある権限昇格攻撃の影響を受けません。
![run0 と比較した sudo バイナリの setuid プロパティを強調表示するターミナル。 run0 と比較した sudo バイナリの setuid プロパティを強調表示するターミナル。](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/run0-vs-sudo-linux-01-suid-program-comparison.webp)
Run0 のもう 1 つのセールス ポイントは、認証エージェントを Polkit にオフロードすることです。このプログラムは、システム上のアプリのポリシー設定を管理します。マシン上の認証を一元化するだけでなく、プログラムやユーザーがルート アクセスを取得する方法をより細かく制御することもできます。
最後に、Run0 は特権コマンドを呼び出すたびに新しい疑似 TTY (PTY) を作成します。つまり、プログラムは現在のシェル環境を継承しないため、システム上で動作が不正なプロセスを簡単に分離できます。
![システムの systemctl に表示される PTY ルート プロセスを強調表示する端末。 システムの systemctl に表示される PTY ルート プロセスを強調表示する端末。](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/run0-vs-sudo-linux-02-isolated-pty-process-sample.webp)
Sudoとは何か、なぜ使うのか
Sudo は、Linux やその他の UNIX 系オペレーティング システム向けの最も初期の権限昇格プログラムの 1 つです。1980 年代に初めて開発され、組み込みの UNIX ユーザーおよびグループ システムを使用して、システム コマンドのルート権限を管理します。
sudo の主なセールスポイントは、権限の昇格と許可のためのオールインワン ソリューションであることです。これを使用すると、スーパーユーザーになれるユーザーと、スーパーユーザーが root として実行できるプログラムを管理するには、sudoers ファイルを構成するだけで済みます。これは、root アクセスを効率的に管理したいシステム管理者にとって魅力的です。
![sudoers ファイルの内容を表示する端末。 sudoers ファイルの内容を表示する端末。](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/run0-vs-sudo-linux-03-sudoers-sample-config-file.webp)
sudo を使用するもう 1 つの理由は、マシン上でさまざまなスーパーユーザーによって実行されたシステム コマンドの履歴を監視および確認できることです。これは、システムに問題が発生した正確な瞬間を特定できるため、トラブルシューティングの際に役立ちます。
![システムで実行されたすべての sudo コマンドをリストする sudoreplay コマンドの出力を表示する端末。 システムで実行されたすべての sudo コマンドをリストする sudoreplay コマンドの出力を表示する端末。](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/run0-vs-sudo-linux-04-sample-sudo-logs-user-command.webp)
最後に、sudo は組み込みの LDAP および Active Directory サポートにより、複数のホストに簡単に拡張できます。そのため、sudo はチームや企業の複数のマシンを管理する管理者にとっても優れたツールとなります。
Run0 vs Sudo: 徹底比較
Run0 と Sudo はユーザー権限を昇格するための優れたツールですが、両方のプログラムは権限昇格を実現するために異なるアプローチを採用しています。以下では、どちらが自分に適しているかを判断するのに役立ついくつかの違いについて説明します。
構成可能性
他の権限昇格プログラムとは異なり、Run0 はデフォルトの動作を変更するために設定ファイルを使用しません。代わりに、ターミナルで実行するときに、いくつかの組み込みフラグを使用してカスタマイズします。これにより、設定ファイルの調整に煩わされることなく、ワークフローに集中できます。
![run0 のヘルプ画面が表示されている端末。 run0 のヘルプ画面が表示されている端末。](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/run0-vs-sudo-linux-05-run0-help-screen-output.webp)
一方、sudo は、2 つの主要な設定ファイル「/etc/sudo.conf」と「/etc/sudoers」に多くのオプションを提供しています。どちらも連携して、システムでの sudo の動作を制御します。たとえば、パスワードなしで sudo を実行するように設定することもできます。これは新しいユーザーにとっては混乱を招く可能性がありますが、このレベルの柔軟性とカスタマイズにより、独自のカスタム sudo ワークフローを作成できます。
![sudo.conf ファイルの内容を表示する端末。 sudo.conf ファイルの内容を表示する端末。](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/run0-vs-sudo-linux-06-sudo-config-file-contents.webp)
優勝者:須藤
使いやすさ
今日の Linux ディストリビューションのほとんどには、Run0 と Sudo が適切なデフォルト設定で出荷されており、追加の設定をしなくても簡単に使用できます。とはいえ、この 2 つのプログラムには、一部のユーザーにとって致命的となる可能性のある、使い勝手の悪い点がいくつか残っています。
Run0 の主な問題は、認証に Polkit に依存していることです。一部の端末では、Run0 はパスワード プロンプトを別のディスプレイに表示することがあります。複数のシェル セッションを管理するために Tmux などの端末マルチプレクサを使用している場合、これが問題になることがあります。
![多重化された端末での run0 要求に対する Polkit プロンプトを示すスクリーンショット。 多重化された端末での run0 要求に対する Polkit プロンプトを示すスクリーンショット。](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/run0-vs-sudo-linux-07-polkit-sample-authentication-prompt-tmux.webp)
一方、Sudo の最大の欠点は、通常のテキスト エディターで sudoers ファイルを編集できないことです。代わりに、sudoers ファイルに整合性チェックを追加する Visudo というプログラムを使用するように求められます。これにより、sudoers ファイルの編集はより安全になりますが、ルート権限のみを管理したい一般ユーザーにとっては、不必要に複雑になる可能性があります。
![visudo ユーティリティのヘルプ画面を表示する端末。 visudo ユーティリティのヘルプ画面を表示する端末。](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/run0-vs-sudo-linux-08-visudo-help-screen.webp)
優勝者: Run0
ソースコードのサイズ
プログラムのソース コードの全体的なサイズは、そのプログラムの現在の複雑さを示す良い指標となります。コードの複雑さは潜在的なセキュリティ侵害につながる可能性があるため、これは権限昇格プログラムにとって重要です。
Run0 と他の権限昇格アプリとの違いの 1 つは、Systemd-run 上に構築されていることです。これにより、Run0 は Systemd-run の機能を活用できるだけでなく、プログラム自体に多くのコードが含まれないことも意味します。その結果、Run0 は将来の潜在的なセキュリティ問題を監査しやすくなります。
![Run0 のマニュアル ページで、Systemd-run 上に構築されていることを説明する文を強調表示している端末。 Run0 のマニュアル ページで、Systemd-run 上に構築されていることを説明する文を強調表示している端末。](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/run0-vs-sudo-linux-09-systemd-run-mention-run0-man-page.webp)
Sudo は、複数のファイルとプログラミング言語にまたがる大規模なソフトウェア プロジェクトです。この複雑さにより、sudo は強力な権限昇格アプリになることができましたが、同時に、潜在的な悪用に対して大規模な攻撃対象領域を持つことも意味します。
![sudo Github リポジトリからのコード行全体を表示するターミナル。 sudo Github リポジトリからのコード行全体を表示するターミナル。](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/run0-vs-sudo-linux-10-sudo-lines-of-code-statistic.webp)
優勝者: Run0
ソースコード時代
特定のソフトウェア プロジェクトの古さも、権限昇格プログラムの信頼性を判断する際の要素となります。新しいプロジェクトにはバグや問題が多く含まれることが多く、古いプロジェクトはより安定している傾向があります。
Run0 は、2024 年 6 月に Systemd に追加された比較的新しいプログラムです。現在、このアプリは Arch Linux や Fedora Rawhide などの最先端のディストリビューションでのみ入手できます。そのため、Run0 はカジュアルでミッションクリティカルでない作業に適しています。
Sudo は、現在も開発が続けられている最も古いソフトウェア プロジェクトの 1 つです。30 年以上の開発歴を持つ sudo は、さまざまなワークロードを処理できる非常に成熟したプログラムです。そのため、信頼できる安定した権限昇格プログラムを探している人にとっては、非常に魅力的です。
優勝者:須藤
Run0 vs Sudo: どちらのアプリが勝つか
結局のところ、適切な権限昇格プログラムの選択は、システムで何を達成しようとしているかによって決まります。
- 使いやすくシンプルな権限昇格アプリをお探しなら、Run0 は良い選択です。設定不要の設計とルート プロセスを分離するアプローチの組み合わせにより、手間のかからない Sudo の代替品を探している一般ユーザーに最適です。
- カスタマイズ可能で安定した権限昇格アプリが必要な場合は、Sudo を選んで間違いはありません。数十年にわたる開発の歴史と豊富な機能により、Sudo をカスタム ワークフローに合わせて調整するのは非常に簡単です。
マシンに適した権限昇格アプリを選択することは、Linux でスーパーユーザーがどのように機能するかを理解するための第一歩にすぎません。マシンの内部を詳しく調べて、Su と Sudo の違いを調べてみましょう。
画像クレジット: Gabriel Heinzer (Unsplash経由)。すべての変更とスクリーンショットはRamses Redによるものです。
コメントを残す