Descripción

El Wrapper puede ser usado para controlar un Servicio de Windows con varias acciones, como iniciar (START), detener (STOP), reanudar (RESUME), consultar (QUERY), etc. Por defecto, estas acciones requieren privilegios de Administrador, y se puede solicitar una aprobación de Control de Cuentas de Usuario para su ejecución.

Desde la versión 3.5.42, la edición Profesional del Wrapper hace posible otorgar permisos en los Servicios de Windows. Se puede configurar tantos permisos como sea necesario, cada uno permitiendo a un usuario o grupo ejecutar una lista de acciones en un servicio especifico.

Hay varios casos en los que puede ser útil cambiar los permisos de un servicio:

Los permisos se establecen al instalar un servicio, o al actualizar un servicio instalado. Para actualizar, el servicio debe estar en estado detenido.

Actualizar un servicio:
.\wrapper.exe -u ../conf/wrapper.conf

Esta página describe el conjunto de propiedades de configuración usadas para administrar los permisos.

Las propiedades siguientes pueden enumerarse con índices incrementados:

Las propiedades individuales siguientes también pueden ser usadas para configuraciones avanzadas:

Además, es posible consultar los permisos de un servicio.

Configurar permisos

wrapper.ntservice.permissions.<n>.account

Compatibilidad :3.5.42
Ediciones :Edición ProfesionaEdición Estándar (No Compatible)Edición de la Comunidad (No Compatible)
Plataformas :WindowsMac OSX (No Compatible)Linux (No Compatible)IBM AIX (No Compatible)FreeBSD (No Compatible)HP-UX (No Compatible)Solaris (No Compatible)IBM z/Linux (No Compatible)

Establece la cuenta o el grupo al que se otorgarán los derechos de acceso para el servicio de destino.

Los formatos válidos son:

  • <cuenta_local_o_nombre_del_grupo>
  • .\<cuenta_local_o_nombre_del_grupo>
  • <dominio>\<cuenta_o_nombre_del_grupo>

También se puede configurar la propiedad a 'CURRENT_USER' para especificar el usuario actual de la máquina donde se establecerá el permiso. Esto puede ser útil al desplegar la misma configuración a varias máquinas configuradas con nombres de usuarios diferentes.

Esta propiedad no tiene valor predeterminado. Tanto esta propiedad como la propiedad wrapper.ntservice.permissions.<n>.allowwrapper.ntservice.permissions.<n>.allow deben estar configuradas para que un permiso sea válido.

Ejemplo:
wrapper.ntservice.permissions.1.account=.\mylocalaccount
wrapper.ntservice.permissions.1.allow=START, STOP

Si la cuenta no existe, por defecto el Wrapper mostrará un error y se dentendrá antes de configurar cualquier permiso. Sin embargo, si una cuenta no existente está incluida en wrapper.ntservice.permissions.optional_accounts, el permiso solo se omitirá.

Puede configurar cuantos permisos desee, con tan solo incrementar el componente <n> en el nombre de la propiedad (contando desde "1"). Por defecto, la numeración debe estar en secuencia, sin intervalos. Opcionalmente, se puede configurar la propiedad wrapper.ignore_sequence_gaps para permitir intervalos en la secuencia.

Si tiene vários permisos para el mismo servicio y la misma cuenta, los permisos se fusionarán usando el operador bitwise OR. Esto significa que, por ejemplo, si el permiso #1 otorga START, y permiso #2 otorga STOP, el permiso final otorgará tanto START como STOP. Esto se puede usar cuando un archivo include necesita extender el permiso con derechos de acceso adicionales.

NOTA

Por seguridad, el Wrapper no permite cambiar los permisos del grupo de Administradores. De hecho, esto podría conducir a una situación de bloqueo en que ya no sería posible detener o desinstalar el servicio, y ni siquiera restablecer sus permisos.

wrapper.ntservice.permissions.<n>.allow

Compatibilidad :3.5.42
Ediciones :Edición ProfesionaEdición Estándar (No Compatible)Edición de la Comunidad (No Compatible)
Plataformas :WindowsMac OSX (No Compatible)Linux (No Compatible)IBM AIX (No Compatible)FreeBSD (No Compatible)HP-UX (No Compatible)Solaris (No Compatible)IBM z/Linux (No Compatible)

Configura una lista con acciones separadas por comas que un permiso otorga a un usuario o grupo en un servicio de Windows.

