オペレーティングシステムは、特定のコマンドにsudoが必要であることをどのように知ることができますか?

オペレーティングシステムは、特定のコマンドにsudoが必要であることをどのように知ることができますか?
  1. 実行可能ファイルを実行すると、オペレーティングシステムが権限を拒否することがあります。たとえば、make install実行するにはシステムパスを持つプレフィックスが必要ですsudoが、システム以外のパスを持つプレフィックスはそうではありませんsudo。オペレーティングシステムは、プログラムが実行する前に実行可能ファイルを実行するには、ユーザーが持っているよりも多くの権限が必要であることをどのように決定しますか?
  2. 時々、プログラムの実行は権限を拒否されませんが、使用される場合。たとえば、特定のシステムディレクトリで sudo実行されている場合、特定のディレクトリはそれを介してのみアクセスできます。なぜオペレーティングシステムは、プログラムが実行される前にそのようなプログラムを実行する権利を拒否しないか、またはより多くの権利が優先されるという使い慣れた通知を拒否しないのですか?dusudo
  3. sudo効果があればsu効果があり、su効果があればsudo効果があるという意味ですか?またはを使用すると、ユーザーは?suより多くの作業を実行できます。sudoオペレーティングシステムはどのsudoように作業時期とsu作業時期を決定しますか?

答え1

説明する目的に応じて、オペレーティングシステムは最初にsudoが必要かどうかを決定しません。走るプログラム。代わりに/usr/bin、オペレーティングシステムは、プログラムの実行が開始された後にファイルアクセスをブロックし、現在のユーザーに許可されていない操作(新しいコマンドをインストールするためにファイルに書き込む)を実行しようとします。この場合の対策はプログラムによって異なります。make実行は停止しますが、duメッセージを印刷してから次のファイル/ディレクトリに進みます。

suコマンドは、sudoroot権限でプログラムを実行する2つの方法です。使用するオプションによって、新しいプログラムを起動する際の環境内容など細かい部分が異なる場合があります。オペレーティングシステムは、これらのいずれかがいつ動作できるかを決定する必要はありません。

答え2

  1. たとえば、書き込みアクセスを拒否するファイルシステム権限が原因で「権限が拒否されました」というメッセージが表示されることがあります。実行可能ファイル/ツールは、単にファイルシステムが実行しようとしている操作を実行するのに十分な権限を与えていることを確認し、ファイルシステムがそれを拒否するとエラーが発生します。他の場合は、ツール自体がユーザーIDを確認して引き続き使用できるようにします。
  2. プログラムを実行すると、sudo他のユーザーの名前で実行されます。そのユーザーが自分のユーザーよりも「より多くのタスクを実行でき、」構成を使用して他のユーザーに代わってそのタスクをsudo実行できる場合は、より多くのsudoタスクを実行できます。しかし、これは必須ではありません。sudoコマンドラインの先頭にこれを追加すると、実際にはsudoasになり、通常rootよりもはるかに多くのことができます。
  3. 絶対にしないでください。使用するにはsudoユーザーパスワードを入力する必要があり、その後ターゲットユーザーに代わっていくつかの操作を実行できます。使用するには、su次のものが必要です。対象ユーザーのパスワードあなたがそれを持っているなら、あなたはシステムに関する限りあなたのターゲットユーザーになり、ユーザーができることをすべて行うことができます。

また、見ることができます

答え3

suそしてsudoそれは特権的なプログラムです。 su実際の有効なユーザーとグループID(認証成功後)をsuアクセスするユーザーのIDに変更します。suだから、login。これはsu、ルートだけでなくすべてのユーザーに変更するために使用できます。 sudoまた、実際の実効ユーザーとグループIDを変更します。これまでsu、およびsudoは似ていますが(関連はありません)それ以上では非常に異なります。

を使用するには、suターゲットのパスワードを知る必要があり、認証されたら、そのユーザーとして必要なすべての操作を実行できます。su設定でSU_WHEEL_ONLY使用を制限できます/etc/login.defs。設定すると、このグループのユーザーのみがwheel使用でき、suそれ以外の場合は制限はありません。それ以外はsu全部または専務です。

