
注:私は「sudoが何をしているのか」という質問ではありません。私は答えを知っています。
sudoの概念がないITシステムがたくさんあります。代わりに、各システムユーザーは「管理者」(ログインするとすぐにすべてのシステム権限がアクティブになることを意味します)または一部の「一般ユーザー」です。 「権限の低いユーザー」。
仮想の例を見てください。 Gmailが突然一般的なGmailパスワードに加えてメールを送受信するたびに「sudo」パスワードを追加入力する必要があると発表した場合、私は「既にパスワードを提供したので、何を目的として使用されたのか」と尋ねます。このアカウントに関連するすべての権限にアクセスしますか?」
私はsudoに同じ質問をした。システムにアクセスするためにすでにユーザー名とパスワードを入力している場合、追加のsudoパスワードを入力しなくても、システムが自分のユーザーアカウントを管理者権限を持っていると認識しないのはなぜですか?
答え1
これには、セキュリティの世界で一般的に使用されている多くの概念があります。
まず、私たちは常にユーザーが「最低限必要な権限」で実行したいと思います。特に企業環境では(これについては後で説明します)、アイデアは、人々が自分のコンピュータを使用するために必要な権限だけをもう持たないことを望むということです。 「正常業務」(BAU)では、/ etcのファイルを変更する必要はありません。これは例外です。
これは次のセクション「権限の拡大」につながります。 BAU外の何かが識別されたら、ユーザーは自分がより特権的な仕事をしていることを知ってほしい。したがって、sudo
コマンドを使用してくださいそして現在行っていることを確認するためにパスワードを再入力してください。パスワードを再入力することは、ユーザーが意識的にこれを承認したことを意味するので、重要です。必ずしもパスワードである必要はありません。一部のバージョンでは、セッションを記録し、後で再生できるように記録する2段階認証プロセスが必要になる場合があります。
それでは、「エンタープライズ」について話し、Windows XP Home Editionで学んだ教訓を見てみましょう。これにより、インストール(またはOEMの最初の実行)中に作成したユーザーが自動的に管理者権限を持つようになります。常に管理者権限で実行します。これは、誤って重要なファイルが削除される可能性があることを意味します。または、攻撃者がタスクを自動化できるようにするバグ(電子メールやイメージレンダリングのバグなど)には管理者権限があります。これが以前のバージョンのWindowsでウイルスとマルウェアが繁栄する理由の1つです。
したがって、「BAU」と「特権」の活動の分離は、企業を超えて家庭および単一ユーザー環境に拡張されます。 Vistaから始めると、Windowsにも「権限のある操作を実行しようとしています。パスワードを再入力してください」という概念があることに注目する価値があります。
要約:sudo
セキュリティコンテキストを日常的に実行することが期待されるアクティビティ(「電子メールの読み取り」、「ドキュメントの作成」、「Webナビゲーション」)から、権限があると見なされるアクティビティ(「新しいユーザーの作成」)に切り替える方法。 、「システム構成の変更」、「他のユーザーが所有するファイルの削除」...)。
ほとんどの個人ユーザーは「パスワードの再入力」で十分です。ビジネスの場合たくさんもっと複雑です。https://www.sweharris.org/post/2018-08-26-minimal-sudo/質問のいくつかの例を見てください。
以下を追加するように編集されました。
また、Unixにも「管理者」という概念があることを指摘したいと思います。これが「root」アカウントです。企業環境では、Tom、Dick、またはHarryがrootアカウントを使用して変更したかどうかわからないため、人々はこれを使用するのが好きではありません。 sudo
監査可能な状況で人々が権限を昇格できるようにする方法です。最小権限方法。 Tomはすべてのファイルを実行しsudo cat
て読み取ることができますが、システムを再起動することはできません。 DickとHarryはsudo reboot
システムを再起動できますが、保護されたファイルを読み取ることはできません。
このようにして、sudo
以下の条件を満たすために必要な最小限の権限が達成される。役割割り当てられます。これは重要なセキュリティ要件です。
答え2
すべてをrootとして実行するのは非常に悪い考えです。ルートとして実行しようとすると、rm -rf /
オペレーティングシステム全体が削除され、ルートがないと失敗するためです。 sudoを使用する目的は、必要な場合にのみ権限を昇格させることです。これは、悪意のあるスクリプトが実行されたときにroot権限を取得したり、誰かがプログラムにアクセス(root権限)したりできるようにする、実行中のプログラムのバグを防ぐためです。
答え3
Linuxでは、特権「として知られるようにLinuxの機能。この機能の基本的なアイデアは、スーパーユーザー権限をより小さな部分に分割することです。これにより、プロセスは必要な最小限のスーパーユーザー権限サブセットのみを持つことができます。
Linux 4.3には、実行後もプロセスが機能し続ける環境機能が含まれています。プログラムの実行。これは、root以外のユーザーが基本的に効果的な機能を持つことを可能にするメカニズムを構築するために使用できます。
わずかに異なる動作をする別々の継承可能な関数のセットもあります。継承可能な機能は、その機能がファイルの機能に含まれている場合にのみ適用されるため、特定の実行可能ファイルのみが拡張機能で実行できます。
他の回答で指摘したように、特権ユーザーを使用してシステム管理以外の作業を実行するのは安全ではありません。権限のないプロセス(およびユーザー)がシステムに影響を与える可能性がある損傷は制限されています。システムのセキュリティを維持するためには、不要なときはいつでも権限を削除することを覚えておくよりも、必要な場合にのみユーザー操作で権限を向上させる方が簡単です。
さらに、sudo
ユーザーは実際に構成を通じてある程度管理ロールに関連付けられます。スーパーユーザー権限を必要とする管理タスクを実行するためのインターフェースを提供します。 sudoは、パスワードの入力を求めないように設定できます。考えられるセキュリティの問題については、次を参照してください。情報セキュリティSE:パスワードのないsudoモードでは、NOPASSWDはどのくらい安全ですか?
もっと読むためにお勧めします機能マニュアルページ良い概要を得るために [RFC]機能:環境機能これは、環境能力の理論的根拠と初期の継承能力の問題を説明しています。