CentOS Jenkins配置中脚本执行权限的设置方法
Jenkins执行脚本前,需确保脚本文件具备可执行权限。使用chmod命令添加执行权限,例如:
chmod +x /path/to/your/script.sh
这一步是脚本能被运行的基础,无论脚本由谁执行,都需要具备该权限。
Jenkins默认以jenkins用户身份运行(可通过ps -ef | grep jenkins确认)。若脚本需要访问特定资源(如/root目录、特定设备文件),需调整以下权限:
/opt/app目录(属主为root,属组为dev),执行usermod -aG dev jenkins,将jenkins加入dev组;chown jenkins:jenkins /path/to/resource)或放宽权限(chmod 755 /path/to/resource)。若脚本需执行rm -rf /root、systemctl restart nginx等需要root权限的操作,可通过sudo实现,步骤如下:
/etc/sudoers.d/目录下创建jenkins文件(避免直接修改/etc/sudoers),内容为:Defaults:jenkins !requiretty # 免除tty要求(避免sudo命令报错)
jenkins ALL=(ALL) NOPASSWD: ALL # 允许jenkins用户无密码执行所有命令(生产环境建议限制为必要命令)
sudo,例如:sudo rm -rf /root/.gnupg 或 sudo /opt/webmaster/sitedeploy.sh --source $BUILD_DIR --site xxx.com --clear。Jenkins执行脚本时,工作空间(默认为/var/lib/jenkins/workspace/[job-name])的权限需允许jenkins用户读写。若工作空间权限不足,会导致脚本无法创建临时文件、写入日志或修改输出文件。可通过以下命令调整:
chown -R jenkins:jenkins /var/lib/jenkins/workspace/[job-name]
chmod -R 755 /var/lib/jenkins/workspace/[job-name]。
若使用Jenkins Pipeline(如Jenkinsfile),执行脚本时需注意:
sh步骤:Pipeline中通过sh '/path/to/script.sh'执行脚本,Jenkins会自动以jenkins用户身份运行;