26 febrero, 2015

Asignar o modificar permisos (ACLs) en los servicios de Windows

Me sorprende que de forma nativa Windows XP/7/8.1 no incorporen la característica de modificar permisos sobre servicios de Windows (services.msc) o algo similar para ello (o que yo hasta hoy desconozco...) y se tenga que recurrir a aplicaciones externas para ello.

Una herramienta de linea de comandos para editar permisos de servicios entre otras cosas es la que nos proporciona MS Windows pero que debemos descargarla a parte al sistema es: Subinacl.exe, la cual podemos descargar desde la propia web de Microsoft.
Aquí tendremos más ayuda sobre Subinacl.exe: http://www.ponx.org/download/CD/Outils-Win/subinacl.htm

Service Security Editor, es un pequeño software gratuito y portable desarrollado por Coretechnologies.com el cual nos permitirá modificar a ciertos usuarios/grupos que permisos tienen o no, en determinados servicios de Windows.

Una vez abrimos el software seleccionamos el servicio que queramos modificar sus permisos y a continuación le daremos en "Open...".

Selección de servicios para la posterior modificación de permisos
Figura 1: Selección de servicios para la posterior modificación de permisos.

Se nos abrirá la típica ventana de administración de ACLs de Windows para usuarios/grupos. Aquí simplemente procederemos a realizar los cambios oportunos dependiendo nuestras necesidades, como la haríamos de forma normal sobre una carpeta de Windows, por ejemplo.

Ventana de ACLs de Windows predeterminada para agregar o quitar usuarios y permisos
Figura 2: Ventana de ACLs de Windows predeterminada para agregar o quitar usuarios y permisos.

Descargar Service Security Editor

Para complementar un poco más este artículo comentaré otra herramienta en linea de comandos: SetACL de los desarrolladores helgeklein.com (disponible para versiones de Windows x86 o x64). Esta nos permite, entre otras cosas, dar permisos de START y STOP  sobre el servicio a un usuario de dominio en concreto o un grupo de ellos.

La sintaxis sería algo como esto.
setacl -on \\[NombreDelServidor]\[NombreDelServicio] -ot srv -actn ace -ace "n:[DOMINIO/USUARIO];p:start_stop"
En este caso, especificamos el Nombre FQDN o IP del Servidor remoto, el nombre del servicio en cuestión y el usuario de dominio en el que queramos otorgar permisos de iniciar y parar un servicio de un servidor Windows.

Después podremos ver los permisos asignados al servicio de Windows en cuestión.
setacl -on \\[NombreDelServidor]\[NombreDelServicio] -ot srv -actn list
En mi caso como ejemplo, el usuario "adrian" (no hace falta especificar el nombre del servidor remoto si se trata de un usuario local del equipo, ya que no tendría sentido) tiene permisos de control total sobre el "Servicio de actualizaciones de Adobe" (AdobeARMservice).

Comprobando los permisos del servicio de actualizaciones de Adobe con SetACL
Figura 3: Comprobando los permisos del servicio de actualizaciones de Adobe con SetACL.

Permisos de servicios en el registro de Windows (Regedit):

También podremos observar que cada vez que agregamos permisos a un usuario/grupo en el registro de Windows se crea una subclave llamada "Security" que contiene un nuevo valor binario (REG_BINARY) el cual almacena la información que otorga permisos a dicho usuario.

Esta subclave es creada en las dos ramas del registro donde se ubican los servicios, que son:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

Dejo un enlace para aquellos que quieran profundizar más sobre esta herramienta.
Más información sobre SetACL (command line): https://helgeklein.com/setacl/documentation/command-line-version-setacl-exe

Los mismos desarrolladores proporcionan también la misma herramienta pero con una GUI intuitiva, llamada SetACL Studio. De forma más avanzada y sencilla, nos permite administrar los permisos no solo de los servicios de Windows, si no también de impresoras, claves de registro de Windows, etc.

SetACL Studio herramienta para la administración de permisos en servicios
Figura 4: SetACL Studio herramienta para la administración de permisos en servicios.

Esta herramienta NO es gratuita, pasado el tiempo de prueba de 30 días dejará de funcionar. Pero en su periodo de prueba está 100% funcional con todas sus opciones disponibles.

Descargar SetACL (Command Line)
Descargar SetACL Studio

Saludos!

No hay comentarios:

Publicar un comentario

Entradas Relacionadas