Jenkins 无法访问 java:localhost jenkins[807]:启动 Jenkins bash:/usr/bin/java:权限被拒绝

Jenkins not able to access java : localhost jenkins[807]: Starting Jenkins bash: /usr/bin/java: Permission denied

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

以下是 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路径?如果不是为什么会报错?

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

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

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

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

这对我在 RHEL 上有用。