进行由www数据所有的git部署
我的进行由www数据所有的git部署,git,apache,deployment,permissions,debian,Git,Apache,Deployment,Permissions,Debian,我的post-receivehook部署到我的Apache虚拟主机所指向的/home/repo。 我希望/home/repo归www-data所有 我是否应该将git添加到/etc/sudoers中,并允许它在每次推送后执行一个自定义脚本,使chown-R www-data:www-data/home/repo成为rootgit似乎不能像他自己那样做。但是看起来很不安全 编辑: post receive正在git用户下执行git签出-f和chmod-R 750/home/repo。我只是离开了g
post-receive
hook部署到我的Apache虚拟主机所指向的/home/repo
。
我希望/home/repo
归www-data
所有
我是否应该将git
添加到/etc/sudoers
中,并允许它在每次推送后执行一个自定义脚本,使chown-R www-data:www-data/home/repo
成为root
git
似乎不能像他自己那样做。但是看起来很不安全
编辑:
post receive
正在git
用户下执行git签出-f
和chmod-R 750/home/repo
。我只是离开了gitown/home/repo
,并将www-data
(或任何Apache用户)添加到git
组中,这样它就可以阅读了。很有趣。你为什么关心用户所有权?一般来说,设置一些灵活的组权限并将Apache用户添加到您的git
组应该足够了。除此之外,我真的建议您查看部署。用户git
属于组www-data
,www-data
属于组git
。不过,许可问题仍然存在。当我推送一个空的index.html
文件时,它被正确部署,但是Apache在通过我的浏览器访问时返回一个403禁止的
错误。似乎正在使用chmod 700
推送文件,因此组无法读取该文件。这就是为什么我首先要将所有者更改为www-data
。是的,但是您正在以所有者身份推送,并且可以从内部调整组权限post-receive
hook,不是吗?我正在以用户身份推送git
。示例:我在本地执行了一个touch perm.html
,即(本地)-rw-r--r--
,然后git add perm.html&&git commit-m“Added perm.html”&&git push origin master
。在服务器上,它显示为-rw------
。我不明白为什么。你有什么建议吗?理想的情况下,我会建议或类似的建议。但是对于一个快速的“脏”解决方案,您只需将chmod-R 750/home/repo
添加到您的post receive
钩子中,该钩子由git
用户运行,该用户碰巧也是/home/repo
文件夹的所有者,因此他在调整权限时应该不会有任何问题。让我知道我对您的设置是否有正确的想法。在将www-data
添加到git
组后,我忘记重新启动Apache,这就是为什么我得到了403禁止的。否则效果会很好。非常感谢。