Comandos de controle de serviço do Windows para usuário não administrador

1
  • temos dois ambientes, teste e produção, ambos executando um serviço do windows.
  • usamos um servidor de compilação para implantar um determinado serviço do Windows via MSDeploy
  • parte das etapas de construção está executando um script CMD que verifica, se o serviço está em execução e quando true, tenta pará-lo via "net stop xxx '
  • o agente de compilação é executado em uma conta de domínio
  • O MSDeploy está usando a autenticação NTLM

Para os ambientes de produção e de preparação, o usuário do agente de construção possui os mesmos direitos, embora o "net stop xxx" funcione somente em um ambiente.

No ambiente onve, o comando "net stop" falha com "Erro de sistema 5, o acesso é negado".

As permissões de usuário para os comandos de controle de serviço são definidas por meio do utilitário subinacl.

Eu tentei várias permissões, e nenhuma delas funciona completamente:

  • As permissões TOP fazem com que o usuário não consiga ler o status do serviço
  • F ou TOPS podem ler o status do serviço, mas não podem parar ou iniciar o serviço - o acesso negado ao erro 5 sempre é exibido
  • para F, o subinacl mostra a seguinte saída: "/ pace = foo \ bar ACCESS_ALLOWED_ACE_TYPE-0x0 SERVICE_ALL_ACCESS"
  • os comandos parar e iniciar são "Acesso negado"

Existe alguma outra permissão ou funções de servidor necessárias para o usuário poder iniciar / parar um serviço? Não queremos conceder privilégios administrativos ao usuário do agente de construção.

Atualização:

Eu cavei um pouco mais fundo. Usando procmon, os comandos net e net1 são todos bem-sucedidos, mas com o código de status de saída 2.

Além disso, ao executar os scripts localmente com a mesma conta de usuário via runas, o serviço é interrompido / iniciado apenas ok, então parece estar relacionado de algum modo com a representação do MSDeploy.

    
por Michal Řehout 17.02.2016 / 14:29

0 respostas