Como eu dou permissão a um usuário de domínio para iniciar e interromper um serviço do Tomcat?

7

Sei que isso é quase idêntico a essa questão , mas a grande diferença é que os métodos descrito no artigo MSKB NÃO TRABALHE para serviços Tomcat instalados. Eles trabalham para serviços simples do Windows, mas não para os serviços do Tomcat que precisamos controlar.

Alguma outra ideia?

Editar (detalhes): Se eu tiver 100 serviços de contêiner do Tomcat, preciso conceder essa permissão explicitamente ao grupo para cada serviço? Existe uma maneira de obter um grupo DOMAIN configurado para ter permissão para parar / iniciar 100 serviços diferentes do Tomcat em 15 computadores?

Editar (mais informações): Estamos usando o Ant sshexec (jsch) e obtemos o Access Denied errorlevel 5 ao chamar net stop service_name.

    
por Instantsoup 29.05.2009 / 22:57

3 respostas

7

Não sei o que você tentou fazer antes, mas eis o que acabei de fazer e tive sucesso:

1) Baixou o instalador do serviço Windows do Tomcat 5.5.27 e o instalou.

2) Joguei o descritor de segurança do serviço TomCat5 usando "sc sdshow tomcat5", que me mostrou:

D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)

Este é um descritor de segurança bastante comum para serviços. Eu vi isso literalmente em alguns serviços da Microsoft. O sistema e administradores internos têm "controle total", "usuários avançados" podem parar, iniciar e pausar o serviço e "usuários autenticados" podem consultar propriedades do serviço (estou encobrindo um pouco aqui).

3) Criei um usuário limitado chamado "bob" na minha caixa, abri um prompt de comando "RUNAS" como ele e obtive seu SID de "WHOAMI / ALL" (um comando que está no Windows Server 2003, mas não em XP ... não sei sobre o Vista e Windows 7 fora do topo da minha cabeça). Eu verifiquei que Bob não pôde parar / iniciar o serviço Tomcat (usando "NET STOP tomcat5"). Recebi o mesmo erro que você denunciou em sua postagem.

4) Do meu prompt de comando do administrador regular, executei o seguinte:

sc sdset tomcat5 D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)(A;;RPWPDT;;;S-1-5-21-1409082233-484763869-854245398-1009)

Esta string SDDL fornece os direitos SID (S-1-5-21-1409082233-484763869-854245398-1009) de Bob para interromper, iniciar e pausar o serviço (RP, WP e DT, respectivamente).

5) Voltei para o meu prompt de comando "Bob" e verifiquei que agora eu podia parar e iniciar o serviço usando NET STOP e NET START.

Eu recomendaria criar um grupo para delegar esse direito, colocar um usuário nesse grupo, obter o SID do grupo (usando o WHOAMI ou qualquer outra ferramenta) e modificar o descritor de segurança dessa maneira.

Eu acho que usar a Diretiva de Grupo para modificar o descritor de segurança funcionaria bem. Eu tenho visto casos em que alguns serviços não gostam da permissão padrão que uma modificação baseada em política de grupo coloca em um serviço (veja esta postagem sobre o serviço de Pesquisa do Windows se você quiser ver do que estou falando: link ), mas isso tem sido incomum na minha experiência.

Se você quiser mais informações sobre descritores de segurança para serviços, consulte link e link .

    
por 02.06.2009 / 16:56
1

Você pode configurar um trabalho do Windows Scheduler para executar o comando. Um job do planejador pode ser configurado para executar um comando sob algumas credenciais de outros usuários. Você pode então definir a segurança no trabalho para que apenas um determinado conjunto de usuários possa executá-lo.

Você precisará de direitos de administrador para criar a tarefa agendada, mas poderá conceder direitos a outras pessoas para executá-la. Mesmo que seja uma tarefa agendada, você pode configurá-la para que ela seja executada somente sob demanda.

Por exemplo, digamos que você crie uma tarefa (abra o Painel de controle > Tarefas agendadas, clique com o botão direito do mouse e escolha Nova > Tarefa agendada) chamada:   StartTomcat

Vá para a guia "Tarefa".

Defina os valores "Executar" e "Iniciar em" para a linha de comando que inicia o Tomcat. Além disso, defina a linha "Executar como" como um usuário autorizado a iniciar e interromper o Tomcat e clique no botão "Definir senha ..." para fornecer a senha do usuário. Por fim, remova a verificação da caixa Ativado, pois você só deseja executar o trabalho sob demanda.

Em seguida, vá para a guia "Segurança". Adicione as pessoas que você deseja permitir a execução da tarefa e conceda-lhes apenas permissões "Ler & Executar" na tarefa.

Por fim, crie um arquivo em lotes para executar a tarefa. O arquivo em lote irá conter a linha:

schtasks / run / tn StartTomcat

Coloque o arquivo em lote em um local acessível aos usuários que precisam executá-lo. Pode até ser possível colocar o arquivo de lote em uma máquina separada, mas você precisará de alguns parâmetros adicionais para a linha schtasks. Você pode procurar esses parâmetros na Ajuda do Windows.

    
por 02.06.2009 / 17:33
0

Você precisa descobrir o que torna esses serviços Tomcat tão especiais que os métodos normais para controlá-los no Windows não funcionem. Como eles não funcionam? É simplesmente um problema de acesso negado? Nesse caso, o ProcMon seria muito útil para descobrir especificamente onde o acesso precisa ser concedido.

    
por 29.05.2009 / 23:23