Security 如何通过rsync安全地接收来自最终用户的文件

Security 如何通过rsync安全地接收来自最终用户的文件,security,unix,rsync,chroot,Security,Unix,Rsync,Chroot,我想允许我的web应用程序的用户通过rsync上传目录的内容。这些只是在线注册的用户,所以我不想为他们创建永久的unix帐户,我想确保他们上传的任何文件都只存储在我的服务器上特定于他们帐户的目录下。理想情况下,流程如下所示: 用户通过经过身份验证的web UI说“我想用rsync更新我的文件” 服务器说“好的,请运行:rsync/path/to/yourfilesuploaduser123abc@myserver:/” 客户端运行该命令,更新服务器上已更改的任何文件 上载位置是chrooted

我想允许我的web应用程序的用户通过rsync上传目录的内容。这些只是在线注册的用户,所以我不想为他们创建永久的unix帐户,我想确保他们上传的任何文件都只存储在我的服务器上特定于他们帐户的目录下。理想情况下,流程如下所示:

  • 用户通过经过身份验证的web UI说“我想用rsync更新我的文件”
  • 服务器说“好的,请运行:rsync/path/to/yourfilesuploaduser123abc@myserver:/”
  • 客户端运行该命令,更新服务器上已更改的任何文件
    • 上载位置是chrooted之类的——我们希望确保客户端只写入服务器上指定目录下的文件
    • 理想情况下,客户端不需要输入密码-用户名中的123abc是一个足够保密的令牌,可以保证这一个rsync事务的安全,并且在事务结束后,这个令牌被销毁-在新的步骤1发生之前,不再需要rsync
  • 服务器有一组更新的用户文件
  • 如果您使用过Google AppEngine,那么所需的行为类似于它的“更新”命令——它只将更改后的文件发送到AppEngine进行托管


    实现这样的东西的最佳方法是什么?是创建一次性用户,然后在这些帐户下的chroot监狱中运行rsync守护程序吗?是否有任何库(最好是Python)或脚本可以执行类似操作?

    您可以正常运行ssh jailrooted和rsync,只需使用PAM对“备用”authdb进行身份验证。

    听起来很合理。您能否提供一些示例,说明如何运行SSH jailrooted并使用PAM设置临时备用数据库?您可能可以找到关于前者的指南,对于后者,我将使用基于数据库的PAM和NSS模块,并根据需要添加/删除条目。