Jenkins pipeline执行shell脚本提示Permission denied报错如何解决
核心原因
Jenkins服务默认以jenkins系统用户运行,访问/home/admin/test/1.sh路径时需要对路径上每一级父目录都具备遍历(执行)权限,同时对脚本本身具备读+执行权限,你的配置存在权限缺失:
- 仅给了
/home/admin/test目录777权限,未给/home/admin目录开放jenkins用户的遍历权限,默认/home/admin目录权限为700,其他用户无访问权限 - 仅给脚本加了执行权限,未确认
jenkins用户是否对脚本具备读权限
解决方案
- 修复目录层级权限:给
/home/admin目录开放其他用户的遍历权限,执行命令:chmod o+x /home/admin
如果不想给所有用户开放该权限,可以使用ACL单独给jenkins用户赋权:setfacl -m u:jenkins:x /home/admin - 修复脚本本身权限:确保
jenkins用户对脚本有读+执行权限:chmod o+rx /home/admin/test/1.sh - 排查SELinux拦截:如果上述操作后仍报错,执行
sestatus查看SELinux是否为Enforcing模式,可临时执行setenforce 0关闭SELinux测试,验证是SELinux问题后可给脚本添加对应上下文规则,生产环境不建议直接永久关闭SELinux。 - 备选方案:不想修改
/home/admin目录权限的话,可以把脚本移动到Jenkins用户默认有权限的目录,例如/var/lib/jenkins/scripts/,修改pipeline中脚本路径即可。
内容的提问来源于stack exchange,提问作者user17175135
相关产品推荐
相关产品推荐

