Jenkins执行supervisorctl权限不足及运行用户修改失效求助
问题背景
我用apt install jenkins安装了Jenkins(版本2.346.2)并成功启动,但构建项目时出现权限错误:
+ whoami jenkins + supervisorctl restart Zonr.RuifWu.WebApi error: <class 'PermissionError'>, [Errno 13] Permission denied: file: /usr/lib/python3/dist-packages/supervisor/xmlrpc.py line: 560 Build step 'Execute shell' marked build as failure Finished: FAILURE
尝试修改/etc/default/jenkins配置文件:
#JENKINS_USER=$NAME #JENKINS_USER=$NAME JENKINS_USER=root JENKINS_GROUP=root
执行systemctl restart jenkins重启后,运行用户仍为jenkins,甚至配置文件添加错误内容也能正常重启,现咨询以下两个问题:
问题1:如何让jenkins用户有权限执行supervisorctl restart xxxxx命令?
优先推荐以下两种无需切换到root的方案:
通过supervisor配置授权
- 编辑supervisor主配置文件(通常为
/etc/supervisord.conf),找到[unix_http_server]段,修改为:
让jenkins用户所在组拥有supervisor Unix socket的访问权限。chmod=0770 chown=root:jenkins - 重启supervisord服务:
systemctl restart supervisord - 切换到jenkins用户(
su - jenkins),执行supervisorctl status验证权限是否生效。
- 编辑supervisor主配置文件(通常为
通过sudo授权特定命令
- 执行
visudo编辑sudoers文件(禁止直接用vi编辑),添加一行:
允许jenkins用户无需输入密码执行该特定命令。jenkins ALL=(ALL) NOPASSWD: /usr/bin/supervisorctl restart Zonr.RuifWu.WebApi - 在Jenkins构建步骤中将命令改为
sudo supervisorctl restart Zonr.RuifWu.WebApi。
- 执行
问题2:/etc/default/jenkins是否为正确配置文件?如何成功将Jenkins运行用户改为root?
对于apt安装的Jenkins 2.335+版本,/etc/default/jenkins已不再是生效的配置文件——新版本改用systemd服务文件管理运行用户,这也是你修改后无效果、加错误内容仍能重启的原因。
若要将运行用户改为root(不推荐,存在安全风险),步骤如下:
- 编辑Jenkins的systemd服务文件,路径通常为
/lib/systemd/system/jenkins.service:# 修改User和Group字段 User=root Group=root - 若文件中存在
PermissionsStartOnly=true,保留该配置确保权限设置生效。 - 更新systemd配置:
systemctl daemon-reload - 重启Jenkins服务:
systemctl restart jenkins - 验证运行用户:执行
ps aux | grep jenkins,查看进程所属用户是否为root。
内容的提问来源于stack exchange,提问作者Farwell_Liu
相关产品推荐
相关产品推荐

