在守护进程模式下限制rsync

我试图在一台名为node0的机器上以守护进程模式运行rsync。 我希望机器只接受来自node0(self)或node1(定义的其他一些机器)的连接,

我想要使​​用它的唯一path/ tmp /。 因此,对于任何原始机器,任何其他path的读/写操作都是不允许的。

我不希望用户限制,也不需要通过ssh运行rsync。

我已经build立/etc/rsyncd.conf如下:

syslog facility = syslog max verbosity = 3 log file = /var/log/mylog.log port = 873 [Proj1] path = /tmp/ include = /tmp/ exclude = * comment = some comment hosts allow = node0, node1 hosts deny = * max verbosity = 3 log file = /var/log/filedistributer.log 

我比使用以下命令在守护进程模式下执行rsync:

 /usr/bin/rsync --daemon --config=/etc/rsyncd.conf --verbose 

我从node1运行: rsync -a test.out node0:/tmp/并且工作正常。

但是,如果我运行: rsync -a max.out node0:/someOtherDir ,它也适用 – 它不应该在那里。

如果我去另一台机器运行:

 rsync -a someFile.out root@node0.MYHOSTNAME:/someOtherDir 

它要求我授权SSH密钥,并input密码为根,然后我复制文件…它不应该。

我错过了什么? 我的要求都不符合:

  1. Rsync使用SSH,当它不应该
  2. Rsync不限制主机。
  3. Rsync不限制文件夹

日志文件,尽pipe级别3的详细程度只有一行(每个守护进程启动)的forms:

2013/11/18 12:32:35 [22289] rsyncd版本3.0.6开始,听873端口

另外我遇到的另一个问题是,如果我运行从node0到node1的rsync命令,它仍然成功,即使没有我在node1上以守护进程模式启动rsync。

你的帮助是appriciated。

谢谢,马克斯。

所以经过一番挖掘,我提出的是:

  1. 默认情况下运行rsync时,它会尝试使用ssh作为它的传输,因此它到目标机器ssh并在那里调用rsync。 要使用它将需要在目标机器上有效的凭据。 没有办法避免这种情况 – 除了从目标机器上删除SSH守护进程。 为了限制rsync在这种模式下工作,实际上需要限制ssh或者rsh(或者任何用作传输的shell)接受来自不相关主机的连接。 但是,在这种模式下强制“白名单”主机只能操作所需的文件夹仍然是不可能的。

  2. 我对使用rsyncd.conf守护进程模式的rsync的限制是正确的,他们的工作,但为了使用tcp作为传输层,而不是ssh,它需要使用不同的rsync

    rsync rsync:// node0 / Proj1

这实际上会使rsync通过tcp连接并连接到目标上的rsync守护进程。

有关rsyn如何工作的信息非常有价值的来源可以在下面的链接中找到: http ://rsync.samba.org/how-rsync-works.html

你确定配置文件实际上是由守护进程红色启动时? 尝试例如拒绝所有主机,并检查规则是否适用。