Esta propiedad no tiene valor predeterminado. Tanto esta propiedad como la propiedad wrapper.ntservice.permissions.<n>.account deben estar configuradas para que un permiso sea válido. Sin embargo, puede definirla como un valor vacío o a 'NONE' para eliminar todos los permisos para un determinado usuario o grupo.

Se pueden enumerar los siguientes derechos de acceso:

  • QUERY_STATUS :

    Permite consultar el estado del servicio.

  • QUERY_PERMISSIONS :

    Permite consultar los permisos de un servicio. Use este permiso junto con UPDATE_CONFIG al actualizar un servicio.

  • UPDATE_CONFIG :

    Permite actualizar la configuración del servicio.

  • UPDATE_PERMISSIONS :

    Permite actualizar los permisos del servicio.

  • START :

    Permite iniciar el servicio.

  • STOP :

    Permite detener el servicio.

  • PAUSE_RESUME :

    Permite pausar/continuar el servicio.

  • INTERROGATE :

    Permite interrogar el servicio. Este permiso debe ser usado junto con CONTROL_CODE al enviar código de control para interrogar un servicio.

  • CONTROL_CODE :

    Permite enviar al servicio comandos de control definidos por el usuario.

  • ALL :

    Todos los derechos de acceso.

  • NONE :

    Ningun derecho de acceso.

Ejemplo:
wrapper.ntservice.permissions.1.account=CURRENT_USER
wrapper.ntservice.permissions.1.allow=START, STOP, PAUSE_RESUME

Si se encuentra un valor que no figura en la lista anterior, se omitirá y se imprimirá una advertencia.

NOTA

Aun quando los permisos se configuran durante la instalación del servicio, estos en realidad se configuran después que se crea el servicio. Por lo tanto, no hay permisos para instalar un servicio, ya que su estado de instalación instalado es un requisito previo para establecer permisos.

wrapper.ntservice.permissions.<n>.service

Compatibilidad :3.5.42
Ediciones :Edición ProfesionaEdición Estándar (No Compatible)Edición de la Comunidad (No Compatible)
Plataformas :WindowsMac OSX (No Compatible)Linux (No Compatible)IBM AIX (No Compatible)FreeBSD (No Compatible)HP-UX (No Compatible)Solaris (No Compatible)IBM z/Linux (No Compatible)

Especifica el nombre del servicio al que debe aplicarse el permiso.

Esta propiedad es opcional. Si no se especifica, el valor predeterminado será el nombre del servicio actual (el valor de wrapper.name).

Ejemplo:
wrapper.ntservice.permissions.1.account=CURRENT_USER
wrapper.ntservice.permissions.1.allow=START, STOP, PAUSE_RESUME

wrapper.ntservice.permissions.2.service=dependant_service
wrapper.ntservice.permissions.2.account=CURRENT_USER
wrapper.ntservice.permissions.2.allow=PAUSE_RESUME

Un servicio debe existir para que el permiso sea válido. Si el valor no coincide con ningún nombre de los servicios instalados, el Wrapper por defecto mostrará un error y se detendrá antes de configurar cualquier permiso. Sin embargo, si un servicio no existente está incluido en wrapper.ntservice.permissions.optional_services, el permiso solo se omitirá.

Permisos opcionales (para portabilidad)

wrapper.ntservice.permissions.optional_accounts

Compatibilidad :3.5.42
Ediciones :Edición ProfesionaEdición Estándar (No Compatible)Edición de la Comunidad (No Compatible)
Plataformas :WindowsMac OSX (No Compatible)Linux (No Compatible)IBM AIX (No Compatible)FreeBSD (No Compatible)HP-UX (No Compatible)Solaris (No Compatible)IBM z/Linux (No Compatible)

Permite enumerar cuentas opcionales al configurar los permisos de un servicio de Windows. Si un permiso se configura con una cuenta presente en esta lista, y esa cuenta no existe en la máquina en donde se ejecuta el Wrapper, el permiso se omitirá en vez de causar un error FATAL.

Enumerar cuentas opcionales puede ser útil al desplegar un archivo de configuración único a várias máquinas configuradas con cuentas distintas. Los permisos a los cuales las cuentas no existen se ignorarán, dejando la posibilidad para que otros permisos se configuren normalmente.

wrapper.ntservice.permissions.optional_services

