Jenkins 2.492.2 及更新版本使用 systemd 管理服务,不再使用 /etc/sysconfig/jenkins
配置文件。因此,修改 Jenkins 运行用户的方法不同于早期版本,需要通过 systemd 的 override 机制 进行配置。
1. 检查当前 Jenkins 运行用户
在修改前,先确认 Jenkins 运行的用户:
ps aux | grep jenkins
如果看到:
jenkins 1234 2.3 1.2 1234567 56789 ? Ssl 02:33 0:15 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war ...
说明 Jenkins 仍然以 jenkins
用户运行。
2. 修改 Jenkins 运行用户
2.1 使用 systemd override
执行以下命令:
sudo systemctl edit jenkins
然后在打开的编辑窗口中添加:
[Service]
User=root
Group=root
保存并退出(:wq
)。
3. 重新加载 systemd 并重启 Jenkins
执行以下命令使配置生效:
sudo systemctl daemon-reload
sudo systemctl restart jenkins
4. 确认修改是否成功
检查 Jenkins 进程
ps aux | grep jenkins
如果输出类似:
root 6774 24.7 2.2 8168396 357068 ? Ssl 02:55 0:23 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8080
说明 Jenkins 已成功以 root 运行。
检查 systemd 状态
sudo systemctl status jenkins
如果 Main PID
行显示 root
,则修改成功:
● jenkins.service - Jenkins Continuous Integration Server
Loaded: loaded (/usr/lib/systemd/system/jenkins.service; enabled; vendor preset: disabled)
Active: active (running) since ...
Main PID: 6774 (java)
Tasks: ...
CGroup: /system.slice/jenkins.service
└─6774 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war ...
进一步确认
ps -eo pid,user,comm | grep jenkins
如果输出:
6774 root java
Jenkins 运行用户设为
root
可能导致权限过大,容易被恶意插件或脚本利用,建议只在测试环境中使用。