Temos um conjunto de serviços do Windows em execução em nossos servidores, que executam várias tarefas automatizadas independentemente uma da outra, com exceção de um serviço que cuida dos outros serviços.
No caso de um dos serviços falhar em responder ou travar, esse serviço tentará reiniciar o serviço e, se uma exceção for lançada durante a tentativa, enviará um email para a equipe de suporte, para que eles possam reiniciar o serviço.
Depois de fazer uma pequena pesquisa, deparei-me com algumas 'soluções' que vão desde a solução alternativa mencionada no KB907460 até fornecer a conta na qual o serviço está executando os direitos de administrador.
Não me sinto confortável com nenhum desses métodos - não entendo as consequências do primeiro método, conforme descrito no artigo da base de conhecimento da Microsoft, mas definitivamente não quero conceder acesso de administrador à conta na qual o serviço está sendo executado. .
Examinei rapidamente a Diretiva de segurança local e, além da diretiva que define se uma conta pode ou não fazer logon como um serviço, não consigo ver mais nada que se refira a serviços.
Estamos executando isso no Server 2003 e no Server 2008, para que quaisquer idéias ou sugestões sejam gentilmente recebidas!
Esclarecimento: Não quero conceder a capacidade de iniciar / parar / reiniciar TODOS os serviços para um determinado usuário ou grupo - quero poder conceder a permissão para fazê-lo apenas em serviços específicos , para um determinado usuário ou grupo.
Esclarecimentos adicionais: Os servidores nos quais preciso conceder essas permissões não pertencem a um domínio - eles são dois servidores voltados para a Internet que recebem arquivos, os processam e os enviam a terceiros, além de servirem alguns sites, portanto A Diretiva de Grupo do Active Directory não é possível. Desculpe por não ter esclarecido isso.
Respostas:
Parece não haver uma maneira de fazer isso com base na GUI, a menos que você esteja associado a um domínio - pelo menos, nenhum que eu possa encontrar em qualquer lugar -, então eu procurei um pouco mais e encontrei uma resposta que funcione para nossa paciência.
Eu não entendi o significado da representação de string no artigo da base de conhecimento, mas pesquisar um pouco me levou a descobrir que era a sintaxe SDDL. Outras pesquisas me levaram a este artigo de Alun Jones, que explica como obter o descritor de segurança de um serviço e o que cada bit significa. O MS KB914392 tem mais detalhes.
Para anexar ao descritor de segurança existente do serviço, use
sc sdshow "Service Name"
para obter o descritor existente. Se esse é um serviço antigo e simples do .NET Windows - como é o caso do nosso - o descritor de segurança deve ter a seguinte aparência:Precisávamos conceder permissões
RP
(para iniciar o serviço),WP
(para interromper o serviço),DT
(pausar / continuar o serviço) eLO
(para consultar o status atual do serviço). Isso pode ser feito adicionando nossa conta de serviço ao grupo Usuários avançados, mas eu só quero conceder acesso individual à conta na qual o serviço de manutenção é executado.Usando
runas
para abrir um prompt de comando na conta de serviço, executei owhoami /all
que me deu o SID da conta de serviço e construí o SDDL adicional abaixo:Isso então é adicionado à seção D: da sequência SDDL acima:
Isso é aplicado ao serviço usando o
sc sdset
comando:Se tudo correr conforme o planejado, o serviço poderá ser iniciado, parado, pausado e ter seu status consultado pelo usuário definido pelo SID acima.
fonte
SetACL.exe -on "\\server1\W32Time" -ot srv -actn ace -ace "n:domain1\group1;p:start_stop"
CCLCSW
às permissões SDDL (além de RPWPDTLO) para que eu também possa ver o serviço listado quando executo o Get-Service (que primeiro exige a modificação do SDDL para que o serviço do gerenciador de controle de serviços scmanager possa listar serviços acessíveis) . Eu também precisavaSW
poder reiniciar certos serviços.Eu apenas tive o mesmo problema.
Você pode usar SubInACL.exe no Resource Kit. Baixe o utilitário autônomo aqui: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=23510
Use
msiexec /a PathToMSIFile /qb TARGETDIR=DirectoryToExtractTo
para extrair os arquivos se você não deseja instalar o arquivo .msisubinacl /service SERVICE_NAME /grant=COMPUTER_NAME\USERNAME=TOP
T = Iniciar serviço
O = Parar serviço
P = Pausar / continuar serviço
Referência completa: como conceder aos usuários direitos para gerenciar serviços no Windows 2000
ou digite
subinacl /help
Nota: não tente,
subinacl /service SERVICE_NAME /perm
pois isso pode causar problemas (lição aprendida: P). O nome pode ser enganoso (perm! = Permissão), pois exclui todas as permissões para todos os usuários (até Admin!).fonte
Você está procurando Configuração do computador - Diretivas - Configurações do Windows - Configurações de segurança - Serviços do sistema
Lá, você pode não apenas definir o tipo de início do serviço, mas também pode configurar as ACLs de segurança para cada serviço. Por padrão, a interface listará apenas os serviços que estão instalados na máquina em que você está executando o GP Editor.
Para adicionar serviços que existem apenas em outra máquina:
fonte
gpedit.msc
, pois a janela "Gerenciar servidor" não lista um nó de políticas. Se assim for, eu não posso ver um item sob o nó de Configurações de segurança que faz referência a "Serviços do Sistema" como você sugere acima, em ambos Server 2008 ou Server 2003.Eu usei o SubinAcl (como sugerido por patrx) para poder iniciar o MySQL como um usuário de domínio comum (não administrador) e funciona perfeitamente! (no entanto, o comando precisa ser executado como um administrador local, pelo menos)
O comando é:
Observe que entrei no usuário sem prefixá-lo com o domínio ... caso contrário, o comando falhará no comando de análise!
fonte