Neste artigo o colunista Erick Albuquerque irá mostrar como definir permissão para um determinado serviço no Windows Server 2008.
Muitas vezes enfrentamos situações que não queremos deixar um serviço com a conta de Administrator Local e/ou outros. Neste artigo vamos falar sobre permissões em serviços do Windows.
Cenário Usuário Lab, está no grupo Domain Users e no grupo local Remote Desktop Users, para acesso remoto. O usuário LAB não possui permissão para fazer exatamente nada que esteja fora do seu perfil, como exemplo iremos pegar o Service.Lab, quando o usuário Lab acessa o services.msc e tentar manipular o serviço “Service.Lab” ele notará que não possui permissão nem mesmo para fazer um stop/start no serviço.
Muitos administradores de redes simplesmente acrescentam o usuário no grupo local de Administrators pensando que irão resolver o problema, que na verdade irão, mas podem causar muitos problemas no futuros.
Ex: Vírus, deleção acidental e entre outros.
1. Primeiro passo é descobrir quais permissões o nosso serviço possui, pois na hora de definir as permissões para o usuário teremos que manter a antiga.
2. Iniciar > Executar > cmd > Enter.
3. Lembrando que é necessário executar o CMD como Administrator.
4. Digite: sc sdshow “nome do serviço".
A saída do comando será algo parecido com isso: D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCR RC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD) Essas são as permissões que o serviço já possui. Vamos pegar esse trecho “D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)” para entender como funciona a nomenclatura das permissões. D: - Discretionary ACL (DACL), Controle de permissões. A:- Allow – Aqui você passa parâmetros que está liberando as permissões de controle e de grupos/usuários. CCLCSWRPWPDTLOCRRC= São as permissões que está liberado para o usuário trabalhar com o serviço. Ex: stop/start do serviço. CC - SERVICE_QUERY_CONFIG - ask the SCM for the service's current configuration DC - Delete All Child Objects LC - SERVICE_QUERY_STATUS - ask the SCM for the service's current status SW - SERVICE_ENUMERATE_DEPENDENTS - list dependent services RP - Read all properties WP - SERVICE_STOP - stop the service DT - SERVICE_PAUSE_CONTINUE - pause / continue the service LO - SERVICE_INTERROGATE - ask the service its current status CR - SERVICE_USER_DEFINED_CONTROL - send a service control defined by the service's authors SD - Delete RC - READ_CONTROL - read the security descriptor on this service. WD - Modify permissions WO - Modify owner BA- Built-in administrators Abaixo algumas siglas nos quais podemos usar para dar permissão por grupo: "AO" Account operators "RU" Alias to allow previous Windows 2000 "AN" Anonymous logon "AU" Authenticated users "BA" Built-in administrators "BG" Built-in guests "BO" Backup operators "BU" Built-in users "CA" Certificate server administrators "CG" Creator group "CO" Creator owner "DA" Domain administrators "DC" Domain computers "DD" Domain controllers "DG" Domain guests "DU" Domain users "EA" Enterprise administrators "ED" Enterprise domain controllers "WD" Everyone "PA" Group Policy administrators "IU" Interactively logged-on user "LA" Local administrator "LG" Local guest "LS" Local service account "SY" Local system "NU" Network logon user "NO" Network configuration operators "NS" Network service account "PO" Printer operators "PS" Personal self "PU" Power users "RS" RAS servers group "RD" Terminal server users "RE" Replicator "RC" Restricted code "SA" Schema administrators "SO" Server operators "SU" Service logon user Lembrando que podemos ser mais restritivo e dar a permissão por SID do usuário. Para pegar o SID de um usuário use o comando dsget em seu Active Directory: Exp: dsget user “CN=Lab,OU=Users,DC=lab,DC=local” –sid
5. Agora vamos setar a permissão apenas para o usuário Lab
Sintaxe: sc sdget “nome do serviço” <permissões> Sc sdget “Service.Lab” D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCR RC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)
Notem que estamos mantendo as permissões antigas e agora iremos dar a permissão para o usuário Lab.
Sc sdget “Service.Lab” D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCR RC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD) (A;;CCLCSWRPWPDTLOCRRC;;; S-1-5-21-1607579371-585640051-1745129182-1147)
Executado com sucesso. Agora peça para o usuário entrar no servidor e tentar manipular o serviço.
Lembrando que este procedimento serve para outros serviços do Windows.
Até a próxima.
Conclusão
Neste artigo aprendemos a dar permissões para serviços do Windows sendo que o usuário não possui nenhum outro tipo de permissão que não seja Domain Users. Erick Albuquerque | Moderator at Technet Brasil http://iisbrasil.wordpress.com/ | http://erickalbuquerque.com.br/