0

我正在以非 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,它开始工作,我正在寻找永久修复。

问候

4

1 回答 1

0

usermod -A solaris.smf.manage.* myuser 将解决问题

于 2014-09-25T06:49:33.860 回答