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:
SiglaPermissão
CCVerificar a configuração atual pelo gerenciador de controle de serviço.
DCDeletar todos os objetos filhos.
LCVerificar o status pelo gerenciador de controle de serviço.
SWListar as dependências.
LOVerificar o status do serviço.
CREnviar um controle de serviços definido pelo autor do serviço.
RCLer a descrição de segurança do serviço.
SDDeletar.
RPIniciar o serviço.
WDModificar permissões.
WOModificar o proprietário.
WPParar o serviço.
DTPausar 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:
SiglaQuem é
AUAuthenticated users
BABuilt-in administrators
BGBuilt-in guests
BOBackup operators
BU Built-in users
DADomain administrators
DGDomain guests
DUDomain users
WDEveryone
LSLocal service account
SYLocal 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.

NVLAN - Consultoria