在 Ubuntu 上使用 Jenkins 时,“权限”通常涉及以下几个方面,下面我按常见场景给你讲清楚,你可以对号入座:
在 Ubuntu 上,Jenkins 安装后默认使用 jenkins 用户运行:
cat /etc/default/jenkins
# 或
ps aux | grep jenkins
你会看到类似:
jenkins 1234 ...
例如使用 Docker:
sudo usermod -aG docker jenkins
sudo systemctl restart jenkins
其他常见组:
sudo usermod -aG sudo jenkins
⚠️ 加完组后必须重启 Jenkins
sudo visudo
添加:
jenkins ALL=(ALL) NOPASSWD: ALL
或只给特定命令:
jenkins ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
例如 Jenkins 要访问 /data/build:
sudo chown -R jenkins:jenkins /data/build
或加权限:
sudo chmod -R 755 /data/build
jenkins 用户家目录:
/var/lib/jenkins
不要随意改成 root,否则 Jenkins 启动失败。
Manage Jenkins → Security
Manage Jenkins → Manage Plugins → Role-based Authorization Strategy
然后:
Manage Jenkins → Manage and Assign Roles
permission denied
No such file or directory
whoami
id
ls -l /path
在 Jenkinsfile 里调试:
sh 'whoami'
sh 'id'
编辑:
sudo nano /etc/default/jenkins
改:
JENKINS_USER="root"
然后:
sudo chown -R root:root /var/lib/jenkins
sudo systemctl restart jenkins
⚠️ 安全风险,仅测试环境
| 问题 | 解决 |
|---|---|
| docker: permission denied | usermod -aG docker jenkins |
| sudo: no tty | NOPASSWD |
| 文件无法写入 | chown jenkins |
| 启动失败 | 家目录权限错 |
| 脚本没权限 | chmod +x |
如果你愿意,可以告诉我:
我可以直接给你针对性命令。