本地Runner的Shell执行器权限范围及CI作业能否执行任意代码?
Shell执行器本地Runner的CI作业代码执行权限问题
是的,在搭载Shell执行器(bash/PowerShell)的本地Runner上,只要CI作业的操作不超出Runner所属用户的权限范围,完全可以执行任意代码,具体原因如下:
- Shell执行器没有容器方案的环境隔离层,本质是直接在Runner所在主机的Shell环境中运行CI脚本,所有命令均以Runner运行用户的身份执行。
- 以Linux环境为例:Runner用户能运行的bash命令、自定义脚本,CI作业都可直接调用;Windows环境下的PowerShell同理,只要是该用户权限允许的操作(比如读写用户目录、运行系统授权的程序),CI作业都能执行。
- 即便是动态生成代码并执行的操作(例如通过
echo "任意代码内容" > run.sh && chmod +x run.sh && ./run.sh这类命令),只要Runner用户具备对应的执行权限,CI作业就能完成。
总结来说,Shell执行器下的CI作业拥有与Runner运行用户完全一致的权限,权限范围内的任意代码、命令都能执行,这也是它比容器方案风险更高的核心原因——缺乏环境隔离,一旦CI作业被注入恶意代码,会直接影响主机系统。
内容的提问来源于stack exchange,提问作者rbaleksandar
相关产品推荐
相关产品推荐

