OSはコマンドにsudoが必要であることをどのように認識しますか?


16
  1. 実行可能ファイルを実行すると、OSが許可を拒否する場合があります。たとえばmake install、システムパスをプレフィックスとして実行する場合sudoはが必要になりますが、非システムパスをプレフィックスとして実行する場合は要求されませんsudo。OSは、プログラムが何かを実行する前であっても、実行可能ファイルを実行するにはユーザーよりも多くの特権が必要であると判断しますか?
  2. 場合によっては、プログラムの実行が許可されないことはありませんが、プログラムをで実行すると、プログラムはさらに多くのことができるようになりますsudo。たとえば、duあるシステムディレクトリで実行している場合、そのディレクトリでのみ、 sudoあるディレクトリにアクセスできます。OSがプログラムを実行する前に、そのようなプログラムを実行する許可を拒否しない、またはより多くの特権を通知することが望ましいのはなぜですか?
  3. それはいつでもというのは本当であるsudo作品が、suまた仕事、そしていつでもしますsu作品は、sudoまた働くのだろうか?またはsu、ユーザーは以上のことを行うことができますsudoか?OSは、いつsudo機能し、いつsu必要になるかをどのように決定しますか?

この質問に回答しましたか、それとも詳細情報が必要ですか?
ctrl-alt-delor

回答:


14
  1. たとえば、ファイルシステムのアクセス許可が書き込みアクセスを拒否しているために、「アクセス許可が拒否されました」というメッセージが表示されることがあります。実行可能ファイル/ツールは、ファイルシステムがあなたがしようとしていることをするのに十分な許可をあなたに与えているかどうかをチェックし、ファイルシステムによって拒否された場合はエラーを投げます。また、ツール自体がユーザーIDを確認してから、引き続き使用を許可する場合もあります。
  2. 一緒にプログラムを実行すると、sudo他のユーザーの名前で実行されます。そのユーザーが自分のユーザーよりも「多くのことを実行できる」場合sudo、他のユーザーに代わってこれらのことを実行できるように設定すると、はい、sudoより多くのことができるようになります。ただし、これは必要ありません。sudoコマンドラインの先頭でタックするだけで、実際にはとしてsudoingしているrootので、通常は単なる人間以上のことをすることができます。
  3. ほとんど間違いない。使用sudoするには、独自のユーザーパスワードを入力する必要があり、ターゲットユーザーに代わっていくつかの操作を行うことができます。を使用するsuには、ターゲットユーザーのパスワードが必要です。パスワードがある場合は、システムに関する限りそのターゲットユーザーになり、ユーザーが実行できるすべての操作を実行できます。

こちらもご覧ください


ありがとう。「書き込みアクセスを拒否するファイルシステムのアクセス許可」=「ファイルのアクセスモードには、chmodで設定できる実行ビットがユーザーに設定されていません」
14

1
@Tim実際には、「ファイルのアクセスモードにはユーザーに書き込みビットが設定されていません」。もちろんchmod、ファイルの所有者またはのいずれかであれば、これを修正できますroot
ジョセフR. 14

sudoが必要かどうかは、実行ビットがユーザーに設定されていないかどうかに完全に依存していますか?unix.stackexchange.com/q/147052/674
StackExchange for Allの

@Tim当然、最初に実行可能ファイルを実行するには、実行ビットが必要です。
ジョセフR. 14

1
@JosephR。明確ではない。chmod 400 hello && /lib64/ld-linux-x86-64.so.2 ./hello素晴らしい「Hello、World!」を生成します 出力。
doneal24

24

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

suそしてsudoコマンドは、root権限でプログラムを実行する2つの異なる方法があります。使用するオプションに応じて、新しいプログラムの起動時の環境の内容など、細部が異なる場合があります。OSは、どちらが機能するかを決定する必要はありません。


6

suおよびsudo特権プログラムです。 su(認証が成功した後)実際の有効なユーザーIDとグループIDをユーザーのIDに変更しますsu。したがって、suはに似ていloginます。suルートだけでなく、任意のユーザーに変更するために使用できることに注意してください。 sudoまた、実際の有効なユーザーIDとグループIDも変更します。この時点までsusudo、彼らは非常に異なっていることを超えて、類似した(しかし、無関係)です。

を使用suすると、ターゲットのパスワードを知る必要があり、一度認証されると、そのユーザーとして何でもできます。使用がsu設定することによって制限することが可能SU_WHEEL_ONLY/etc/login.defs。設定されている場合、グループ内のユーザーのみwheelがを使用できますsu。それ以外の場合は制限されません。それとは別に、suすべてまたはゼロです。

sudoそれに関してはまったく異なります。を使用sudoすると/etc/sudoers、sudoer(を呼び出すユーザーsudo)に許可されることに関して、非常に複雑なポリシーを定義できます。たとえば、特定のユーザーが特定の特権で特定のプログラムのみを実行し、他のユーザーが他の特権で他のプログラムを実行できるポリシーを定義できます。

