Existe um equivalente de SU para Windows?

29

Existe uma maneira (quando conectado como administrador, ou como um membro do grupo de administradores) para se mascarar como um usuário não privilegiado? Especialmente em um ambiente de AD.

por exemplo, no mundo Unix eu poderia fazer o seguinte (como root):

# whoami
root
# su johnsmith
johnsmith> whoami
johnsmith
johnsmith> exit
# exit

Eu preciso testar / configurar algo na conta de um usuário e não quero saber sua senha ou redefini-la.

Editar:
runas não vai cortá-lo. Idealmente , toda a minha área de trabalho se tornaria o usuário, etc. e não apenas em uma janela cmd.

    
por BIBD 01.06.2009 / 17:09

7 respostas

18

Tenho certeza de que não há maneira compatível de ser executado como um usuário diferente sem as credenciais desse usuário. É uma medida de não repúdio. Alguém não pode dizer: "Eu não fiz", porque eles fizeram isso, ou alguém com suas credenciais fez isso. E pelo segundo eles teriam que dar à outra pessoa as credenciais.

Normalmente, como eu faço o que preciso fazer enquanto estou logado como outro usuário é usar a assistência remota para essencialmente RDP na sessão, e fazer com que eles me concedam controle. Então eu faço o que for enquanto eles estão assistindo (presumivelmente, de qualquer maneira).

Qualquer outra coisa geralmente pode ser feita com GPO / scripts.

    
por 01.06.2009 / 17:50
16

Tenho notado muitas outras pessoas mencionando variações no comando runas e como você precisa saber a senha do usuário, o que é verdadeiro, mas não acho que alguém tenha respondido silenciosamente a questão. de "querer o desktop inteiro se tornaria o usuário, etc. e não apenas em uma janela cmd". Aqui está o jeito que eu faço:

Nota : vou referir-me a este primeiro Prompt de Comando como CP1 para eliminar confusões mais tarde.

Em sua conta de administrador, abra o Prompt de Comando

Para conta local

runas /profile /user:computernamehere\username cmd

Para a conta domínio

runas /profile /user:domainname\username cmd

OU da maneira que eu prefiro

runas /profile /user:username@domainname cmd

Nota: Um novo prompt de comando será aberto (CP2), este é o usuário que você está tentando fazer login.

Abra o CP1 e digite:

taskkill /f /IM explorer.exe

Abra o CP2 e digite:

explorer.exe

Dependendo do computador, ele pode criar um perfil para o usuário se ele nunca tiver feito logon anteriormente. Você pode salvar o hassel posteriormente mantendo as janelas de prompt de comando abertas para uso posterior.

Quando você terminar seu trabalho, faça o mesmo ao contrário.

No tipo CP2:

taskkill /f /IM explorer.exe

Abra o CP1 e digite:

explorer.exe

Agora você deve estar de volta à conta do administrador original. Você pode fazer uma verificação rápida tocando na tecla do Windows e procurando o painel do usuário atual.

Espero que isso tenha ajudado.

    
por 28.03.2012 / 18:02
6

Não há mecanismo embutido no Windows para fazer isso. Isso pode ser feito, mas você terá que ter algo escrito para fazer o que quiser, e provavelmente terá que se virar com APIs não documentadas.

Um dos cartazes aqui, grawity, tem razão w / chamando CreateProcessAsUser (), mas você precisará criar um token com a zwCreateToken API nativa não documentada primeiro. Se você matou o Explorer e disparou uma nova instância do Explorer com o CreateProcessAsUser (), estou certo de que você deseja o que deseja.

A Microsoft não facilita o que você quer fazer, porque não é assim que você deseja usar o NT. Se você precisar fazer logon como um usuário para solucionar os problemas deles, na maioria dos casos, você está fazendo isso de uma maneira insatisfatória.

Você pode fazer alterações no registro do usuário sem fazer logon como (anexando a seção do registro e manipulando-a dessa maneira). Você pode fazer alterações nos arquivos em seu perfil de usuário sem estar conectado como usuário. Se você precisar "configurar email" ou outras atividades como "o usuário", você deve estar escrevendo scripts ou aproveitando a funcionalidade interna (Modelos Administrativos de Diretiva de Grupo, preferências, etc) para fazer o seu trabalho sujo para você.

Se você tiver para fazer isso, dê uma olhada no RunAsEx on Code Project. Esse código deve lhe dar uma boa ideia do que você precisa fazer. Eu não tentei o programa, mas parece que está acontecendo tudo da maneira certa.

    
por 01.06.2009 / 19:12
4

Você pode usar o seguinte comando no Windows XP e posterior:

RunAs.exe

As opções de linha de comando estão disponíveis aqui .

Isso não funcionará sem saber a senha do usuário. Eu não acredito que haja uma maneira no Windows para operar sob uma conta de usuário sem a senha devido à forma como os identificadores de segurança são carregados.

    
por 01.06.2009 / 17:10
1

(Apenas um palpite). Se sua conta tem SeCreateTokenPrivilege , você poderia escrever um pequeno programa para criar um processo usando CreateProcessAsUser() ou uma função semelhante ... (Mas nem mesmo os administradores têm o privilégio por padrão).

    
por 01.06.2009 / 17:30
1

Embora eu não tenha experiência pessoal com algumas das soluções do sudo mencionadas neste site, eu recomendo nonadmin iniciado pelo excelente Aaron Margosis . É uma grande ajuda para você distribuir usuários limitados. Eu principalmente pulei com algo desde que todo mundo está dizendo usar Runas. No entanto, acho que a maioria ou todos os chamados sudo for windows lidam mais com a elevação do que com a ação de outro usuário sem a senha.

    
por 01.06.2009 / 17:46
0

Procexp.exe do Process Explorer no link tem uma execução como usuário limitado (no menu arquivo) que permite executar um programa usando suas credenciais atuais, mas com sua ACL reduzida ao de um usuário normal (não administrador). Não exatamente o que você queria, mas bom para testes.

    
por 01.06.2009 / 19:47