sudoこれとは全く違います。 sudoer(着信ユーザー)が実行できるアクションを制限するsudoために、非常に複雑なポリシーを定義できます。たとえば、特定のユーザーは特定の特権を持つ特定のプログラムのみを実行でき、他のユーザーは他の特権を持つ別のプログラムを実行できるポリシーを定義できます。/etc/sudoerssudo

区別される機能の1つsudoは、ユーザーが以下を介して自分で認証するように構成できることです。自分のパスワード(ターゲットではありません)。したがってsudo、権限を持つユーザーは、スーパーユーザーのパスワードを扱うことなく、定義された権限のあるタスクのみを実行でき、一定のレベルの責任も付与されるため、管理者の間で非常に人気があります。

答え4

まだ誰も✓評価していないので、私が考えることができるすべてを含む答えをまとめました。

1 実行ファイルを実行すると、オペレーティングシステムが権限を拒否することがあります。たとえば、システムパスプレフィックスを使用してmake installを実行するにはsudoが必要ですが、非システムパスプレフィックスを使用してmake installを実行する場合はsudoは必要ありません。オペレーティングシステムは、プログラムが実行する前に実行可能ファイルを実行するには、ユーザーが持っているよりも多くの権限が必要であることをどのように決定しますか?

いいえ、実行可能ファイルが起動したらまだ完了していません。実行可能ファイルが何らかの操作を試みると完了します。

オペレーティングシステムはファイルシステムの権限と機能を検証します(これはファイルシステムの権限には含まれておらず、良好なレベルを下げる、mknode、いくつかの低レベルのネットワークエントリ、他のプロセスを終了する、再起動、時間設定などが含まれます)。 。権限がないと、これを行うことはできません。ルートには、CAP_DAC_OVERRIDE(ファイル権限を無視)を含むすべての機能セットがあります。

2プログラムを実行しても権限が拒否されないことがありますが、sudoで実行するとより多くのことができます。たとえば、システムディレクトリでduを実行している場合、そのディレクトリはsudoを介してのみアクセスできます。なぜオペレーティングシステムは、プログラムが実行される前にそのようなプログラムを実行する権利を拒否しないか、またはより多くの権利が優先されるという使い慣れた通知を拒否しないのですか?

オペレーティングシステムは、プログラムが何をするかを知りません。したがって、始める前に権限を確認し、何をするかを決定するのはプログラムの役割です。しかし、そうする必要はありません。

注:Androidには、アプリケーションが使用できる権限を宣言するマニフェストがあります。オペレーティングシステムは、宣言されていない権限を使用しようとするすべてのアプリケーションを終了します。オペレーティングシステムは、権限が尊重されることを常に保証するわけではありません。たとえば、ネットワークにアクセスできない場合があります。

2 sudoが動作するたびにsuも動作するのは本当ですか? suが動作するたびにsudoも動作しますか?それとも、suを使用すると、ユーザーがsudoを使用するよりも多くのことを行うことができますか?オペレーティングシステムは、sudoが動作する時期とsuが必要な時期をどのように決定しますか?

sudoそしてsuほぼ同じことをします。いくつかの違いは、環境変数を処理し、その他のセキュリティ問題を回避することです。ただし、これらはすべて別のユーザーになることができるツールであり、すべてデフォルトのユーザールートを持っています。

su変更したいユーザー/グループのパスワードを入力する元のツールです。

sudo最新バージョンでは、デフォルトで自分のパスワードを入力する必要がありますが、切り替えたいユーザー/グループのパスワードを許可するか、パスワードがまったく必要ないように設定できます。また、使用するコマンド、作業対象、そのコンピュータのユーザーがプログラムで認証される方法など、さまざまな構成が可能です。これはsudoeditその一部sudoであり、他のユーザーによる編集を許可し、エディタ内のサブシェリング(エディタでexecを呼び出して高い権限でランダムプロセスを実行)によるセキュリティ上の問題を回避するためにも使用できます。

関連情報