gpt4 book ai didi

git - Git Post-Receive 的权限

转载 作者:太空狗 更新时间:2023-10-29 14:24:02 36 4
gpt4 key购买 nike

我在本地和我的服务器上设置了 git,并创建了一个“post-receive”,这样当我推送到实时服务器时,它应该会 check out 到网站的虚拟主机目录。

#!/bin/sh
GIT_WORK_TREE=/var/www/domainname/public_html/ git checkout -f

但是,当我尝试进行推送时,它成功地离开了主服务器,但是当我尝试在我的服务器 Web 根目录上创建这些文件时出现权限被拒绝的错误。

例如远程:错误:无法创建文件 index.php(权限被拒绝)

由于我设置服务器的方式,这些错误对我来说实际上是有意义的。我禁用了 root 访问并创建了一个新用户,该用户通过 visudo 添加到 sudoers - 然后我为此用户设置了 SSH key 。我使用此用户将我的 git 更改推送到服务器。

问题是,我认为,我连接到 push 的这个用户没有写入虚拟主机目录的权限。我在这些文件夹中的所有文件都属于同一组的 www-data(我的 nginx 用户)。

解决方案是什么?使用 SSH key 创建另一个用户以连接具有更高权限的 git,或者是否有办法授予接收后 sudo 之类的能力?

对于这个冗长的问题深表歉意,但我想绝对清楚我所做的事情。

最佳答案

如果您的存储库是使用 --shared 选项创建的(请参阅“Change GIT repository to shared”),这将允许来自同一组 的用户访问和写入。

有什么方法可以将这些不同的用户分组到同一组中吗?
有点像“Git unable to create file permission denied”中提到的同组。
或 sudo 访问,如 this question 的评论中所述, 改变 sudoers:

 git ALL = (root) NOPASSWD: /usr/local/sbin/prgetsimpleappscom 

关于git - Git Post-Receive 的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15861427/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com