【问题标题】:Can I adjust Git's user/permissions to allow me to keep a file owned by www-data?我可以调整 Git 的用户/权限以允许我保留 www-data 拥有的文件吗?
【发布时间】:2020-07-22 06:09:24
【问题描述】:

我遇到了一个烦人的问题,我在 git-synced 目录中有一个 JSON 文件,该文件由 Wordpress PHP 插件直接读取和写入。为了使插件能够写入文件,文件的父目录和其中的所有文件都必须归 www-data 用户所有。

但是,如果我执行:

sudo chown -R www-data parent-directory/

...然后当我尝试任何 Git 命令时,我会收到以下各种错误(取决于操作):

error: unable to unlink old 'parent-directory/file.json': Permission denied
error: cannot open .git/FETCH_HEAD: Permission denied

为了能够同时使用插件和 git,我必须在我的用户名和 www-data 之间保留 chowning 父目录。

有没有更好的方法?我可以让 git 能够使用 www-data 拥有的目录和文件吗?

【问题讨论】:

    标签: wordpress git permissions


    【解决方案1】:

    这并不是一个真正的 Git 问题,而更像是一个通用的 Unix 问题。在您的情况下,您可能想要做的事情是使用 sudo -u www-data(例如,sudo -u www-data git pull)调用您的 Git 命令。那么你所有的操作都将由www-data用户完成,你就不会有问题了。

    【讨论】:

      【解决方案2】:

      git 根本不存储文件所有者。它以运行git 命令的人的身份写入文件并处理权限模型的有限子集(例如可执行位权限)。

      为了解决您的问题,您需要以应该是文件所有者的用户身份运行 git(在您的情况下为 www-data),或者在运行 git 并检查所有文件后运行一个脚本,该脚本将重新- 将它们拥有给适当的用户并作为该用户移动到地方。理想的做法是使用 CI/CD 工具从 git 存储库构建可部署的包,然后将其安装到您的服务器并让打包系统来处理权限。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-20
        • 2022-01-09
        • 1970-01-01
        • 2016-03-25
        • 1970-01-01
        • 2014-09-05
        • 2015-01-19
        • 1970-01-01
        相关资源
        最近更新 更多