Я запускаю серверный процесс под SMF (Средство управления сервером) на образе JOSENT Base64 1.8.1 SmartOS.
Для тех, кто не знаком со SmartOS, это облачный дистрибутив IllumOS с KVM. Но по сути он похож на Solaris и наследуется от OpenSolaris. Поэтому, даже если вы не использовали SmartOS, я надеюсь воспользоваться некоторыми знаниями Solaris по ServerFault.
Моя проблема в том, что я хочу, чтобы непривилегированному пользователю было разрешено перезапустить службу, которой он владеет. Я разработал, как это сделать, используя RBAC и добавив авторизацию /etc/security/auth_attr
и связав эту авторизацию с моим пользователем.
Затем я добавил следующее в мой SMF-манифест для службы:
<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>
И это хорошо работает при импорте. Моему непривилегированному пользователю разрешено перезапускать, запускать и останавливать свой собственный процесс сервера (это для автоматических развертываний кода).
Однако, если я экспортирую манифест SMF, эти данные конфигурации исчезнут ... все, что я вижу в этом разделе, это:
<property_group name='general' type='framework'>
<property name='action_authorization' type='astring'/>
<property name='value_authorization' type='astring'/>
</property_group>
Кто-нибудь знает, почему это происходит? Мой синтаксис неверен или я просто неправильно использую SMF?