You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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配置授权

    1. 编辑supervisor主配置文件(通常为/etc/supervisord.conf),找到[unix_http_server]段,修改为:
      chmod=0770
      chown=root:jenkins
      
      让jenkins用户所在组拥有supervisor Unix socket的访问权限。
    2. 重启supervisord服务:systemctl restart supervisord
    3. 切换到jenkins用户(su - jenkins),执行supervisorctl status验证权限是否生效。
  • 通过sudo授权特定命令

    1. 执行visudo编辑sudoers文件(禁止直接用vi编辑),添加一行:
      jenkins ALL=(ALL) NOPASSWD: /usr/bin/supervisorctl restart Zonr.RuifWu.WebApi
      
      允许jenkins用户无需输入密码执行该特定命令。
    2. 在Jenkins构建步骤中将命令改为sudo supervisorctl restart Zonr.RuifWu.WebApi。

问题2:/etc/default/jenkins是否为正确配置文件?如何成功将Jenkins运行用户改为root?

对于apt安装的Jenkins 2.335+版本,/etc/default/jenkins已不再是生效的配置文件——新版本改用systemd服务文件管理运行用户,这也是你修改后无效果、加错误内容仍能重启的原因。

若要将运行用户改为root(不推荐,存在安全风险),步骤如下:

  1. 编辑Jenkins的systemd服务文件,路径通常为/lib/systemd/system/jenkins.service:
    # 修改User和Group字段
    User=root
    Group=root
    
  2. 若文件中存在PermissionsStartOnly=true,保留该配置确保权限设置生效。
  3. 更新systemd配置:systemctl daemon-reload
  4. 重启Jenkins服务:systemctl restart jenkins
  5. 验证运行用户:执行ps aux | grep jenkins,查看进程所属用户是否为root。

内容的提问来源于stack exchange,提问作者Farwell_Liu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 13:54:22