在 CentOS 上部署 Jenkins,权限问题通常分为 系统层面权限 和 Jenkins 自身权限 两类。下面按常见场景说明。
CentOS 上 Jenkins 默认使用 jenkins 用户:
ps -ef | grep jenkins
或查看服务文件:
cat /etc/sysconfig/jenkins | grep JENKINS_USER
默认:
JENKINS_USER="jenkins"
编辑:
vi /etc/sysconfig/jenkins
修改:
JENKINS_USER="root"
或你自己的用户(如 deploy)
然后:
chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins
systemctl restart jenkins
⚠️ 不建议长期使用 root,存在安全风险
默认目录:
/var/lib/jenkins
正确权限:
chown -R jenkins:jenkins /var/lib/jenkins
chmod 755 /var/lib/jenkins
/var/lib/jenkins/workspace
chown -R jenkins:jenkins /var/lib/jenkins/workspace
给 jenkins 用户 sudo 权限(受限):
visudo
添加:
jenkins ALL=(ALL) NOPASSWD: /usr/bin/systemctl, /bin/cp, /bin/chmod
Pipeline 示例:
sh 'sudo systemctl restart nginx'
将 jenkins 用户加入 docker 组:
usermod -aG docker jenkins
systemctl restart jenkins
验证:
su - jenkins
docker ps
使用 SSH 密钥 而不是密码:
su - jenkins
ssh-keygen
ssh-copy-id user@remote_server
setenforce 0
vi /etc/selinux/config
SELINUX=disabled
setsebool -P httpd_can_network_connect 1
或查看拒绝日志:
audit2why < /var/log/audit/audit.log
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
Manage Jenkins → Security
Role-based Authorization Strategy
| 问题 | 原因 | 解决 |
|---|---|---|
| Permission denied | 用户无权 | 改目录属主 |
| sudo: no tty | Jenkins 无终端 | NOPASSWD |
| docker: permission | 不在 docker 组 | usermod |
| 页面打不开 | 防火墙/SELinux | firewalld |
如果你能告诉我:
我可以给你更精确的权限配置方案。