Odbyła się pierwsza znacząca wersja serwera , umożliwiającego zdalny dostęp do plików przy użyciu protokołów SFTP, SCP/SSH i Rsync. SFTPGo może być również używany do udostępniania dostępu do repozytoriów Git z wykorzystaniem protokołu SSH. Dane mogą być przekazywane zarówno z lokalnego systemu plików, jak i z zewnętrznych magazynów zgodnych z Amazon S3 i Google Cloud Storage. Do przechowywania bazy użytkowników i metadanych używane są systemy baz danych wspierające SQL lub format klucz/wartość, takie jak PostgreSQL 9.4+, MySQL 5.6+, SQLite 3.x lub . Istnieje również tryb przechowywania metadanych w pamięci operacyjnej, który nie wymaga podłączenia zewnętrznej bazy danych. Kod projektu został napisany w języku Go i jest licencjonowany na zasadach GPLv3.
Kompaktowość i łatwość wbudowania w inne projekty. Kod składa się jedynie z kilku plików w języku C, które nie wymagają do kompilacji zewnętrznych zależności. Skompilowana najprostsza aplikacja zajmuje około 190 KB;
- Dla każdego konta stosowana jest izolacja chroot, ograniczająca dostęp do katalogu domowego użytkownika. Możliwe jest tworzenie wirtualnych katalogów, które odwołują się do danych spoza domowego katalogu użytkownika.
- Konta są przechowywane w wirtualnej bazie użytkowników, która nie krzyżuje się z systemową bazą użytkowników. Do przechowywania bazy danych użytkowników można używać SQLite, MySQL, PostgreSQL, bbolt oraz przechowywania w pamięci. Dostarczane są narzędzia do mapowania wirtualnych i systemowych kont użytkowników — możliwe jest bezpośrednie lub dowolne mapowanie (jedno konto systemowe może być mapowane na inne wirtualne konto użytkownika).
- Obsługiwana jest autoryzacja za pomocą kluczy publicznych, kluczy SSH oraz haseł (w tym interaktywna autoryzacja z wprowadzaniem hasła z klawiatury). Możliwe jest przypisanie wielu kluczy do każdego użytkownika, a także konfiguracja autoryzacji wielofaktorowej i wieloetapowej (na przykład, w przypadku pomyślnej autoryzacji za pomocą klucza może zostać dodatkowo poproszone o hasło).
- Dla każdego użytkownika możliwe jest skonfigurowanie różnych metod autoryzacji, a także określenie własnych metod, realizowanych przez wywołanie zewnętrznych programów autoryzacyjnych (na przykład, dla autoryzacji przez LDAP) lub wysyłanie zapytań przez HTTP API.
- Możliwe jest podłączenie zewnętrznych przetworników lub wywołań HTTP API do dynamicznej zmiany parametrów użytkownika, wywoływanych przed zalogowaniem się użytkownika. Obsługiwane jest tworzenie użytkowników przy podłączaniu.
- Wsparcie dla indywidualnych limitów rozmiaru danych i liczby plików.
- Wsparcie dla limitów przepustowości z oddzielnymi ustawieniami dla ruchu przychodzącego i wychodzącego, a także limitów liczby jednoczesnych połączeń.
- Środki kontroli dostępu powiązane z użytkownikiem lub katalogiem (można ograniczyć przeglądanie listy plików, zabronić przesyłania, pobierania, nadpisywania, usuwania, zmiany nazw lub praw dostępu, zabronić tworzenia katalogów lub dowiązań symbolicznych itp.).
- Dla każdego użytkownika można określić indywidualne ograniczenia sieciowe, na przykład można zezwolić na dostęp tylko z określonych adresów IP lub podsieci.
- Wsparcie dla przyłączania filtrów ładowanego contentu powiązanych z poszczególnymi użytkownikami i katalogami (na przykład można blokować ładowanie plików o określonej wielkości).
- Możliwość powiązania wywoływaczy uruchamianych podczas różnych operacji na plikach (ładowanie, usuwanie, zmiana nazwy itp.). Oprócz wywoływania wywoływaczy wspierane są powiadomienia w formie zapytań HTTP.
- Automatyczne kończenie nieaktywnych połączeń.
- Atomowe aktualizacje konfiguracji bez zerwania połączeń.
- metryk do monitorowania w Prometheus.
- Wsparcie dla protokołu HAProxy PROXY do organizacji równoważenia obciążenia lub proxy połączeń do usług SFTP/SCP bez utraty informacji o pierwotnym adresie IP użytkownika.
- do zarządzania użytkownikami i katalogami, tworzenia kopii zapasowych oraz generowania raportów o aktywnych połączeniach.
- (http://127.0.0.1:8080/web) do konfiguracji i monitorowania (wsparcie dla konfiguracji poprzez standardowe pliki konfiguracyjne również jest dostępne).
- Możliwość definiowania ustawień w formatach JSON, TOML, YAML, HCL i envfile.
- połączeń SSH z ograniczonym dostępem do poleceń systemowych. Na przykład, dopuszczalne jest uruchamianie poleceń niezbędnych do pracy z Git (git-receive-pack, git-upload-pack, git-upload-archive) oraz rsync, a także kilku wbudowanych poleceń (scp, md5sum, sha*sum, cd, pwd, sftpgo-copy i sftpgo-remove).
- Tryb do współdzielenia jednego wspólnego katalogu z automatycznym generowaniem danych logowania do połączeń, ogłaszanych przez multicast DNS.
- Wbudowany system dla analizy wydajności.
- Uproszczony migracje systemowych kont użytkowników Linux.
- logów w formacie JSON.
Źródło: opennet.ru
