我正在Joyent的Base64 1.8.1 SmartOS映像上的SMF(服务器管理工具)下运行服务器进程。
对于不熟悉SmartOS的用户,它是带有KVM的IllumOS的基于云的发行版。但从本质上讲,它类似于Solaris,并且继承自OpenSolaris。因此,即使您没有使用SmartOS,我也希望利用ServerFault上的一些Solaris知识。
我的问题是我希望允许非特权用户重新启动他们拥有的服务。我已经弄清楚了如何使用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?