小编Mat*_*son的帖子

使用非 root 将 git repo 部署到 web root

为使用 git 部署到服务器的生产 Web 服务器设置用户和权限的最佳方法是什么?

背景

运行Ubuntu 12.04,我有apache下提供文件服务/var/wwwwww-data。我还在根用户目录下有一个裸 git 存储库,可以/var/www/example.com在 post-receive 挂钩中结帐。

这工作得很好,但考虑到它是一个生产服务器,我想提高一些安全性并从 root 用户中删除 repo。所以我创建了一个 git 用户并在/home/git. 但是现在我遇到了一个用户拥有存储库而另一个用户拥有 Web 根的事实的权限问题。

我在网上阅读了很多论坛和教程。大多数似乎只使用 root 用户,其他人似乎有更严重的安全问题(例如www-data授予对 repo 的读取权限)。我正在从现实世界的经验中寻找见解,因为有很多方法可以做到这一点。

请注意,post-receive hook 不仅仅是结帐。它还执行一些构建过程,例如运行 Composer 和其他一些可能需要几分钟的 php 脚本。

我尝试了几种解决方案:

我尝试将 git 用户添加到www-data group,然后将 web 根目录重新添加到www-data钩子的末尾。这有两个问题。首先,我必须修改 sudoers 文件,我从中得到的结果是命中注定的。其次,在钩子运行的那几分钟内,检出的文件归 git 而不是www-data,因此站点上的用户可能会收到读取错误。

我尝试将 post-receive 的内容放在另一个文件中,并使用 sudo 执行它。同样,这需要编辑 sudoers 文件,以便 git 用户无需密码即可 sudo。

或者可能是将 repo 留在 root 用户下是较小的邪恶,而我做这一切都是徒劳的。

有没有我没有尝试过的更好的解决方案?

ubuntu permissions sudo git apache-2.2

2
推荐指数
1
解决办法
3847
查看次数

标签 统计

apache-2.2 ×1

git ×1

permissions ×1

sudo ×1

ubuntu ×1