我想允许我的 Web 应用程序的用户通过 rsync 上传目录的内容。这些只是在线注册的用户,所以我不想为他们创建永久的 unix 帐户,并且我想确保他们上传的任何文件都仅存储在我的服务器上特定于他们帐户的目录下。理想情况下,流程应该是这样的:
- 用户通过经过身份验证的 Web UI 说“我想用 rsync 更新我的文件”
- 服务器说“好的,请运行:rsync /path/to/yourfiles uploaduser123abc@myserver:/”
- 客户端运行它,将任何已更改的文件更新到服务器上
- 上传位置是 chrooted 什么的——我们要确保客户端只写入服务器上指定目录下的文件
- 理想情况下,客户端不需要输入密码 - 用户名中的 123abc 足以作为一个秘密令牌来保证这个 rsync 事务的安全,并且在事务之后这个令牌被销毁 - 在新的步骤 1 发生之前不再有 rsync。
- 服务器有一组更新的用户文件。
如果您使用过 Google AppEngine,则所需的行为类似于它的“更新”命令——它只将更改的文件发送到 appengine 进行托管。
实现这样的事情的最佳方法是什么?是否会创建一次性用户,然后在这些帐户下的 chroot 监狱中运行 rsync 守护程序?是否有任何库(最好是 Python)或脚本可以做这样的事情?