在 CentOS 上部署或使用 Jenkins 时,“权限”通常涉及以下几个方面,下面我按常见场景给你说明:
CentOS 通过 RPM 安装 Jenkins 后,默认使用 jenkins 用户运行:
cat /etc/passwd | grep jenkins
Jenkins 主目录一般位于:
/var/lib/jenkins
编辑:
vim /etc/sysconfig/jenkins
修改:
JENKINS_USER="jenkins"
例如改为 root(不推荐,仅测试环境):
JENKINS_USER="root"
修改后:
chown -R root:root /var/lib/jenkins
systemctl restart jenkins
例如构建时需要访问 /opt/app:
chown -R jenkins:jenkins /opt/app
chmod -R 755 /opt/app
在 Jenkins 中执行需要 root 权限的命令:
visudo
添加:
jenkins ALL=(ALL) NOPASSWD: ALL
Jenkins 脚本中:
sudo systemctl restart nginx
Manage Jenkins → Configure Global Security
Jenkins’ own user databaseMatrix Authorization StrategyPermission denied while trying to connect to Docker daemon
将 jenkins 用户加入 docker 组:
usermod -aG docker jenkins
systemctl restart jenkins
⚠️ 如果 Jenkins 是容器运行,需挂载 /var/run/docker.sock
vim /etc/sysconfig/jenkins
JENKINS_PORT="8080"
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
查看:
getenforce
临时关闭(不推荐生产):
setenforce 0
正确做法(示例):
setsebool -P httpd_can_network_connect 1
docker run -d \
-u root \
-p 8080:8080 \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkins/jenkins
如果你能具体说明是 哪一类权限问题(例如:构建报错、无法访问文件、Docker、sudo、Web 登录),我可以给你更精准的方案。