【发布时间】:2013-11-18 10:41:04
【问题描述】:
我正在尝试在一台名为 node0 的机器上以守护程序模式运行 rsync。我希望机器只接受来自 node0(自身)或 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 密码,然后我复制文件......它不应该。
我错过了什么?我的要求都没有得到满足:
- Rsync 在不应该使用 SSH 时使用 SSH
- Rsync 不限制主机。
- Rsync 不限制文件夹
日志文件,尽管 3 级详细程度只有一行(每个守护进程启动),格式为:
2013/11/18 12:32:35 [22289] rsyncd 版本 3.0.6 开始,正在监听 在 873 端口上
另外我遇到的另一个问题是,如果我从 node0 到 node1 运行 rsync 命令,它仍然成功,即使我没有在 node1 上以守护程序模式启动 rsync。
感谢您的帮助。
谢谢, 最大。
【问题讨论】:
-
rsync 联系远程系统有两种不同的方式:使用 remote-shell 程序作为传输(如 ssh 或 rsh)或直接通过 TCP 联系 rsync 守护进程。因此,当您从 node0 到 node1 联系它时,这可能就是您所做的,在这种情况下,远程 shell 会调用 node1 上的 rsync 服务器(使用任意端口 - 您可以检查它以验证我的假设)
-
使用双冒号直接连接到 rsync 守护进程,而不是让 ssh 启动它。
rsync -a test.out node0::Proj1/(主机 :: 分享)