Състоя се първият значителен релиз на сървъра , който позволява организирането на дистанционен достъп до файлове чрез протоколите SFTP, SCP/SSH и Rsync. Включително SFTPGo може да се използва за предоставяне на достъп до Git репозитории, използвайки протокол SSH. Данните могат да се предават както от локалната файлова система, така и от външни хранилища, съвместими с Amazon S3 и Google Cloud Storage. За съхраняване на потребителската база и метаданни се използват СУБД с поддръжка на SQL или формат ключ/стойност, като PostgreSQL 9.4+, MySQL 5.6+, SQLite 3.x или . Има също режим за съхранение на метаданни в оперативната памет, който не изисква свързване с външна база данни. Кодът на проекта е написан на езика Go и под лицензия GPLv3.
Основни характеристики:
- За всяка учетна запис се прилага chroot изолация, ограничаваща достъпа до домашната директория на потребителя. Възможно е създаването на виртуални директории, които да сочат към данни извън домашната директория на потребителя.
- Учетните записи се съхраняват в виртуална база данни на потребителите, която не пресича системната база данни на потребителите. За съхранение на базата данни на потребителите могат да се използват SQLite, MySQL, PostgreSQL, bbolt и съхранение в паметта. Предоставят се средства за свързване на виртуални и системни учетни записи — възможно е директно или произволно свързване (един системен потребител може да бъде свързан с друг виртуален потребител).
- Поддържа се удостоверяване с помощта на публични ключове, SSH ключове и пароли (включително интерактивно удостоверяване с въвеждане на парола от клавиатурата). Възможна е свързването на няколко ключа за всеки потребител, както и настройката на многофакторно и многостепенно удостоверяване (например, в случай на успешно удостоверяване с ключ, може да се изиска допълнителна парола).
- За всеки потребител е възможно настройването на различни методи на удостоверяване, както и определянето на собствени методи, реализирани чрез извикване на външни програми-удостоверители (например, за удостоверяване чрез LDAP) или изпращане на запитвания чрез HTTP API.
- е възможно свързването на външни обработвачи или извиквания на HTTP API за динамично променяне на потребителските параметри, извиквани преди входа на потребителя. Поддържа се създаване на потребители при свързване.
- Поддръжка на индивидуални квоти за размер на данни и брой файлове.
- Поддръжка на ограничаване на честотната лента с отделна настройка на ограниченията за входящ и изходящ трафик, както и ограничения за брой едновременно свързвания.
- Средства за ограничаване на достъпа, действащи в привръзка към потребителя или директорията (може да се ограничи прегледът на списъка с файлове, да се забрани качването, изтеглянето, презаписването, изтриването, преименуването или промяната на правата за достъп, да се забрани създаването на директории или символични връзки и т.н.).
- За все потребители могат да се определят индивидуални мрежови ограничения, например, може да се разреши достъп само от определени IP адреси или подмрежи.
- Поддържа се свързването на филтри за зареждане на съдържание, привързани към отделни потребители и директории (например, може да се блокира зареждането на файлове с определени разширения).
- Възможно е свързването на обработчици, задействани по време на различни операции с файлове (зареждане, изтриване, преименуване и т.н.). Освен извикването на обработчици, се поддържа изпращането на уведомления под формата на HTTP заявки.
- Автоматично прекратяване на неактивни връзки.
- Атомно обновление на конфигурацията без прекъсвания на връзките.
- на метрики за мониторинг в Prometheus.
- Поддържа се протокол HAProxy PROXY за организиране на балансиране на натоварването или проксиране на връзки към услуги SFTP/SCP без загуба на информация за изходния IP адрес на потребителя.
- за управление на потребителите и директориите, създаване на резервни копия и формулиране на доклади за активни връзки.
- (http://127.0.0.1:8080/web) за настройка и мониторинг (поддържа се и настройка чрез обикновени конфигурационни файлове).
- Възможност за определяне на настройки в формати JSON, TOML, YAML, HCL и envfile.
- свързване по SSH с ограничен достъп до системните команди. Например, разрешен е запуск на команди, необходими за работа с Git (git-receive-pack, git-upload-pack, git-upload-archive) и rsync, както и на няколко вградени команди (scp, md5sum, sha*sum, cd, pwd, sftpgo-copy и sftpgo-remove).
- Режим за споделяне на една обща директория с автоматична генерация на удостоверения за свързване, анонсирани чрез multicast DNS.
- Вградена система за анализ на производителността.
- Оптимизирана миграция на системни потребителски акаунти в Linux.
- логове в JSON формат.
Източник: opennet.ru
