📁 SFTP-сервер (демон)
📌 Описание
Встроенный SFTP-сервер с изоляцией по приложению: пользователь получает доступ к файлам конкретного приложения, а не всего сервера. Основа файлового менеджера в UI платформы и доступ для любых SFTP-клиентов (FileZilla, WinSCP).
🎯 Сценарии использования
- 🖥️ Файловый менеджер в UI платформы (FE-008): просмотр, загрузка, редактирование файлов приложения.
- 🔧 Разработчик подключается FileZilla к
sftp://node:2022с credentials, выданными платформой, и видит только каталог своего приложения. - 🎮 Геймдизайнер заливает моды на игровой сервер, не имея доступа к ОС.
🏗️ Техническое решение
- Сервер: встроенный SSH/SFTP-субсистема на Rust (russh), отдельный порт (по умолчанию 2022), без системных пользователей ОС.
- Изоляция: виртуальный chroot на каталог приложения (volumes для Docker, рабочий каталог для нативных); path traversal исключён на уровне резолвера путей.
- Учётки: временные credentials/ключи выдаёт платформа с привязкой
пользователь → приложение → права (ro/rw); TTL и ревокация. - Права: выдача SFTP-доступа — право
apps.files(🔐 access-control). - Квоты и лимиты: ограничение размера загрузки, скорости — по тарифу/конфигу.
- Аудит: лог сессий и операций записи.
🔗 Связанные задачи
DMN-010, FE-008 в ROADMAP.md.