Vindo de um background Linux / Unix, não consigo entender como o UAC funciona no Windows.
Ouvi dizer que o UAC funciona assim sudo
. Meu aplicativo Linux pode fazer algum outro trabalho antes de ligar sudo
.
Mas no Windows, parece que todos os aplicativos que exigem confirmação do UAC devem ter o UAC concedido antes de realizar qualquer trabalho real! Eu executo um aplicativo, ele solicita a confirmação do UAC e eu o recuso - o aplicativo simplesmente não será executado.
Então, o UAC funciona assim?
sudo su
./run_app
Ao invés de:
./do_work1
sudo su
./du_work2
Obrigado pela ótima resposta de todos!
No Windows, o prompt do UAC é acionado quando você tenta executar um executável que está marcado como requerendo elevação em um manifesto incorporado no arquivo e você ainda não está executando elevado. O comportamento é mais parecido com setuid do que su, pois é o arquivo, não o comando que informa ao sistema operacional que o executável deve ser executado com credenciais diferentes.
fonte
É 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: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:
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.
fonte
Eu não conheço completamente a arquitetura linux, então me perdoe se eu cometer um erro, mas meu entendimento é que Linux e Windows não são tão diferentes nesse aspecto ...
Um exemplo ... Um script de cópia que faz uma cópia de um arquivo normal para um local não protegido e um arquivo que tenta copiar para um local protegido e, em seguida, uma cópia regular novamente.
Meu entendimento é que, no Linux, um aplicativo simplesmente executa e tenta executar uma ação - se não tiver permissão para executar essa ação - ele falhará, mas continuará. No exemplo acima - ao executar o script de cópia no Linux como usuário comum, ele copiará o arquivo regular, dará um problema de permissão e copiará o segundo arquivo - se for executado com o sudo, ele fará as três cópias.
O Windows é exatamente o mesmo a esse respeito - a execução do script como um usuário não administrativo simplesmente copiará um, emitirá uma permissão no segundo e copiará o próximo. Com o UAC, ele executará todos os três.
A diferença é que muitos aplicativos do Windows simplesmente têm um conjunto de configurações para solicitar a elevação do UAC por padrão e encerrar / falhar se não o tiverem ... mas isso está se tornando muito menos.
fonte