在 CentOS 上部署 Jenkins 时,“设权限”通常分为 系统层权限(Linux 用户/目录)和 Jenkins 应用层权限(账号/角色/项目)两部分。下面按常见场景说明。
Jenkins 默认以 jenkins 用户运行:
cat /etc/sysconfig/jenkins | grep JENKINS_USER
如需修改(例如用 root 不推荐,但有时需要):
JENKINS_USER="jenkins"
修改后:
chown -R jenkins:jenkins /var/lib/jenkins
chown -R jenkins:jenkins /var/log/jenkins
systemctl restart jenkins
常见目录:
/var/lib/jenkins # 主目录
/var/log/jenkins # 日志
/var/cache/jenkins # 缓存
示例:
chown -R jenkins:jenkins /var/lib/jenkins
chmod 750 /var/lib/jenkins
编辑 sudoers:
visudo
添加:
jenkins ALL=(ALL) NOPASSWD: ALL
或在 Jenkins 中使用 sudo 调用命令。
Manage Jenkins → Security → Enable Security
安全域:
授权策略:
Role-based Authorization Strategy
Manage Jenkins → Manage and Assign Roles
admin → 全部权限reader → 只读dev-* → 匹配项目 dev-.*Manage Jenkins → Users
stage('Deploy') {
when {
branch 'main'
}
steps {
sh 'sudo systemctl restart nginx'
}
}
或使用 credentials:
withCredentials([usernamePassword(
credentialsId: 'server-ssh',
usernameVariable: 'USER',
passwordVariable: 'PASS'
')]) {
sh 'ssh $USER@host'
}
ls -ld /var/lib/jenkins
ps aux | grep jenkins
jenkins 用户是否有权限sudo临时关闭 SELinux 测试:
setenforce 0
✅ 不用 root 跑 Jenkins
✅ 用 Role-Based 权限
✅ 最小权限原则
✅ 使用 SSH / Credentials 管理密钥
如果你能说明:
我可以给你更精确的配置示例。