Управление только 1 SMF-сервисом без sudo-прав.

Имеем сервис 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *