当前位置: 首页 > 知识库问答 >
问题:

使用Solaris SMF作为非Root用户运行Java应用程序

上官季
2023-03-14

我以非Root用户的身份使用Solaris SMF运行我的应用程序,我遵循以下步骤

1-创建如下文件

    <?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验证myapp smf。xml

3-在/etc/security/auth_attr solaris中添加行。smf。管理myapp::myapp管理::

4-usermod-Asolaris.smf.manage.myappmyuser(确保myuser未登录)

5-svccfg导入 /opt/smf/myapp-smf.xml

现在以myuser身份登录,并使用以下命令验证/启动/停止应用程序

svcs -l myapp

svcadm enable myapp
svcadm disable myapp

现在的问题是第二天,当我尝试从我的用户启用/禁用时,我得到了权限拒绝错误。

我再次运行usermod——solaris。smf。管理我的应用程序我的用户,它开始工作,我正在寻找永久修复。

问候

共有1个答案

公冶安怡
2023-03-14

usermod-一个solaris。smf。管理。*我的用户会解决这个问题

 类似资料:
  • 问题内容: 在昨天的Shocker消息发布之后,似乎Docker容器中的应用程序不应以root用户身份运行。我尝试更新自己以创建应用程序用户,但是更改对应用程序文件的权限(虽然仍然是root)似乎不起作用。我猜这是因为未将某些LXC权限授予root用户? 这是我的Dockerfile: 很简单,但是当我一切仍然由root拥有时: 感谢@creak对卷的工作原理的澄清,我更新的dockerfile的

  • 我使用Ansible安装了Nginx。要在Centos7上安装,我使用了yum软件包,因此默认情况下它是以root用户身份运行的。我希望它在Centos中以不同的用户(前nginx用户)身份启动和运行。当我尝试与其他用户一起运行时,会出现以下错误: nginx的工作。服务失败,因为控制进程已退出,错误代码为。有关详细信息,请参阅“systemctl status nginx.service”和“j

  • 问题内容: 在昨天的Shocker消息发布之后,似乎Docker容器中的应用程序不应以root用户身份运行。我尝试更新自己以创建应用程序用户,但是更改对应用程序文件的权限(虽然仍然是root)似乎不起作用。我猜这是因为未将某些LXC权限授予root用户? 这是我的Dockerfile: 很简单,但是当我一切仍然由root拥有时: 感谢@creak对卷的工作原理的澄清,我更新的dockerfile的

  • 我正在编写一个将在Linux服务器上运行的Java程序。程序需要以“root”的身份开始,做某种操作(读取文件),然后将自己降级为非root用户,在文件已经读取并关闭之后。 我通读了下面的问题,但还没有找到可行的解决方案--尤其是因为我处理的不是http端口。

  • 问题内容: 我已经在GitHub上建立了一个Git存储库,并从Windows计算机上进行了一些更改。 但是明天我将不得不在一台运行Ubuntu的计算机上以有限的权限(即,没有sudo)在该存储库中工作。 有适用于Linux的Git便携式版本吗?还是某些允许我仅为当前用户编译和安装Git的资源? 问题答案: 您可以下载git源,并执行git到您的主目录安装,只要您有构建工具。如果您没有安装build

  • 本文向大家介绍以非root用户身份运行Docker容器,包括了以非root用户身份运行Docker容器的使用技巧和注意事项,需要的朋友参考一下 当您在Docker容器中运行应用程序时,默认情况下,它有权访问所有root特权。您可能已经注意到,当打开Ubuntu Docker Container Bash时,默认情况下您以root用户身份登录。在应用程序的安全性方面,这可能是一个主要问题。任何局外人