Existe algum comando 'sudo' para o Windows?

422

Eu sempre trabalho em uma conta não-administrador no meu computador com Windows. Às vezes eu preciso instalar programas que requerem acesso de administrador. Como uso principalmente o prompt de comando do Windows, existe um comando do Windows para escalonar privilégios, semelhante ao comando do terminal Linux sudo ?

    
por ukanth 17.09.2009 / 11:24

14 respostas

258

O comando runas .

runas [{/profile|/noprofile}] [/env] [/netonly] [/smartcard] [/showtrustlevels] [/trustlevel] /user:UserAccountName program

Basta executar:

runas /noprofile /user:Administrator cmd 

para iniciar um shell de comando como administrador

    
por 17.09.2009 / 11:29
115

Eu descobri elevar hoje que "executa um comando com a elevação de privilégio do UAC. Isso é útil para trabalhar dentro de prompts de comando ou com arquivos em lote. " Não é o mesmo que sudo , ele altera o usuário em execução para Administrador, mas sua sintaxe é muito mais fácil de usar do que runas e pode manter o diretório atual, permitindo o uso de caminhos relativos.

Synopsis:
  elevate [(-c | -k) [-n] [-u]] [-w] command

Options:
  -c  Launches a terminating command processor; equivalent to "cmd /c command".
  -k  Launches a persistent command processor; equivalent to "cmd /k command".
  -n  When using -c or -k, do not pushd the current directory before execution.
  -u  When using -c or -k, use Unicode; equivalent to "cmd /u".
  -w  Waits for termination; equivalent to "start /wait command".

O objetivo do Elevate não é contornar ou ignorar o UAC (Controle de Conta de Usuário), mas sim trabalhar com ele. Contanto que o UAC esteja habilitado, tem como algum tipo de prompt em algum ponto no processo. Se você precisar se livrar do prompt, você deve desativar o UAC .

Os alívios de elevação de ponto de dor estão escalonando um processo específico de um shell não privilegiado e prosseguindo normalmente. Sem isso, você precisa iniciar um prompt de comando privilegiado com clique com o botão direito em > "Executar como Administrador" , que não pode ser facilmente roteirizado, antes de tentar o comando privilegiado.

    
por 12.04.2011 / 08:42
66

Você pode usar o comando runas que é semelhante ou pode conferir o projeto sudo para Windows em SourceForge que adiciona um comando sudo.

A diferença é sutil:

Digamos que você tenha dois usuários. Bob é um usuário normal e James é um administrador.

Se você logar como Bob e usar "runas james command" o comando é executado como se fosse executado por James, então ele acessa as configurações de usuário de James e qualquer alteração de usuário vai para James Meus Documentos & Então, se você está instalando um aplicativo, digamos, ele será instalado como James, não como Bob.

Se, por outro lado, Bob fizer "sudo acommand", o comando ainda será executado como Bob, mas com permissões elevadas - assim como o comando sudo do Linux. Para evitar que qualquer usuário consiga sudo, você deve definir um grupo de usuários sudoers que contenha a lista dos usuários normais que têm permissão para elevar usando o sudo. Os usuários ainda precisam fornecer credenciais antes da elevação.

Às vezes a diferença não é importante, às vezes é, e acho que ambos os comandos podem ser úteis.

    
por 17.09.2009 / 11:28
39

Você também pode usar os PowerToys de elevação de script .

    
por 17.09.2009 / 15:11
26

Se você está pronto para mudar para consoles alternativos, há ConEmu (eu sou o autor). Um de seus recursos - a capacidade de executar guias elevadas e não elevadas na janela do ConEmu. As guias também podem ser iniciadas com credenciais diferentes.

Para o conforto do usuário, há arquivos em lotes csudo.cmd ( que pode ser facilmente adotado para bater). Leia a descrição completa no wiki do projeto . Em resumo, quando você executa algum comando a partir da guia não elevada existente, por exemplo

csudo dism /online /enable-feature /featurename:NetFX3 /All /Source:D:\sources\sxs /LimitAccess

O ConEmu iniciará dism no novo console / guia elevado (com o prompt anterior do UAC na caixa Vista ou Login no XP).

Por padrão, csudo inicia o novo console em uma divisão (pode ser alterado por meio da edição do conteúdo csudo.cmd ).

E, claro, você pode renomeá-lo para sudo.cmd se gostar de "classic" sudo word.

    
por 26.10.2012 / 09:52
23

Método rápido:

Três etapas para adicionar o sudo.

  1. Abra o PowerShell.

  2. Copie o seguinte script (Ctrl + C) e cole-o no PowerShell (Alt + Espaço + E + P):

$script_path="$HOME\Documents\Scripts"; if (!(test-path $script_path)) {New-Item -ItemType directory $script_path} if (!(test-path $profile)) { new-item -path $profile -itemtype file -force }". $script_path\sudo.ps1" | Out-File $profile -append; "function sudo(){if ('$args.Length -eq 1){start-process '$args[0] -verb '"runAs'"} if ('$args.Length -gt 1){start-process '$args[0] -ArgumentList '$args[1..'$args.Length] -verb '"runAs'"}}" | Out-File $script_path\sudo.ps1; powershell
  1. Pressione Enter .

