我在两个Web服务器之间分配负载,这意味着所有Apache设置和vhost几乎完全相同,我想确保它们通过使用LSync保持这种方式(或者如果有另一个解决方案可以帮助我遇到的问题,让我知道)
很明显,Apache作为 apache 用户运行,我们无法启用root SSH登录,因此我创建了一个 lsync 用户,可以使用RSA密钥在两台服务器之间进行SSH 。
现在我遇到了一些权限错误,这有点像我预期的那样。我现在正在尝试的是将 lsync 用户添加到 apache 组,将 apache 用户添加到 lsync group ...这似乎工作正常,只要这些文件对于用户和组都是chowned 7 ...
我考虑过设置一个cron作业,每隔一段时间就刷一次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
还是什么?
答案 0 :(得分:0)
您可以考虑让apache用户运行rsync守护程序。它很少使用,因为通过ssh隧道传输rsync更方便和更安全,但它可能会帮助你解决这个问题。
您需要设置一个配置文件,然后使用rsync --daemon
使用您的发行版所具有的任何init系统启动它。
然后,您可以使用lsynd
配置target = "rsync://server/path"
。
如果服务器之间的连接是本地连接并且网络是可信任的,那么您就完成了,否则您应该将rsync守护程序配置为仅侦听127.0.0.1,然后使用ssh -L
端口映射进行路由通过加密隧道的流量(隧道的所有者并不重要)。
答案 1 :(得分:0)
rsync
可以选择强制在目标位置创建的文件的权限:--chmod=<blah>
。 lsyncd
没有直接支持,但可以传递rsync标志。
尝试将此添加到您的lsyncd配置:
_extra = {"--chmod=Dug+rwx,Fug+rw"}
这应该确保目录D
具有对所有者和组的读/写/执行权限,并且文件F
具有对所有者和组的读/写权限。应该在源服务器上设置任何其他权限。
如果您需要apache用户拥有的文件,那么您可以按照建议设置chown cron作业,但是您可能会发现从inotifywatch
读取输出的不断运行的脚本将是更敏感(并且大部分是空闲的)。