首页 > 解决方案 > Github Actions 无法写入文件,权限被拒绝(在 docker 容器内)

问题描述

我正在使用 ZAP Dockerfile 映像[2] 来扫描应用程序中的漏洞。以下是我在 Github 上的操作。

name: CI

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v1
    - name: run zap
      uses: docker://owasp/zap2docker-stable
      with:
        args: zap-baseline.py -t https://www.example.com

所以基本上这张图片有一个名为 /home/zap/ 的文件夹,它正在尝试将一个文件写入这个位置。我不明白为什么 Github 的行为会IOError: [Errno 13] Permission denied:在 docker 容器中持续存在。容器正在使用zap用户。有没有其他人在 Github Actions 中遇到过类似的文件写入权限问题?

[1] - https://github.com/sshniro/actions-test-repo/commit/3fb6cfa2c883099f300dba5383fa61c708f2a48f/checks?check_suite_id=312860807

[2] - https://github.com/zaproxy/zaproxy/blob/develop/docker/Dockerfile-stable

标签: githubgithub-actions

解决方案


如果 docker 使用另一个用户,那么我们在持久化到本地目录时会遇到权限问题。以下是我用来解决此问题的配置:

name: ZAP
on: push
jobs:
  scan:
    runs-on: ubuntu-latest
    container:
      image: owasp/zap2docker-stable
      options: --user root -v ${{ github.workspace }}:/zap/wrk/:rw
    steps:
      - run: pwd && ls -l
      - name: run zap baseline scan
        run: zap-baseline.py -t https://example.com -x report_xml.xml || echo 0

在这里,我们通过 options 参数覆盖用户。


推荐阅读