GitLab Runner执行已设+x权限的Bash脚本时提示权限拒绝的问题求助
GitLab Runner执行已设+x权限的Bash脚本时提示权限拒绝的问题求助
各位大佬好,我在Kubernetes环境里部署了GitLab Runner,最近遇到一个百思不得其解的权限问题,折腾了半天没找到原因,来这里求助大家。
问题现象
Runner执行任务时抛出权限拒绝错误:
/bin/bash: line 1: /scripts-1002-1043121/prepare_script: Permission denied
我已做的排查步骤
- 进入Runner对应的Pod,确认当前运行用户是root:
runner-qeaugn8yj-project-1002-concurrent-0-m5ikq7m3:/# ps -auxwww USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 2416 1784 ? Ss 10:21 0:00 /bin/bash root 15 0.0 0.0 2740 2464 pts/0 Ss 10:50 0:00 bash root 21 0.0 0.0 1740 788 pts/0 R+ 10:50 0:00 ps -auxwww
- 检查目标脚本的权限和所有者,已经设置了
777权限,所有者也是root:
runner-qeaugn8yj-project-1002-concurrent-0-m5ikq7m3:/# ls -lahtr /scripts-1002-1043121/prepare_script -rwxrwxrwx 1 root root 434 Oct 4 10:21 /scripts-1002-1043121/prepare_script
- 尝试直接执行脚本,依然提示权限拒绝:
runner-qeaugn8yj-project-1002-concurrent-0-m5ikq7m3:/# /scripts-1002-1043121/prepare_script bash: /scripts-1002-1043121/prepare_script: Permission denied
- 但如果用
bash显式调用这个脚本,却能正常执行完成:
runner-qeaugn8yj-project-1002-concurrent-0-m5ikq7m3:/# bash /scripts-1002-1043121/prepare_script {"script": "/scripts-1002-1043121/prepare_script"} Running on runner-qeaugn8yj-project-1002-concurrent-0-m5ikq7m3 via gitlab-runner-7b66fddb55-tr6b5... {"command_exit_code": 0, "script": "/scripts-1002-1043121/prepare_script"}
脚本内容
这个prepare_script的内容很简单,就是输出一个JSON:
#!/usr/bin/env bash start_json="{\"script\": \"$0\"}" echo "$start_json"
现在我完全搞不懂了——脚本权限全开,运行用户是root,为什么直接执行会报权限拒绝?有没有朋友遇到过类似的情况?或者能帮我分析下可能的原因?
备注:内容来源于stack exchange,提问作者brainwash
相关产品推荐
相关产品推荐