の顕著な特徴の1つは、sudoユーザーが(ターゲットのパスワードではなく)自分のパスワード自分自身を認証する必要があるように構成できることです。したがって、sudoスーパーユーザーのパスワードを処理せずに、定義された特権操作のみをユーザーに許可し、ある程度の説明責任が得られるため、管理者の間で非常に人気が高まっています。


2

tl; drアクセスは、アプリケーションを実行しているユーザーによって決定され、sudo別のユーザーとしてアプリケーションを実行します。

完全版:

OSはコマンドにsudoが必要であることをどのように認識しますか?

知りません。UNIXは、アプリケーションレベルではなくファイルシステムレベルで権限を管理します。特定のファイルにアクセスするための権限がユーザーに付与されます。その後、ユーザーの代わりにアプリケーションが実行されます。実行中の各プロセスにはユーザーが関連付けられています。そのユーザーは、そのアプリケーションの権限を決定するために使用されます。Sudoは、他のユーザーに代わって(そのユーザーに関連付けられたアクセス許可を持つ)アプリケーション、つまりrootスーパーユーザーを実行することで機能します。

あなたの例として:

  1. ユーザーが特定のディレクトリへの書き込みアクセス権を持っている場合、そのディレクトリにアクセスできますmake install。そうでなければ、彼らはそれをしているかもしれませrootん-を使用してsudo

  2. ディレクトリ内のファイルにアクセスできない場合、du実行中のファイルにもアクセスできません。root実質的にすべてのファイルにアクセスできるため、sudo duduに代わって実行)ファイルにrootもアクセスできます。

sudoが動作するときはいつでもsuも動作し、suが動作するときは常にsudoも動作するというのは本当ですか?

はいといいえ。はい、プログラムが実際に実行される場合、との両方sudoで同じように動作するはずsuです。ただし、sudoを使用すると、/etc/sudoersファイルに保存されている一連のルールによって、誰が何を実行できるかをよりきめ細かく制御できます。suより簡単です-ターゲットユーザーのパスワードを知っている場合は、そのユーザーに代わってプログラムを実行できます。

最後の注意:アプリケーションがアクセス拒否を処理する方法(ユーザーを中止、無視、または警告する場所)はアプリケーション次第です。


1

まだ誰も✓を持っていないので、考えられるすべての答えをまとめました。

1実行可能ファイルを実行すると、OSが許可を拒否する場合があります。たとえば、システムパスをプレフィックスとするmake installを実行するにはsudoが必要ですが、非システムパスをプレフィックスとする場合はsudoを要求されません。OSは、プログラムが何かを実行する前であっても、実行可能ファイルを実行するにはユーザーよりも多くの特権が必要であると判断しますか?

いいえ、実行可能ファイルの起動時に行われません。実行可能ファイルが何かを実行しようとしたときに行われます。

Osはファイルシステムのアクセス許可と機能をチェックします(これらはファイルシステムのアクセス許可でカバーされておらず、ナイスレベルの削減、mknode、一部の低レベルのネットワークスタッフ、他のプロセスの強制終了、再起動、時間の設定などが含まれます)。権限がない場合は、実行できません。ルートには、CAP_DAC_OVERRIDE(ファイル許可を無視する)を含むすべての機能があります。

2場合によっては、プログラムの実行は許可を拒否されないことがありますが、プログラムはsudoで実行された場合、より多くのことを実行できます。たとえば、あるシステムディレクトリでduを実行すると、sudoを使用した場合にのみ、あるディレクトリにアクセスできます。OSがプログラムを実行する前に、そのようなプログラムを実行する許可を拒否しないのはなぜですか?

OSは、プログラムが何をするかを知ることができません。したがって、開始する前に許可を確認し、何をすべきかを決定するのはプログラム次第です。ただし、これを行う必要はありません。

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

2 sudoが動作するときはいつでもsuも動作し、suが動作するときは常にsudoも動作するというのは本当ですか?またはsuを使用すると、ユーザーはsudoよりも多くのことができますか?OSは、sudoがいつ動作し、suがいつ必要になるかをどのように決定しますか?

sudoそしてsuおよそsamethingを行います。いくつかの違いは、環境変数の処理とその他のそのようなセキュリティ問題の回避です。ただし、どちらも別のユーザーになることを可能にするツールであり、両方ともデフォルトのrootユーザーがいます。

su 元のツールであったため、変更するユーザー/グループのパスワードを入力する必要があります。

sudoはより新しいもので、デフォルトでは独自のパスワードを入力する必要がありますが、切り替え先のユーザー/グループのパスワードを受け入れるように構成することも、パスワードをまったく入力しないこともできます。また、このマシン上のこのユーザーに対して、このプログラムを使用して、どのコマンドで、どのプログラムで認証するか、多くの構成を許可します。また、sudoeditこれは一部でsudoあり、別のユーザーとして編集を許可し、エディターからのサブシェルのセキュリティ問題を回避するために使用できます(エディターからexecを呼び出して、昇格した特権で任意のプロセスを実行します)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.