如何防止 rsync 用户使用 -t?

如何防止 rsync 用户使用 -t?

我运行一个服务器,在该服务器上我们向客户端提供 sftp 凭据,以便交付各种大小的文件。对我来说,保留上传时间很重要,老实说,我根本不在乎它在原始系统上创建或修改的时间。不幸的是,我们的许多客户坚持使用rsync -av上传他们的文件。

我已经做了很多 - 使用 chroot 来沙盒用户,阻止 ssh 访问等,但这仍然是我们的麻烦。有没有办法防止 rsync 或 sftp 更改服务器端的创建/修改时间?

我尝试过谷歌搜索,但似乎无法提供正确的术语组合来筛选出所有试图使用从客户端进行 rsync。

答案1

我会编写脚本来解决这个问题inotifywait -r -m --csv -e ATTRIB /my/dir。只要有人修改了 mtime、ctime、权限(和其他小东西),它就会打印任何文件,这样您就可以touch根据需要只打印该文件。这是一个繁琐而丑陋的解决方法,但对于一般情况,我想不出任何更简单的方法。

您的更新要求mtime是非标准的;使用 就可以了ctime。通常,您可以让人们自由地向后移动mtime,以便它可以存储文件内容的日期有意义地更新。使用以下方法检查文件发生更改的时间(例如,修改时间更改、权限更改、文件创建时间等)ctime;查看stat /my/filels -lc或使用以下方法查找最新信息find . -cmin -60

答案2

服务器端 authorized_keys 文件可以提供“COMMAND=”参数,这意味着“如果有人使用了此密钥,则忽略服务器上执行的命令并改为运行此命令。”此命令被赋予默认命令将收到的所有标志和选项。您可以提供一个命令来删除您不想要的标志,然后运行预期的命令。有关类似内容的文章如下:https://cybermashup.com/2013/05/14/restrict-ssh-logins-to-a-single-command/

这个答案的问题在于我不确定“-t”标志是否以这种方式传达,或者它是否在 RSYNC 协议中。

相关内容