Aqui faremos um POST rápido sobre como criar e editar as permissões em serviços do Windows. Criamos esse post pela necessidade que temos várias vezes em ambiente que usuários acabam se tornando administradores de desktops e até servidores apenas porque precisam reiniciar um serviço (por exemplo, o IIS). Nossa solução, nesse caso, é criar um grupo específico, dar permissão a este grupo e colocar os usuários como membros.
O comando sc.exe permite administrar serviços do Windows, desde criar a alterar restrições que não são possíveis pela console tradicional (como a restrição do serviço Windows Time, por exemplo). Vamos aqui considerar dois casos simples e uteis: Criar um serviço no Windows e Alterar as permissões de um serviço para que qualquer usuário possa parar e iniciar esse serviço.
Criar um serviço no Windows
Vamos criar um serviço hipotético NVLAN_Service com o nome de visualização Serviço NVLAN que executa o comando C:\Windows\nvlan.exe, vamos criar com o seguinte comando:
sc.exe create NVLAN_Service DisplayName="Serviço NVLAN" binPath="C:\Windows\nvlan.exe"
É possível adicionar itens à este serviço, como definir uma dependência de outro serviço para que este seja iniciado, para verificar as possibilidades execute o comando sc.exe create
Entendendo as permissões de um serviço
Antes de explicarmos/darmos um exemplo de como alterar uma permissão, vamos explicar como você deve ler, entender e até definir a permissão que deseja. Para isso entenda que o comando sc.exe utiliza a seguinte sintaxe:
(Item1;;Item2;;;Item3)
São três informações básica, iguais às informações para permissões em pastas, as informações são:
- Item1: É informado apenas uma letra: A ou D, sendo para informar o tipo de permissão. Se essa permissão será para permitir (allow), ou para negar (deny).
- Item2: É possível inserir um conjunto de siglas, cada sigla é um par de letras representando uma permissão específica. Estas são:
Sigla | Permissão |
CC | Verificar a configuração atual pelo gerenciador de controle de serviço. |
DC | Deletar todos os objetos filhos. |
LC | Verificar o status pelo gerenciador de controle de serviço. |
SW | Listar as dependências. |
LO | Verificar o status do serviço. |
CR | Enviar um controle de serviços definido pelo autor do serviço. |
RC | Ler a descrição de segurança do serviço. |
SD | Deletar. |
RP | Iniciar o serviço. |
WD | Modificar permissões. |
WO | Modificar o proprietário. |
WP | Parar o serviço. |
DT | Pausar e despausar. |
Sendo que pode ser concedido um grupo de permissões, por exemplo RPWP.
- Item3: É informado para quem será essa permissão. A lista de possíveis usuários e grupos é extensa e pode ser consultada no site do MVP Erick. Os principais são:
Sigla | Quem é |
AU | Authenticated users |
BA | Built-in administrators |
BG | Built-in guests |
BO | Backup operators |
BU | Built-in users |
DA | Domain administrators |
DG | Domain guests |
DU | Domain users |
WD | Everyone |
LS | Local service account |
SY | Local system |
Com todas essas informações, é mais fácil de tentar interpretar a permissão: (A;;CCLCSWRPWPDTLOCRRC;;;SY)
Alterar as permissões de um serviço para que qualquer usuário possa parar e iniciar esse serviço
O nome do serviço que visualizamos é o nome de Exibição, mas para alterar o serviço precisamos do nome do serviço e nem sempre esses nomes são iguais, para obter o nome do serviço abra a console services.msc clique duas vezes sobre o mesmo e verifique o campo nome do serviço. Essa informação será necessária para os procedimentos.
Vamos considerar um serviço Serviço NVLAN, cujo nome do serviço é NVLAN_Service, antes de mais nada vamos listar as permissões atuais desse serviço, para isso abra o prompt como administrador e execute o seguinte comando:
sc.exe sdshow NVLAN_Service
Vamos considerar que o comando retornou o seguinte:
D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-1146930182-2627961533-1310655641-117953)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)
Nesse caso, irei copiar as mesmas permissões e adicionar a permissão para o “AU” (autenthicated Users), mas poderia ter sido utilizado um SID de um usuário ou grupo específico, com as MESMAS permissões que o “BA” (Built-in administrators) tinha (para entender melhor os grupos e permissões não deixe de ver o link disponibilizado nas referências):
sc.exe sdset NVLAN_Service “D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;AU)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-1146930182-2627961533-1310655641-117953)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)”
Agora qualquer usuário do computador poderá administrar (parar, inciar, alterar) o serviço Serviço NVLAN.
Fontes/Referências
https://blogs.msmvps.com/erikr/2007/09/26/set-permissions-on-a-specific-service-windows/
https://social.technet.microsoft.com/wiki/contents/articles/2454.concedendo-permissoes-para-usuario-restrito-em-servicos-do-windows-pt-br.aspx
http://woshub.com/set-permissions-on-windows-service/
Mais Informações
Esperamos ter ajudado da melhor forma possível e estaremos sempre a disposição para mais informações.
Entre em contato conosco pelo e-mail equipe@nvlan.com.br.