You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab CI中Python subprocess.Popen执行二进制文件遇权限拒绝问题

GitLab-CI任务中subprocess调用二进制文件遇权限拒绝问题

问题场景

运行GitLab-CI任务时,执行以下Python脚本调用二进制文件:

def main():
  proc = subprocess.Popen("./../binary_file --args value", stdout=subprocess.PIPE)

触发报错:

PermissionError: [Errno 13] Permission denied: './../binary_file'

已执行操作及结果

已尝试为二进制文件添加执行权限,操作和输出如下:

$ chmod +x ./binary_file
$ ls -l ./binary_file
-rwxr-xr-x 1 root root 30335023 Apr  1 14:16 ./binary_file
$ whoami
root

当前以root用户操作,文件权限已正确设置。

GitLab-CI配置

任务的script部分配置:

script:
    - chmod +x ./binary_file
    - ls -l ./binary_file
    - whoami
    - pipenv run python ./scripts/run_tests.py

可能的原因排查

  • 相对路径错误:CI任务执行时的工作目录是项目根目录,Python脚本位于./scripts/下,脚本里用./../binary_file会指向项目根目录的上级目录,但实际二进制文件在项目根目录下(从chmod +x ./binary_file的命令可知)。应将路径改为./binary_file(相对于脚本所在目录的上级,即项目根)或使用绝对路径。
  • 目录权限不足:即使文件本身有执行权限,所在目录若没有x权限,也无法访问文件。可执行ls -ld ./检查项目根目录权限,确保root用户拥有x权限。
  • 安全模块限制:GitLab Runner所在环境可能开启了SELinux、AppArmor等安全模块,阻止root执行该二进制文件。可临时关闭安全模块测试(如setenforce 0),或配置规则允许执行该文件。
  • 二进制文件架构不兼容:若二进制文件是跨平台编译的,与CI Runner的系统架构不匹配,系统可能误报权限错误。可执行file ./binary_file查看文件架构,或直接在CI环境中手动运行./binary_file验证是否能正常执行。

内容的提问来源于stack exchange,提问作者Bob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 15:42:46