0

我在两个 Web 服务器之间分配负载,这意味着所有 Apache 设置和虚拟主机几乎相同,我想通过使用 LSync 确保它们保持这种状态(或者如果有其他解决方案可以帮助解决我的问题)我有,让我知道)

所以很明显 Apache 以apache用户身份运行,我们不能启用 root SSH 登录,所以我创建了一个lsync用户,可以使用 RSA 密钥在两台服务器之间进行 SSH。

现在我遇到了一些权限错误,这正是我所期望的。我现在正在尝试的是我将lsync用户添加到apache组,并将apache用户添加到lsync组......这似乎工作正常,只要用户组的文件都被 chowned 7 ...

我考虑过每隔一段时间设置一个 cron 作业来 chown apache.apache,甚至可能为组和用户设置 chmod +rwx,但我确信这会导致其他一些问题。

我想过让 lsync 以apache用户身份运行,但看起来 apache 主目录实际上需要由root.root.. 拥有,这样会导致 apache 用户尝试 ssh 并从.ssh目录中读取的问题。

当我在 Google 上查找时,我找不到太多关于此的信息……大多数人只是使用 root 用户进行 lsync,这是不可能的。

因此,如果有人有修复程序,那就太好了!谢谢

PS我知道我可以允许lsync用户通过 sudo 执行特定命令,如果我正确配置了 sudoers 配置......有没有办法让它sudo chown apache.apache /var/www && sudo chmod -R u+rwx /var/www或什么?

4

2 回答 2

1

rsync有一个选项可以强制它在目标上创建的文件的权限:--chmod=<blah>. lsyncd对此没有直接支持,但可以通过 rsync 标志。

尝试将此添加到您的 lsyncd 配置中:

_extra = {"--chmod=Dug+rwx,Fug+rw"}

这应该确保目录D具有所有者和组的读/写/执行权限,而文件F具有所有者和组的读/写权限。任何其他权限都应该在源服务器上设置。

如果您需要文件归 apache 用户所有,那么您可以按照您的建议设置一个 chown cron 作业,但您可能会发现一个不断运行的脚本读取输出的inotifywatch响应速度更快(并且大部分时间都是空闲的)。

于 2016-04-21T09:54:50.273 回答
0

您可能会考虑让 apache 用户运行 rsync 守护程序。它很少使用,因为通过 ssh 隧道 rsync 更方便更安全,但它可能会帮助您避开这个问题。

您需要设置一个配置文件,然后rsync --daemon使用您的发行版拥有的任何 init 系统简单地启动它。

然后,您可以配置您的lsyndwith target = "rsync://server/path"

如果服务器之间的连接是本地的并且网络是受信任的,那么您就完成了,否则您应该将 rsync 守护进程配置为仅侦听 127.0.0.1,然后使用ssh -L端口映射通过加密隧道路由流量(隧道的所有者并不重要)。

于 2016-04-21T09:30:03.363 回答