非超级用户下运行 Solaris SMF 服务
今天在 Solaris 上遇到一个问题,我需要在非超级用户下运行某个服务。默认情况下,通过 SMF 管理的都是在 root 用户下运行的,但是我们可以通过修改配置文件来使其运行到特定用户下。
例如,我们有如下一个配置文件(部分):
1 | <exec_method type="method" name="start" exec="/path/to/exec_binary &"> |
现在,我们想要 exec_binary
在 tom
用户下运行,那么我们需要加入 method_credential
元素,如下所示:
1 | <exec_method type="method" name="start" exec="/path/to/exec_binary &"> |
这样,我们便可以在 tom
用户下运行 exec_binary
的服务了,这里需要注意 method_credential
的位置,它需要位于 method_environment
之前,否则将出现如下问题。
1 | element method_context: validity error : Element method_context content does not follow the DTD, expecting ((method_profile | method_credential)? , method_environment?), got (method_environment method_credential ) |
我们可通过查看 /usr/share/lib/xml/dtd/service_bundle.dtd.1
文件来了解更多的 SMF 配置信息。
参考
[1] https://www.linuxquestions.org/questions/solaris-opensolaris-20/problem-by-validate-a-manefest-file-4175468958/
[2] https://www.master-tutorial.design/2010/06/credentials-and-projects-for-solaris-10.html