Имеем сервис http:https-test-webserver. Нужно юзеру user1 дать право перезапускать его и управлять им через svcadm, не давая ему sudo.
Проверка нашего сервиса:
# svcs http:https-test-webserver
STATE STIME FMRI
online 14:21:51 svc:/network/http:https-test-webserver
Создаём свойство general/action_authorization, которое потом подвяжем к authorization конкретного юзера:
# svccfg -s http:https-test-webserver setprop general/action_authorization=astring: "solaris.smf.manage.https-test-webserver"
# svcadm refresh http:https-test-webserver
Добавляем новый user_attr:
# echo "solaris.smf.manage.https-test-webserver:::Manage Test Webserver::" >> /etc/security/auth_attr
И применяем новую авторизационную роль:
# usermod -A solaris.smf.manage.https-test-webserver user1
Теперь проверим работу (разрешён только restart/clear):
$ id
uid=100(user1) gid=10(staff)
$ svcs http:https-test-webserver
STATE STIME FMRI
online 14:23:56 svc:/network/http:https-test-webserver
$ svcadm restart http:https-test-webserver
$ svcs http:https-test-webserver
STATE STIME FMRI
online 14:27:53 svc:/network/http:https-test-webserver
Стоит заметить, что данные права запрещают отключение SMF, и тем более, рестарт другого сервиса:
$ /usr/sbin/svcadm disable http:https-test-webserver
svcadm: svc:/network/http:https-test-webserver: Permission denied.
$ /usr/sbin/svcadm restart ssh
svcadm: svc:/network/ssh:default: Permission denied.
А что если нужно разрешить enable/disable, то есть полное управление сервисом? Тогда нужно ещё прописать одно свойство:
# svccfg -s http:https-test-webserver setprop general/value_authorization=astring: "solaris.smf.manage.https-test-webserver"
# svcadm refresh http:https-test-webserver