rsync服务器失败

10

我已经设置了一个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  
then it incorrectly displays the module name.

正确的显示了模块名称,但如果我加上

标签,它就会错误地显示模块名称。
$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]

我不知道为什么?我首先在本地主机上测试rsync的工作情况,因为它在远程同步失败了。


在我的情况下,当目标目录尚不存在时,我收到了此错误。 - Colin 't Hart
3个回答

21
解决方案是
在服务器上的/etc/rsyncd.conf中添加

use chroot = false

我不知道为什么它默认是真的。在浏览rsync文档时,偶然发现了解决方法。希望这能为其他人节省时间。
干杯


根据文档,这个解决方案有一些安全性后果。在我的情况下,我可以接受这些后果。但请查阅 man 页面,了解它对您的影响。 - macetw

2

我遇到了同样的问题并注意到我在服务器端在rsyncd.conf中提供的路径是错误的。实际路径是path=/usr/share/tomcat/webapps/folder,但我提供的是path=/usr/share/tomcat6/webapps/folder,当我纠正路径后它就可以工作了。因此,请确保您的路径正确,并具有正确的所有权和权限。


0

这很可能是一个SELinux问题,需要让它知道该文件夹可以被rsync守护进程使用。我们来看一个例子,要同步以下文件夹:/home/myuser/ftp

需要运行以下命令来设置正确的SELinux上下文:

semanage fcontext -a -t rsync_data_t '/home/myuser(/.*)?'
restorecon -Rv '/home/myuser'
setsebool -P rsync_client on

奇怪的是,我注意到父文件夹必须被标记,这就是为什么标记是在/home/myuser而不是/home/myuser/ftp上完成的原因。限制到ftp子文件夹只需在rsync守护程序配置中完成。

您可以通过运行以下命令来检查SELinux标记:

ls -Z /home/myuser

一篇有趣的文章,介绍了为什么将chroot和SELinux结合起来是一个好主意:http://blog.siphos.be/2012/04/why-both-chroot-and-selinux/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接