A avut loc prima lansare semnificativă a serverului , care permite organizarea accesului la fișiere prin intermediul protocoalelor SFTP, SCP/SSH și Rsync. De asemenea, SFTPGo poate fi utilizat pentru a oferi acces la depozitele Git, folosind protocolul SSH. Datele pot proveni atât din sistemul de fișiere local, cât și din soluții de stocare externe compatibile cu Amazon S3 și Google Cloud Storage. Pentru stocarea bazei de date a utilizatorilor și a metadatelor sunt utilizate SGBD-uri cu suport SQL sau formate cheie/valoare, cum ar fi PostgreSQL 9.4+, MySQL 5.6+, SQLite 3.x sau . Există, de asemenea, un mod de stocare a metadatelor în memoria operativă, care nu necesită conectarea la o bază de date externă. Codul proiectului este scris în limbajul Go și sub licența GPLv3.
Caracteristici principale:
- Fiecare cont beneficiază de izolație chroot, limitând accesul la directorul home al utilizatorului. Este posibilă crearea de directoare virtuale care fac referire la date din afara directorului home al utilizatorului.
- Conturile sunt stocate într-o bază de date virtuală a utilizatorilor, care nu se interceptă cu baza de date sistemică a utilizatorilor. Pentru stocarea bazei de date a utilizatorilor pot fi utilizate SQLite, MySQL, PostgreSQL, bbolt și stocare în memorie. Se oferă instrumente pentru mapping-ul conturilor virtuale cu cele sistemice — este posibil un mapping direct sau arbitrar (un utilizator sistemic poate fi mapat cu un alt utilizator virtual).
- Se suportă autentificarea prin chei publice, chei SSH și parole (inclusiv autentificarea interactivă cu introducerea parolei de la tastatură). Este posibilă asocierea mai multor chei pentru fiecare utilizator, precum și configurarea autentificării multifactor și multi-etap (de exemplu, în cazul unei autentificări reușite cu cheia, poate fi solicitată o parolă suplimentară).
- Pentru fiecare utilizator este posibilă configurarea diferitelor metode de autentificare, precum și definirea propriei metode, realizate prin apelarea unor programe externe de autentificare (de exemplu, pentru autentificarea prin LDAP) sau trimiterea de solicitări prin API HTTP.
- Este posibilă conectarea de handleri externi sau apeluri HTTP API pentru a modifica dinamic parametrii utilizatorului, înainte de autentificarea acestuia. Se suportă a utilizatorilor la conectare.
- Suport pentru cotele individuale privind dimensiunea datelor și numărul de fișiere.
- Suport pentru limitarea lățimii de bandă cu configurare separată a limitărilor pentru traficul de intrare și ieșire, precum și limitări pentru numărul de conexiuni simultane.
- Instrumente de control al accesului, acționând în legătură cu utilizatorul sau directorul (se poate restricționa vizualizarea listei de fișiere, se poate interzice încărcarea, descărcarea, rescrierea, ștergerea, redenumirea sau modificarea permisiunilor, se poate interzice crearea de directoare sau link-uri simbolice, etc.).
- Pentru fiecare utilizator pot fi definite restricții de rețea individuale, de exemplu, se poate permite accesul doar din anumite IP-uri sau subrețele.
- Se suportă conectarea filtrelor de conținut descărcat legat de utilizatori și directoare separate (de exemplu, este posibil să blochezi descărcarea fișierelor cu o extensie specifică).
- Se poate lega handleri care sunt activati în diverse operații cu fișiere (descărcare, eliminare, redenumire etc.). În plus față de apelarea handlerilor, se suportă trimiterea de notificări sub formă de cereri HTTP.
- Încheiere automată a conexiunilor inactive.
- Actualizare atomică a configurației fără a întrerupe conexiunile.
- metricelor pentru monitorizarea în Prometheus.
- Se suportă protocolul HAProxy PROXY pentru organizarea încărcării dezechilibrate sau a proxy-urilor de conexiuni către serviciile SFTP/SCP fără a pierde informațiile despre IP-ul inițial al utilizatorului.
- pentru gestionarea utilizatorilor și a directoarelor, crearea de backup-uri și generarea de rapoarte despre conexiunile active.
- (http://127.0.0.1:8080/web) pentru configurare și monitorizare (se suportă și configurarea prin fișiere de configurare standard).
- Posibilitatea de a defini setările în formate JSON, TOML, YAML, HCL și envfile.
- conexiuni SSH cu acces limitat la comenzile sistemului. De exemplu, este permisă executarea comenzilor necesare funcționării Git (git-receive-pack, git-upload-pack, git-upload-archive) și rsync, precum și câteva comenzi încorporate (scp, md5sum, sha*sum, cd, pwd, sftpgo-copy și sftpgo-remove).
- Modul pentru partajarea unui director comun cu generarea automată a acreditivelor de conectare, anunțate prin multicast DNS.
- Un sistem încorporat pentru analiza performanței.
- Simplificată migrarea conturilor de utilizator Linux.
- jurnalelor în format JSON.
Sursa: opennet.ro
