Я бы хотел, чтобы пользователи моего веб-приложения могли загружать содержимое каталога через rsync. Это просто пользователи, которые зарегистрировались онлайн, поэтому я не хочу создавать для них постоянные учетные записи Unix, и я хочу убедиться, что все загружаемые ими файлы хранятся на моем сервере только в каталоге, соответствующем их учетной записи. В идеале поток должен выглядеть примерно так:
- пользователь говорит: «Я хотел бы обновить свои файлы с помощью rsync» через аутентифицированный веб-интерфейс
- сервер говорит: «Хорошо, пожалуйста, запустите: rsync / path / to / yourfiles uploaduser123abc @ myserver: /»
- клиент запускает это, обновляя все файлы, которые были изменены на сервере
- Расположение загрузки - chroot или что-то в этом роде - мы хотим, чтобы клиент записывал только файлы в указанный каталог на сервере
- в идеале, клиенту не нужно вводить пароль - 123abc в имени пользователя достаточно для секретного токена, чтобы обеспечить безопасность одной транзакции rsync, а после транзакции этот токен уничтожается - больше не будет rsyncs до нового шага 1 встречается.
- сервер имеет обновленный набор файлов пользователя.
Если вы использовали Google AppEngine, желаемое поведение аналогично его команде «обновить» - он отправляет только измененные файлы в appengine для хостинга.
Какой лучший подход для реализации чего-то подобного? Будет ли создание одноразовых пользователей, а затем запускать демон rsync в chroot-тюрьме под этими учетными записями? Существуют ли какие-либо библиотеки (желательно Python) или сценарии, которые могут делать что-то подобное?