Estoy ejecutando un proceso de servidor bajo SMF (Server Management Facility) en la imagen SmartOS Base64 1.8.1 de Joyent.
Para aquellos que no están interesados en SmartOS, es una distribución basada en la nube de IllumOS con KVM. Pero esencialmente es como Solaris y hereda de OpenSolaris. Entonces, incluso si no ha utilizado SmartOS, espero aprovechar algunos conocimientos de Solaris en ServerFault.
Mi problema es que quiero que un usuario sin privilegios pueda reiniciar un servicio de su propiedad. He descubierto cómo hacerlo usando RBAC y agregando una autorización /etc/security/auth_attr
y asociando esa autorización con mi usuario.
Luego agregué lo siguiente a mi manifiesto SMF para el servicio:
<property_group name='general' type='framework'>
<!-- Allow to be restarted-->
<propval name='action_authorization' type='astring'
value='solaris.smf.manage.my-server-process' />
<!-- Allow to be started and stopped -->
<propval name='value_authorization' type='astring'
value='solaris.smf.manage.my-server-process' />
</property_group>
Y esto funciona bien cuando se importa. Mi usuario no privilegiado puede reiniciar, iniciar y detener su propio proceso de servidor (esto es para implementaciones de código automatizadas).
Sin embargo, si exporto el manifiesto SMF, estos datos de configuración desaparecen ... todo lo que veo en esa sección es esto:
<property_group name='general' type='framework'>
<property name='action_authorization' type='astring'/>
<property name='value_authorization' type='astring'/>
</property_group>
¿Alguien sabe por qué ocurre esto? ¿Mi sintaxis es incorrecta o simplemente estoy usando SMF incorrectamente?