まだ誰も✓を持っていないので、考えられるすべての答えをまとめました。
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を呼び出して、昇格した特権で任意のプロセスを実行します)。