在 CentOS 上配置 Jenkins 权限,通常分为 系统级权限 和 Jenkins 内部权限 两部分。我按常见使用场景一步步说明,你可以对照你的环境选择。
Jenkins 默认以 jenkins 用户运行:
ps -ef | grep jenkins
或者查看:
cat /etc/sysconfig/jenkins | grep JENKINS_USER
常见值:
JENKINS_USER="jenkins"
如果你遇到 Jenkins 无法读取/写入目录:
sudo chown -R jenkins:jenkins /data/jenkins
sudo chmod -R 755 /data/jenkins
如果你希望 Jenkins 能使用 root 权限(不推荐):
sudo vim /etc/sysconfig/jenkins
改成:
JENKINS_USER="root"
然后重启:
sudo systemctl restart jenkins
⚠️ 生产环境不建议直接用 root
如果 Jenkins 要执行 docker 命令:
sudo usermod -aG docker jenkins
sudo systemctl restart jenkins
验证:
sudo -u jenkins docker ps
如果 Jenkins 需要执行 sudo:
sudo visudo
添加:
jenkins ALL=(ALL) NOPASSWD: ALL
或只给指定命令:
jenkins ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
安装插件:
插件管理:
Jenkins → Manage Jenkins → Plugins → Available
路径:
Manage Jenkins
→ Security
→ Authorization
选择: ✅ Role-Based Strategy
进入:
Manage Jenkins → Manage and Assign Roles
| 角色 | 说明 |
|---|---|
| admin | 管理员 |
| dev | 开发 |
| readonly | 只读 |
admin:全部勾选dev:Job Read / Buildreadonly:Job Read使用 正则匹配项目名:
示例:
dev-.*
权限:
Manage and Assign Roles → Assign Roles
journalctl -u jenkins -xe
检查:
sudo -u jenkins ssh -T git@github.com
无权限通常是因为:
/var/lib/jenkins/.ssh解决:
chmod 600 /var/lib/jenkins/.ssh/id_rsa
chown -R jenkins:jenkins /var/lib/jenkins/.ssh
✅ Jenkins 不要使用 root
✅ 使用 Role-Based 权限
✅ 启用 HTTPS
✅ 禁用匿名用户“全部权限”
✅ 限制 Job 创建权限
如果你愿意,可以告诉我:
我可以直接给你一套 最合适你的权限方案。