É porque eles são diferentes, claros e simples. O UAC poderia ter sido implementado como sudo
, mas não foi.
Você pode pensar nisso como uma analogia com a proteção de rede.
sudo
é como quando um programa solicita acesso à rede e seu firewall solicita que você o conceda ou não. Você pode dizer sim e o programa abrirá o soquete, ou você pode dizer não e reclamará da falta de conexão e fará o que puder sem acesso à rede (alguns programas mal projetados realmente travam). Por exemplo:
function1();
input();
function2();
secure_operation(); //requests access
function3(); //may depend on results of previous operation; error-checking important
O UAC é mais parecido com o aviso que você recebe ao tentar abrir um arquivo que foi baixado para um volume NTFS. O Windows avisa sobre possíveis danos e pergunta se você deseja executá-lo (de todo) ou não. É uma operação de tudo ou nada; você não pode optar por confiar apenas em parte do programa e não em outros. Por exemplo:
if (requires_high_priv(program)) {
if (request_priv(program))
program();
}
else {
program();
}
Você deve se lembrar de que, diferentemente do Linux, voltado para usuários e aplicativos avançados, o Windows foi projetado para ser amigável ao maior número de usuários possível, simplificando a segurança. Além disso, devido à sua grande superfície de exposição, é um alvo frequente de malware, por isso faz mais sentido confiar totalmente em um programa ou não.