【问题标题】:bash script systemctl enable service as non root user on CentOS7bash 脚本 systemctl 在 CentOS7 上以非 root 用户身份启用服务
【发布时间】:2015-09-29 19:27:39
【问题描述】:

我创建了一个脚本,用于部署必须在启动时运行的 java 程序。我写了一个由脚本自定义的小模板,并将其添加到 /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.service 启动服务非常有效。然后脚本重新加载 systemctl 守护进程,“sudo systemctl daemon-reload”。

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

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

【问题讨论】:

  • 问题是java客户端使用的数据库。服务尝试连接时数据库未运行。

标签: bash service startup centos7


【解决方案1】:

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

【讨论】:

  • 如何在不输入密码的情况下增加执行停止/启动/重启的机会?
猜你喜欢
  • 2015-04-29
  • 2015-11-02
  • 1970-01-01
  • 1970-01-01
  • 2013-08-10
  • 2022-01-17
  • 2018-04-09
  • 1970-01-01
  • 2014-05-21
相关资源
最近更新 更多