我已经设置了rsync服务器 - > /etc/rsyncd.conf
max connection = 5
log file = /var/log/rsync.log
[web]
path = /srv/www/html
read only = false
list = yes
hosts allow = 127.0.0.1
uid = nobody
gid = nobody
[root@localhost www]# ls -l /srv/www/html/
-rwxrwxrwx. 1 amit amit 8 Apr 28 10:37 index.html
如果我这样做
$rsync 127.0.0.1::
$web
它正确显示模块名称 但如果我这样做
$rsync 127.0.0.1::web
@ERROR: chroot failed
rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6]
我不知道为什么?我首先在localhost上测试rsync的工作,因为远程rsync失败
答案 0 :(得分:16)
解决方案是 在服务器上的/etc/rsyncd.conf中添加
use chroot = false
我不知道为什么默认为真。在浏览rsync文档时,通过运气获得解决方案。希望这为别人节省时间 干杯
答案 1 :(得分:1)
我遇到了同样的问题,并注意到我在服务器端在rsyncd.conf中给出的路径是错误的。 实际路径为 路径= / usr / share / tomcat / webapps /文件夹 但是我在给 路径= / usr / share / tomcat6 / webapps /文件夹 在我更正该路径后,请确保该路径正确无误。
答案 2 :(得分:0)
这可能是SELinux的问题,它需要知道rsync守护程序可以使用该文件夹。让我们考虑一个示例,以同步以下文件夹:set()
需要运行以下命令来设置正确的SELinux上下文:
/home/myuser/ftp
奇怪的是,我注意到必须标记父文件夹,因此为什么要在semanage fcontext -a -t rsync_data_t '/home/myuser(/.*)?'
restorecon -Rv '/home/myuser'
setsebool -P rsync_client on
而不是/home/myuser
上进行标记。只需在rsync守护程序配置中完成对/home/myuser/ftp
子文件夹的限制。
您可以通过运行以下命令检查SELinux标签:
ftp
关于为什么将chroot和SELinux结合的有趣文章是个好主意:http://blog.siphos.be/2012/04/why-both-chroot-and-selinux/