我运行一个服务器,我们向客户端提供sftp凭据,以传送各种大小的文件。 保留上传时间对我来说非常重要,而且我真的不能在原始系统上创build或修改时间。 不幸的是,我们的许多客户坚持使用rsync -av来上传文件。
我已经做了很多 – 使用chroot来沙盒用户,防止ssh访问等,但这仍然是一个痛苦的我们的屁股。 有没有办法阻止rsync或sftp更改创build/修改时间服务器端?
我尝试了谷歌search,但我似乎无法提供正确的星座条款,以淘汰所有的人试图从客户端使用 rsync的文章/问题。
我将脚本绕过inotifywait -r -m --csv -e ATTRIB /my/dir 。 只要有人修改mtime,ctime,权限(和其他小型stufF),就可以打印任何文件,以便您可以根据需要touch该文件。 这是一个繁琐和丑陋的解决方法,但不能想到一般情况下更简单。
您更新mtime要求是非标准的; 没关系ctime 。 通常情况下,你可以让人们随意使用mtime ,这样它可以存储文件内容被有意更新的date。 用ctime检查文件更改的时间(例如mtime更改,权限更改,文件创build等); 看stat /my/file或者ls -lc或者find最新的find . -cmin -60 find . -cmin -60
服务器端的authorized_keys文件可以提供一个“COMMAND =”参数,意思是“如果有人使用这个键,忽略在服务器上执行的命令并运行这个命令。” 该命令给出了默认命令将收到的所有标志和选项。 您可以提供一个删除不需要的标志的命令,然后运行预期的命令。 有关类似的文章在这里: https : //cybermashup.com/2013/05/14/restrict-ssh-logins-to-a-single-command/
这个答案的问题是,我不知道“-t”标志是通过这种方式,还是在RSYNC协议。