それは、それらが異なっていて、単純で、単純だからです。UAC はのように実装できましたが、実装されていsudo
ませんでした。
これは、ネットワーク保護との類推と考えることができます。
sudo
プログラムがネットワークアクセスを要求し、ファイアウォールがそれを許可するかどうかのプロンプトを出すようなものです。「はい」と言うと、プログラムがソケットを開くか、「いいえ」と言うと、接続不足について文句を言って、ネットワークアクセスなしでできることを実行できます(設計が不十分なプログラムは実際にクラッシュします)。例えば:
function1();
input();
function2();
secure_operation(); //requests access
function3(); //may depend on results of previous operation; error-checking important
UACは、NTFSボリュームにダウンロードされたファイルを開こうとしたときに表示される警告に似ています。Windowsは潜在的な悪さについて警告し、それを(まったく)実行するかどうかを尋ねます。これは、すべてまたは何もしない操作です。プログラムの一部のみを信頼し、他を信頼することはできません。例えば:
if (requires_high_priv(program)) {
if (request_priv(program))
program();
}
else {
program();
}
高度なユーザーとアプリケーションを対象とするLinuxとは異なり、Windowsはできるだけ幅広いユーザーに使いやすいように設計されているため、セキュリティを簡素化することが重要です。さらに、露出面が大きいため、マルウェアの標的となることが多いため、プログラムを完全に信頼するか、まったく信頼しない方が理にかなっています。