Prowadzę proces serwera w ramach SMF (Server Management Facility) na obrazie JOSENT Base64 1.8.1 SmartOS.
Dla tych, którzy nie są zainteresowani SmartOS, jest to oparta na chmurze dystrybucja IllumOS z KVM. Ale zasadniczo jest podobny do Solaris i dziedziczy po OpenSolaris. Więc nawet jeśli nie korzystałeś ze SmartOS, mam nadzieję, że wykorzystam trochę wiedzy o Solarisie na ServerFault.
Mój problem polega na tym, że chcę, aby nieuprzywilejowany użytkownik mógł zrestartować usługę, której jest właścicielem. Nauczyłem się, jak to zrobić, używając RBAC, dodając autoryzację /etc/security/auth_attr
i wiążąc ją z moim użytkownikiem.
Następnie dodałem następujące informacje do mojego manifestu SMF dla usługi:
<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>
I działa to dobrze po zaimportowaniu. Mój nieuprzywilejowany użytkownik może zrestartować, uruchomić i zatrzymać własny proces serwera (dotyczy to automatycznych wdrożeń kodu).
Jeśli jednak wyeksportuję manifest SMF, dane konfiguracyjne znikną ... wszystko, co widzę w tej sekcji, to:
<property_group name='general' type='framework'>
<property name='action_authorization' type='astring'/>
<property name='value_authorization' type='astring'/>
</property_group>
Czy ktoś wie, dlaczego tak się dzieje? Czy moja składnia jest nieprawidłowa, czy po prostu nieprawidłowo używam SMF?