Compatibilidad :3.5.42
Ediciones :Edición ProfesionaEdición Estándar (No Compatible)Edición de la Comunidad (No Compatible)
Plataformas :WindowsMac OSX (No Compatible)Linux (No Compatible)IBM AIX (No Compatible)FreeBSD (No Compatible)HP-UX (No Compatible)Solaris (No Compatible)IBM z/Linux (No Compatible)

Permite enumerar servicios opcionales al configurar los permisos de un servicio de Windows. Si un permiso se configura con un servicio presente en esa lista, y el servicio no existe en la máquina en donde se ejecuta el Wrapper, el permiso se omitirá en vez de causar un error FATAL.

Enumerar servicios opcionales puede ser útil al desplegar un archivo de configuración único a varias máquinas en las que distintos servicios se instalan. Los permisos a los servicios que no existen se ignorarán, dejando la posibilidad de configurar otros permisos normalmente.

Depuración

wrapper.ntservice.permissions.check.loglevel

Compatibilidad :3.5.42
Ediciones :Edición ProfesionaEdición Estándar (No Compatible)Edición de la Comunidad (No Compatible)
Plataformas :WindowsMac OSX (No Compatible)Linux (No Compatible)IBM AIX (No Compatible)FreeBSD (No Compatible)HP-UX (No Compatible)Solaris (No Compatible)IBM z/Linux (No Compatible)

Controla el nivel de registro en el que se imprimen las salidas de depuración al verificar los permisos.

Un permiso para una operación que el Wrapper realiza en un servicio en realidad se compone de varios derechos de acceso básicos proporcionados por el modelo de seguridad de Windows. Antes de ejecutar una operación, el Wrapper verificará si el usuario actual tiene permiso para ello, y así verificar que se otorgue cualquiera de los derechos de acceso básicos. Al hacerlo, se imprimirá un mensaje para mostrar el estado (concedido o no) de cada derecho de acceso. Esta propiedad permite controlar el nivel de registro de estos mensages.

El valor predeterminado es DEBUG.

Ejemplo:
Permission check for testwrapper - QUERY_PERMISSIONS (SERVICE_QUERY_STATUS=TRUE, READ_CONTROL=TRUE) -> OK

En el ejemplo anterior, puede ver que QUERY_PERMISSIONS en realidad es compuesto de SERVICE_QUERY_STATUS y READ_CONTROL. Ambos permisos básicos de acceso son TRUE, lo que resulta en que QUERY_PERMISSIONS se otorgue al usuario actual.

Consultar los permisos de un servicio de Windows

Compatibilidad :3.5.42
Ediciones :Edición ProfesionaEdición Estándar (No Compatible)Edición de la Comunidad (No Compatible)
Plataformas :WindowsMac OSX (No Compatible)Linux (No Compatible)IBM AIX (No Compatible)FreeBSD (No Compatible)HP-UX (No Compatible)Solaris (No Compatible)IBM z/Linux (No Compatible)

Es posible consultar los permisos de un servicio usando el comando a seguir:

Consultar los permisos del servicio actual:
.\wrapper.exe -qp ../conf/wrapper.conf
wrapperm | Current user: mypc\myuser
wrapperm |   Is member of: NT AUTHORITY\INTERACTIVE
wrapperm |
wrapperm | Permissions for the testwrapper service:
wrapperm |
wrapperm |   mypc\myuser:
wrapperm |     START, STOP, PAUSE_RESUME
wrapperm |
wrapperm |   NT AUTHORITY\SYSTEM:
wrapperm |     QUERY_STATUS, QUERY_PERMISSIONS, START, STOP, PAUSE_RESUME, INTERROGATE, CONTROL_CODE
wrapperm |
wrapperm |   NT AUTHORITY\INTERACTIVE:
wrapperm |     QUERY_STATUS, QUERY_PERMISSIONS, INTERROGATE, CONTROL_CODE
wrapperm |
wrapperm |   NT AUTHORITY\SERVICE:
wrapperm |     QUERY_STATUS, QUERY_PERMISSIONS, INTERROGATE, CONTROL_CODE

En el ejemplo de salida anterior, puede ver que myuser es un miembro de NT AUTHORITY\INTERACTIVE y por lo tanto hereda sus permisos. Adicionalmente, START, STOP, PAUSE_RESUME se otorgan especialmente al usuario.

También es posible consultar los permisos de un otro servicion usando '-qp=serviceName'.

Consultar los permisos de un otro usando su nombre:
.\wrapper.exe -qp=otherservice ../conf/wrapper.conf

Referencia - Servicios de Windows

[Visualizar/Mostrar]

[Iniciar/Detener]