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  

然后它正确显示模块名称,但如果我这样做

$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。

4

3 回答 3

20

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

use chroot = false

我不知道为什么默认情况下它是真的。在浏览 rsync 文档时幸运地找到了解决方案。希望这可以为其他人节省时间。
干杯

于 2013-04-28T20:59:18.580 回答
1

我遇到了同样的问题,并注意到我在服务器端的 rsyncd.conf 中给出的路径是错误的。实际路径是 path=/usr/share/tomcat/webapps/folder 但我在更正路径时给出了 path=/usr/share/tomcat6/webapps/folder 有效。因此请确保您的路径正确拥有正确的所有权和权限。

于 2020-05-18T11:05:49.537 回答
0

这可能是一个 SELinux 问题,它需要知道该文件夹可以被 rsync 守护进程使用。让我们考虑一个示例,以 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/

于 2020-05-05T15:17:16.530 回答