【问题标题】:Jenkins not able to access java : localhost jenkins[807]: Starting Jenkins bash: /usr/bin/java: Permission deniedJenkins 无法访问 java:localhost jenkins [807]:启动 Jenkins bash:/usr/bin/java:权限被拒绝
【发布时间】:2016-07-13 13:14:29
【问题描述】:

我已经在 centos 7 上安装并配置了 jenkins。我在文件 /etc/init.d/jenkins 中添加了有效的 java 路径 即“/usr/bin/java”

下面是java路径详细信息:

lrwxrwxrwx. 1 root root 22 Dec 24  2015 java -> /etc/alternatives/java

现在,从 root 用户 运行“service jenkins start”命令时,我遇到了以下错误。

● jenkins.service - LSB: Jenkins Continuous Integration Server
   Loaded: loaded (/etc/rc.d/init.d/jenkins)
   Active: failed (Result: exit-code) since Wed 2016-07-13 18:25:51 IST; 5s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 807 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=1/FAILURE)

Jul 13 18:25:51 localhost systemd[1]: Starting LSB: Jenkins Continuous Integration Server...
Jul 13 18:25:51 localhost runuser[812]: pam_unix(runuser:session): session opened for user jenkins by (uid=0)
Jul 13 18:25:51 localhost jenkins[807]: Starting Jenkins bash: /usr/bin/java: Permission denied
Jul 13 18:25:51 localhost runuser[812]: pam_unix(runuser:session): session closed for user jenkins
Jul 13 18:25:51 localhost jenkins[807]: [FAILED]
Jul 13 18:25:51 localhost systemd[1]: jenkins.service: control process exited, code=exited status=1
Jul 13 18:25:51 localhost systemd[1]: Failed to start LSB: Jenkins Continuous Integration Server.
Jul 13 18:25:51 localhost systemd[1]: Unit jenkins.service entered failed state.
Jul 13 18:25:51 localhost systemd[1]: jenkins.service failed.

即使每个用户都可以访问 java 路径,我也无法弄清楚为什么它给我的权限被拒绝。

同样在运行“journalctl -xe”命令时,它会在日志下方显示:

Jul 13 18:45:33 localhost systemd[1]: Unit jenkins.service entered failed state.
Jul 13 18:45:33 localhost systemd[1]: jenkins.service failed.
Jul 13 18:45:33 localhost polkitd[20151]: Unregistered Authentication Agent for unix-process:27889:3161602 (system bus name :1.303, object path /org/freedesktop/PolicyKit1/AuthenticationAgen

是不是Jenkins服务没有访问java路径的权限?如果不是,为什么会出现该错误?

【问题讨论】:

  • 在 jenkins.service 单元文件中,服务的所有者可以定义为 jenkins。尽管以 root 身份运行,服务仍尝试使用 jenkins 用户运行。您可以尝试在服务单元文件中更改User=root
  • 它像冠军一样工作。
  • 好的,但这是授予 jenkins 用户权限的更好方法。所以检查/etc/alternatives/java符号链接,找到原始的java路径。检查权限。
  • 是的。会做的。我建议你把它写成答案,这样它会帮助其他人。

标签: jenkins permission-denied jenkins-cli


【解决方案1】:

你有两种选择来解决这个问题。

  1. Jenkins 服务由 jenkins 用户启动。该错误表示 jenkins 用户没有运行 java 的权限。因此,请检查原始 java 路径并将执行权限授予其他用户。
  2. 在 jenkins.service 单元文件中,更改服务的所有者。将User=jenkins 替换为User=root

【讨论】:

  • 请告诉我在哪里可以找到`jenkins.service`文件
【解决方案2】:

服务 jenkins 的默认用户是“jenkins”。所以“jenkins”可能没有访问服务“java”的权限。 所以我们需要改变服务jenkins的使用。 来自 jenkins 服务提升脚本“/etc/init.d/jenkins”。我们可以获取配置文件路径,比如“/etc/sysconfig/jenkins”

【讨论】:

    【解决方案3】:

    尝试更改文件,/etc/init.d/jenkins 专门寻找 JENKINS_USER 键并尝试用 root 替换 jenkins。

    这在 RHEL 上对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-21
      • 2020-02-03
      • 2018-11-16
      • 1970-01-01
      • 2022-12-18
      • 2019-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多