Предположим, у вас есть ваши собственные программы, работающие через SMF. Теперь вы хотите предоставить некоторым обычным пользователям возможность перезапускать эти программы, любые же другие привилегии вы давать им не хотите. С помрщью SMF это действительно просто, можно дать разрешение для какого-либо одного приложения или для группы, и т.д.
1. В
/etc/security/auth_attr добавляем запись:
# grep ^wp /etc/security/auth_attr
wp.applications:::Manage WP applications::
2. Добавляем новую в каждую службу SMF, для которой надо разрешить пользователям операции "restart/enable/disable":
# svccfg -s wpfileback setprop general/action_authorization = astring: wp.applications
Теперь пользователь сможет перезапустить или временно отключить/включить службу (
wpfileback в вышеупомянутом примере). Если вы хотите дать возможность пользователю менять
service status, надо выполнить:
# svccfg -s wpfileback setprop general/value_authorization = astring: wp.applications
3. Добавляем разрешение для пользователя (в данном случае -
operator):
# usermod -A wp.applications operator
Можно добавить авторизацию и вручную, редактируя файл
/etc/user_attr. После добавления:
# grep operator /etc/user_attr
operator::::type=normal;auths=wp.applications
Теперь пользователь
operator в сотоянии выполнять операции "disable/enable/restart" для программы
wpfileback.
Вдобавок можно дать разрешение для программистов не только перестартовывать их программы, но и использовать
dtrace. Для этого добавляем 2 привилегии:
# grep operator /etc/user_attr
operator::::type=normal;auths=wp.applications;defaultpriv=basic,dtrace_proc,dtrace_user
Теперь пользователь
operator может не только останавливать и запускать свою программу, но и использовать
dtrace для поиска возможных проблем.
По умолчанию в Solaris уже есть множество профилей и разрешений. Например, если вы добавляете для данного пользователя профиль "Service Operator", вы предоставляете разрешение на операции "disable/enable/restart" для всех служб SMF, без предоставления учетной записи
root.
Дополнительная информация: smf_security(5), rbac(5), privileges(5)
Из блога Роберта Милковски