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.
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 Delete
e Delete subfolders and files
. Então, para todas as outras entidades na ACL, revogue (mas não negue) essas mesmas permissões.
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-click
e selecionar Run as different user
ou apenas Run as administrator
) para obter direitos elevados de outro usuário que tenha direitos de administrador na máquina.
Usar o runas
comando CMD também pode conseguir isso e pode ser definido em um atalho para automatizar o login
Um exemplo:
runas /user:.\localadmin /savecred notepad.exe
O /savecred
parâ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