允许用户拉入“www-data”拥有的文件夹

允许用户拉入“www-data”拥有的文件夹

我有一个 github 工作流程,每当分支合并到主分支时就会运行:

jobs:
  deploy:
    name: Deploy to Production
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Code
        uses: actions/checkout@v4
      - name: SSH into server and deploy
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.SSH_HOST }}
          username: ${{ secrets.SSH_USERNAME }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            cd /var/www/html
            git reset --hard
            git fetch --all
            git pull

            if [ -n "$(git diff --name-only ${{ github.sha }} HEAD -- .docker docker-compose.yml)" ]; then
              docker-compose down
              docker-compose build
              docker-compose up -d
            fi

            docker exec ${{ secrets.CONTAINER_NAME }} composer install --no-dev
            docker exec ${{ secrets.CONTAINER_NAME }} php artisan migrate --force

SSH_USERMANE 是github_user。在服务器上运行时,我不断收到此错误:

err: bash: line 1: cd: /var/www/html: Permission denied

我对该文件夹的权限是750,所有者是www-data:www-data

我已添加github_user到该www-data组,但我不确定我还应该做些什么才能使其能够完成我列出的所有步骤。

我错过了什么?

答案1

我已将 github_user 添加到 www-data 组

如果运行时仍出现权限被拒绝的情况cd /var/www/html,则说明发生了一些奇怪的事情 - 可能是 SELinux 与 github_user 的受限用户帐户相结合。如果 SELinux 正在运行,请检查审计日志。

更有可能的是,您仍然会收到“权限被拒绝”的消息 - 但是当您开始尝试使用 git 写入文件时 - 此帐户无权写入树。 尝试chmod -R 0770

然而:

  1. 这是非常除非您使用的软件(例如 Wordpress)有硬性要求,否则让 Web 服务器用户可以编辑 Web 内容是一种不好的做法。但即使在这种情况下,也应该有选择地授予写入权限。更好的解决方案是chown -R github_user:www-data /var/www/html ; chmod -r 0750 /var/www/html

  2. 将生产服务器设为 git 节点是不好的做法。

相关内容