我可以调整 Git 的用户/权限以允许我保留 www-data 拥有的文件吗?



我遇到了一个烦人的问题,我在git同步目录中有一个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,我必须将chown保持在我的用户名和www-data之间的父目录中。

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

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

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

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

相关内容

最新更新