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

bash脚本systemctl在CentOS7上以非root用户身份启用服务

澹台建华
2023-03-14

我创建了一个脚本来部署必须在启动时运行的java程序。我编写了一个由脚本自定义的litte模板,并将其添加到 /etc/systemd/system/ServerName.service

[Unit]
Description= ServerName Java Daemon

[Service]
ExecStart=/usr/lib/jvm/java/bin/java -jar PathToFile.jar 
User=psadmin

[Install]
WantedBy=multi-user.target # Similar to runlevel 5

我在visudo中添加了用户psadmin来运行systemctl,而不需要提示输入密码。这对于使用sudo systemctl start ServerName启动服务非常有效。服务然后,脚本重新加载systemctl守护进程,“sudo systemctl daemon reload”。

当脚本使用systemctl启用ServerName.service执行该部分时,我得到返回“未能发出方法调用:访问被拒绝”。

当我在相同的用户上下文下手动执行此操作时,我得到的回报是“未能发出方法调用:无效参数”,但它有效并且服务已启用。感谢任何提示!

共有1个答案

扈俊健
2023-03-14

Systemctl受到非特权用户的保护。您必须修改sudoers,以允许该用户或组(该用户是其中的一部分)执行该命令。

对于ServerOverflow来说,这也是一个更好的问题。参见sudo手册页

%wheel = /usr/bin/systemctl restart ServerName.service
%wheel = /usr/bin/systemctl stop ServerName.service
%wheel = /usr/bin/systemctl start ServerName.service 
%wheel = /usr/bin/systemctl status ServerName.service
 类似资料:
  • 我正在尝试以root用户身份运行脚本。这是我的密码 它在出错 我也遵循了这些方法,但最终出现了错误

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

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

  • 问题内容: 在构建Docker映像时,如何将文件添加到映像中,以便生成的文件由root以外的用户拥有? 问题答案: 对于v17.09.0-ce及更高版本 将可选标志与或命令一起使用。 例如 --chown标志的文档现在位于Dockerfile参考主页面上。 版本 34263 已被合并,可以在v17.09.0-ce版本中使用。 对于v17.09.0-ce之前的版本 Docker不以root用户身份支

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

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