I am running my application with Solaris SMF as Non Root user, i followed below steps
1- Create file like following
<?xml version='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" /> </dependency> <exec_method type="method" name="start" exec="/opt/bin/myapp.sh start" timeout_seconds="-1"> <method_context> <method_credential user='myuser' group='other' /> <method_environment> <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_context> <method_credential user='myuser' group='other' /> <method_environment> <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> <stability value="Unstable" /> <template> <common_name> <loctext xml:lang='C'>My Application</loctext> </common_name> </template> </service> </service_bundle>
2- svccfg validate myapp-smf.xml
3- Add line in /etc/security/auth_attr solaris.smf.manage.myapp:::MyApp Management::
4- usermod -A solaris.smf.manage.myapp myuser(make sure myuser is not logged in)
5- svccfg import /opt/smf/myapp-smf.xml
Now logged as myuser and verify/start/stop application with following commands
svcs -l myapp
svcadm enable myapp
svcadm disable myapp
Now problem is next day when i try to enable/disable from my user i got permission denied error.
I run again usermod -A solaris.smf.manage.myapp myuser, and it start working, i am looking for permanent fix.
Regards
usermod -A solaris.smf.manage.* myuser will solve the problem