我正在以非 Root 用户身份使用 Solaris SMF 运行我的应用程序,我按照以下步骤操作
1-创建如下文件
<?xml 版本='1.0'?> <!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'> <service_bundle type="manifest" name="myapp"> <service name="application/management/myapp" type="service" version="1"> <create_default_instance enabled="false" /> <single_instance /> <dependency name="multi-user-server" type="service" grouping="require_all" restart_on="none"> <service_fmri value="svc:/milestone/multi-user-server" /> </依赖> <exec_method type="method" name="start" exec="/opt/bin/myapp.sh start" timeout_seconds="-1"> <方法上下文> <method_credential user='myuser' 组='other' /> <方法环境> <envvar name='PATH' value='/usr/bin:/usr/sbin:/usr/ccs/bin:/usr/local/bin:/usr/local/sbin:/usr/sfw/bin' /> <envvar name='JAVA_HOME' value='/usr/java/' /> </method_environment> </method_context> </exec_method> <exec_method type="method" name="stop" exec="/opt/bin/myapp.sh stop" timeout_seconds="-1"> <方法上下文> <method_credential user='myuser' 组='other' /> <方法环境> <envvar name='PATH' value='/usr/bin:/usr/sbin:/usr/ccs/bin:/usr/local/bin:/usr/local/sbin:/usr/sfw/bin' /> <envvar name='JAVA_HOME' value='/usr/java/' /> </method_environment> </method_context> </exec_method> <property_group name='start' type='method'> <propval name='action_authorization' type='astring' value='solaris.smf.manage.myapp' /> <propval name='modify_authorization' type='astring' value='solaris.smf.manage.myapp' /> <propval name='value_authorization' type='astring' value='solaris.smf.manage.myapp' /> </property_group> <property_group name='stop' type='method'> <propval name='action_authorization' type='astring' value='solaris.smf.manage.myapp' /> <propval name='modify_authorization' type='astring' value='solaris.smf.manage.myapp' /> <propval name='value_authorization' type='astring' value='solaris.smf.manage.myapp' /> </property_group> <property_group name='general' type='framework'> <propval name='action_authorization' type='astring' value='solaris.smf.manage.myapp' /> <propval name='value_authorization' type='astring' value='solaris.smf.manage.myapp' /> <propval name='modify_authorization' type='astring' value='solaris.smf.manage.myapp' /> </property_group> <稳定性值="不稳定" /> <模板> <common_name> <loctext xml:lang='C'>我的应用程序</loctext> </common_name> </模板> </服务> </service_bundle>
2- svccfg 验证 myapp-smf.xml
3- 在 /etc/security/auth_attr solaris.smf.manage.myapp:::MyApp Management:: 中添加行
4- usermod -A solaris.smf.manage.myapp myuser(确保myuser没有登录)
5- svccfg 导入 /opt/smf/myapp-smf.xml
现在以 myuser 身份登录并使用以下命令验证/启动/停止应用程序
svcs -l myapp
svcadm enable myapp
svcadm disable myapp
现在问题是第二天当我尝试从我的用户启用/禁用时,我收到了权限被拒绝错误。
我再次运行 usermod -A solaris.smf.manage.myapp myuser,它开始工作,我正在寻找永久修复。
问候