Existe um equivalente do Windows ao Setuid?

Existe um equivalente do Windows ao Setuid?

Quero dar a um programa os direitos do usuário que o executa. Existe um equivalente doSetuidno Windows (de preferência Windows 7 ou pelo menos Windows pós-XP)?

E se eu quiser que o programa tenha mais direitos do que o usuário que o executa? (Por exemplo, quero que o programa grave no arquivo de programas, mas não quero que o usuário consiga).

Responder1

Resposta curta: você não precisa fazer nada para executar um programa com os direitos do usuário que o gerou. Isso é padrão para sistemas Windows.

Para forçar a execução de um programa como um usuário totalmente diferente, como faz o SetUID, a Microsoft forneceu oCorrer comocomando, que você pode usar para invocar um executável com credenciais de usuários diferentes.

Além disso, em sistemas habilitados para UAC como o Windows 7, você pode segurar Shift + clicar com o botão direito em um executável, para executar o programa sob um usuário diferente e invocar os direitos de administrador desse usuário, se necessário.


Observe que a resposta abaixo está relacionada à pergunta original sobre Sticky.

Para responder diretamente à sua pergunta, sim e não. Pode-se emular a função, mas a aplicação é totalmente diferente.

Acho que você pode estar confundindo o bit Sticky com as outras permissões especiais Unix SetUID e SetGID, que afetam a forma como os aplicativos são executados em relação ao usuário que invoca o processo, mas o Sticky não.

Sticky não permitirá que nenhum usuário, exceto root ou usuário proprietário, exclua ou renomeie um arquivo, mesmo que o usuário tenha direitos de gravação e possa, portanto, editar o arquivo.

Na janela Permissões Avançadas (em Propriedades de um objeto -> guia Segurança -> Avançado), você pode Adicionar ou Editarpermissõespara o CREATOR OWNER"usuário" e conceda-lhes permissões Deletee Delete subfolders and files. Então, para todas as outras entidades na ACL, revogue (mas não negue) essas mesmas permissões.

insira a descrição da imagem aqui

Isso permitirá que todos os usuários com gravação criem/editem qualquer arquivo, mas somente o proprietário do arquivo poderá excluí-lo.

Observe que essa abordagem também tem a mesma falha do Sticky: qualquer usuário com direitos de edição pode substituir o arquivo por 0B, o que é conceitualmente semelhante à exclusão do arquivo (muitos argumentam que é tão bom quanto...).

boa sorte.

Responder2

No Windows você não pode executar um programa como um usuário diferente sem saber a senha do usuário alvo ou salvar essas informações na máquina uma vez.


Por padrão, um programa no Windows sempre será executado usando os privilégios do usuário atual. Isso também se aplica a quais pastas ou configurações o programa pode acessar. Essas configurações podem ser alteradas na guia Segurança de um programa ou pasta.

Você pode iniciar um programa com outro usuário (se, por exemplo, segurar SHIFT+ right-clicke selecionar Run as different userou apenas Run as administrator) para obter direitos elevados de outro usuário que tenha direitos de administrador na máquina.

Usar o runascomando CMD também pode conseguir isso e pode ser definido em um atalho para automatizar o login

Documentação aqui

Um exemplo:

runas /user:.\localadmin /savecred notepad.exe

O /savecredparâmetro informa ao comando que a senha do usuário já foi salva na máquina e não exigirá senha para execução. A senha deve primeiro ser armazenada no Credential Manager no Painel de Controle.

Observe que isso também carregará o programa usando o perfil do outro usuário. Um programa que salvou configurações em AppData, por exemplo, irá carregá-las do usuário que executou o programa.

No entanto, os Serviços do Windows podem ser executados como um usuário diferente. Isto pode ser feito em

Console Services.msc > selecione Serviço > Propriedades > Fazer logon

informação relacionada