Ao fornecer código para outra pessoa, parece ser uma boa prática remover todo o código específico de elevação — ou seja, fornecer apt update
em vez de sudo apt update
(ou su -c 'apt update'
). No entanto, isso causa todos os tipos de problemas para aqueles que são novos na elevação de permissão baseada em UNIX - eu e muitos outros que conheci costumávamos simplesmente executar tudo como superusuário usando os utilitários mencionados acima.
Além disso, ao invocar determinados comandos programaticamente, a elevação de superusuário será necessária em alguns sistemas, mas não em outros. Isso significa que incluir o elevador de permissão pode quebrar configurações em alguns sistemas, porque as coisas começarão a pertencer ao superusuário quando não deveriam. flatpak
é um exemplo disso (exceto a corrupção da configuração) - 50% das instalações que usei precisavam de elevação para invocar a maioria de seus comandos, os outros 50% não, por padrão.
Considerando que a elevação do UAC no Windows 7+ parece funcionar incrivelmente bem, mesmo em casos extremos em minha experiência com ele, estou seriamente surpreso que não pareça existir nenhum método abrangente para remediar esse problema.
Conseqüentemente, pergunto se alguém conhece algum método para determinar programaticamente se um comando necessita de elevação do usuário para invocá-lo. Estou ciente de que a troca de usuários ao invocar determinados comandos pode fazer com que seu comportamento afete esse usuário, mas, nesses casos, não consigo imaginar que os usuários capazes de invocar o comando sejam restritos (para que não se tornem inúteis).
https://unix.stackexchange.com/search?q=determine+whether+superuser+elevation+required não retorna nada, e embora como determinar através do código se o comando precisa de elevação de raiz? e Como verificar se a permissão “sudo” será necessária para executar um comando? parecem estar perguntando o que eu quero saber, as poucas respostas disponíveis em ambos parecem estar focadas no código de script de shell para contornar o problema, em vez de fornecer soluções independentes de linguagem.
Não existe tal caminho; é o "conhecimento contextual do administrador" que você precisa para executar
apt
como root, eflatpak
não. Outros programas solicitarão elevação de privilégios quando necessário.A elevação do UAC é a GUI do Windows equivalente ao sudo ou ao policykit no linux/freedesktop.
Você também não pode saber se um programa exigirá privilégios de administrador no Windows, até que ele os solicite.
O shell gráfico do Windows tem uma maneira de marcar links para executáveis como "executados como usuário diferente". Mas isso não é o mesmo que dizer que o executável pode ser identificado como necessitando de elevação de privilégios.