Ele habilitará permanentemente o comando sudo no PowerShell.

Uso:

sudo <process-name> [param1 [param2 [param3]]]

Exemplos:

sudo explorer
sudo notepad
sudo powershell
sudo cmd
sudo taskmgr
sudo tasklist
sudo taskkill /IM Skype.exe /PID 8496

Método longo para aprender:

Observação: eu misturei o script dos dois artigos para criar o script mencionado anteriormente. Em vez de colar manualmente o script no bloco de notas, adicionei as instruções Out-File para salvar os arquivos ps1 e $profile do script.

Dica: Se você não é um grande fã de pop-ups do UAC (como eu), salve o seguinte no arquivo * .reg e execute-o:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"ConsentPromptBehaviorAdmin"=dword:00000000
    
por 28.08.2012 / 12:36
20

Se você estiver fazendo isso no Windows, além do comando Executar como mencionado em algumas outras respostas, também há maneiras de fazer isso com o mouse.

Se você mantiver pressionada a tecla Shift enquanto clica com o botão direito do mouse na maioria dos arquivos executáveis no Windows, deverá notar algumas opções mais avançadas. Uma delas é a opção " Run As... " (acho que é chamada " Run As Administrator " do Vista em diante).

Você também pode fazer o download de uma versão mais avançada do RunAs da Microsoft, chamada ShellRunAs . possui aprimoramentos sobre o comando interno RunAs, tanto na linha de comando quanto nos modos gráficos, incluindo a possibilidade de salvar as credenciais da conta

    
por 17.09.2009 / 13:22
3

Surun é um aplicativo gratuito de código aberto que permite que determinados programas sejam executados com direitos administrativos, sem fornecer uma senha sem alterar o registro do usuário ou modifique variáveis de ambiente.

Quando eu estava usando o Windows XP, este aplicativo me ajuda muito. O Beta funciona no Windows 7.

    
por 17.11.2011 / 16:24
3

Como você provavelmente já descobriu, as runas permitem que você rode como outro usuário, mas ele não pode fazer elevação e não passa pelos diretórios atuais, variáveis de ambiente ou longas linhas de comando.

Shell Hamilton C resolve isso com um su e sudo genuíno. su permite que você execute um comando como outro usuário; sudo (na verdade, um alias para su) permite que você execute um comando elevado. Você também pode fazer as duas coisas, sendo executado como um usuário diferente. Diretórios atuais, variáveis de ambiente e linhas de comando longas são passadas por meio de um handshake de memória compartilhada entre o su em execução no contexto do chamador e uma cópia dele em execução como um interlúdio com as novas credenciais que iniciam o filho. Divulgação completa: sou o autor.

    
por 06.09.2012 / 17:01
1

Este script faz o trabalho:

@echo Set objShell = CreateObject("Shell.Application") > %temp%\sudo.tmp.vbs
@echo args = Right("%*", (Len("%*") - Len("%1"))) >> %temp%\sudo.tmp.vbs
@echo objShell.ShellExecute "%1", args, "", "runas" >> %temp%\sudo.tmp.vbs
@cscript //NoLogo %temp%\sudo.tmp.vbs

Salve-o como sudo.cmd , em seguida, adicione-o ao seu PATH

Nota: o runas significa neste contexto "Executar como administrador" e não "Executar como outro usuário"

Extraído daqui e ligeiramente editado para remover o cscript. cabeçalho exe da saída

    
por 10.01.2016 / 22:08
1

A solução mais simples, a meu ver, é aproveitar o powershell para fazer o trabalho, que é portátil e irá solicitar ao usuário que use o UAC.

Você pode executar isso em qualquer shell (cmd ou powershell)

powershell Start-Process -verb runAs path-to-your.exe "-all -args -in -quotes"
    
por 20.11.2017 / 20:58
1

Existe um pacote de chocolate para ele com o conveniente nome sudo . Você pode instalar o pacote com chocolatey usando este comando:

choco install -y sudo

Então, em qualquer shell do Windows / MS que você tenha que usar, você pode usar sudo como esperado.

    
por 14.06.2018 / 20:44
0

Uma substituição sudo de trabalho para o terminal mintty do Cygwin seria colocar o seguinte script no PATH do usuário:

$!/bin/bash
cygstart --action=runas mintty -e 'which bash' -lc \"$@\"

Para mim, esse é o único substituto viável para elevar os privilégios de programas como vim ou cygrunsrv ao trabalhar em um terminal no Windows.

    
por 26.11.2014 / 10:45
0

O seguinte script vbs faz o truque para mim. Eu coloquei em C:\Windows\System32

Set objArgs = WScript.Arguments
exe = objArgs(0)
args = ""
IF objArgs.Count >= 2 Then
   args = args & objArgs(1)
End If
For it = 2 to objArgs.Count - 1
   args = args & " " & objArgs(it)
Next
Set objShell = CreateObject( "WScript.Shell")
windir=objShell.ExpandEnvironmentStrings("%WINDIR%")
Set objShellApp = CreateObject("Shell.Application")
objShellApp.ShellExecute exe, args, "", "runas", 1
set objShellApp = nothing

Exemplo de uso em um prompt de comando sudo net start service

    
por 01.02.2018 / 22:29