在守护进程模式下限制rsync

时间:2013-11-18 10:41:04

标签: linux ssh rsync

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

我想要使用的唯一路径/ tmp /。因此,任何原始机器都不允许对任何其他路径进行任何读/写操作。

我不希望用户限制,也不希望rsync在ssh上运行。

我将/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密钥,并输入root密码,之后我复制文件......不应该。

我错过了什么?我的要求都没有得到满足:

  1. Rsync使用SSH时,不应该
  2. Rsync不限制主机。
  3. Rsync不限制文件夹
  4. 日志文件,尽管级别3详细程度只有一行(每个守护程序启动),但形式为:

      

    2013/11/18 12:32:35 [22289] rsyncd 3.0.6版开始,正在听   在873号港口

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

    你的帮助非常适合。

    谢谢, 最大

2 个答案:

答案 0 :(得分:1)

所以在经过一番挖掘之后我得出的是:

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

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

    rsync rsync:// node0 / Proj1

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

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

答案 1 :(得分:0)

启动后,您是否确保配置文件实际上是红色的守护程序? 例如,尝试拒绝所有主机并检查规则是否适用。