Jenkins默认以jenkins
系统用户运行,若需调整运行用户或修改目录权限,可按以下步骤操作:
ps aux | grep jenkins
命令找到Jenkins主进程的用户(通常为jenkins
)。JENKINS_USER
设置为新用户(如jenkins-admin
)。例如:
sudo vim /etc/default/jenkins
,修改JENKINS_USER=jenkins-admin
;sudo vim /etc/sysconfig/jenkins
,修改JENKINS_USER=jenkins-admin
。sudo chown -R jenkins-admin:jenkins-admin /var/lib/jenkins # 数据目录
sudo chown -R jenkins-admin:jenkins-admin /var/cache/jenkins # 缓存目录
sudo chown -R jenkins-admin:jenkins-admin /var/log/jenkins # 日志目录
sudo systemctl restart jenkins
。基础权限调整后,可通过Role-based Authorization Strategy插件实现更细粒度的权限管理(如按角色分配构建、部署等权限):
Admin
、Developer
、Viewer
)并分配权限:
Admin
:勾选“All”权限(全权管理);Developer
:勾选“Overall > Build”、“Job > Configure”等权限(允许构建和配置任务);Viewer
:勾选“Overall > Read”、“Job > Read”等权限(仅允许查看任务)。dev-user1
分配到Developer
角色)。若自动化任务(如打包、部署)出现权限不足(如无法访问/opt/app
目录或执行docker
命令),可通过以下方式解决:
sudo chmod -R o+rw /opt/app # 开放其他用户读写(不推荐,存在安全风险)
# 或更安全的方式:将Jenkins用户加入目标目录所属组
sudo usermod -aG app-group jenkins-admin # 将jenkins-admin加入app-group
sudo chmod -R g+rw /opt/app # 允许组内用户读写
docker build
),可编辑/etc/sudoers
文件(使用visudo
命令):sudo visudo
添加以下内容(允许jenkins-admin
用户无密码执行docker
命令):jenkins-admin ALL=(ALL) NOPASSWD: /usr/bin/docker
在Jenkins任务的Execute shell脚本中,使用sudo
执行命令:sudo docker build -t my-app:latest .
注意:严格控制sudo权限,避免开放过多命令。/var/log/jenkins
中的特定文件),可使用setfacl
命令:sudo setfacl -m u:jenkins-admin:rwx /var/log/jenkins/specific.log # 给jenkins-admin用户添加读写执行权限
sudo getfacl /var/log/jenkins/specific.log # 验证ACL设置
root
用户运行Jenkins(易被攻击),优先使用普通用户+权限控制的方案;sudo ufw allow 8080
;/var/log/jenkins/jenkins.log
)和权限设置,及时发现异常。