Prišel je prvi pomemben izid strežnika , ki omogoča organizacijo oddaljenega dostopa do datotek z uporabo protokolov SFTP, SCP/SSH in Rsync. Med drugim se SFTPGo lahko uporablja za zagotavljanje dostopa do Git-repozitorijev z uporabo protokola SSH. Podatki so lahko dostopni tako iz lokalnega datotečnega sistema kot tudi iz zunanjih shranjevanj, združljivih z Amazon S3 in Google Cloud Storage. Za shranjevanje uporabniških osnov in metapodatkov se uporabljajo SQL podprte DB ali formati ključ/vrednost, kot so PostgreSQL 9.4+, MySQL 5.6+, SQLite 3.x ali . Na voljo je tudi način shranjevanja metapodatkov v pomnilniku, ki ne zahteva povezave z zunanjimi DB. Koda projekta je napisana v jeziku Go in pod GPLv3 licencom.
Ključne karakteristike:
- Za vsak račun se uporablja chroot izolacija, ki omejuje dostop do domačega imenika uporabnika. Možno je ustvarjanje virtualnih imenikov, ki se navezujejo na podatke zunaj uporabnikovega domačega imenika.
- Računi se shranjujejo v virtualni bazi uporabnikov, ki ne prekriva sistemske baze uporabnikov. Za shranjevanje baze uporabnikov se lahko uporabljajo SQLite, MySQL, PostgreSQL, bbolt in shranjevanje v pomnilniku. Na voljo so sredstva za usklajevanje virtualnih in sistemskih računov - mogoče je neposredno ali poljubno usklajevanje (en sistemski uporabnik je lahko usklajen z drugim virtualnim uporabnikom).
- Podprta je avtentikacija z javnimi ključi, SSH ključi in gesli (vključno z interaktivno avtentikacijo z vnosom gesla s tipkovnice). Možna je povezava več ključev za vsakega uporabnika ter nastavitev večfaktorske in večstopenjske avtentikacije (na primer, ob uspešni avtentikaciji s ključem lahko dodatno zahtevamo geslo).
- Za vsakega uporabnika je možna nastavitev različnih metod avtentikacije ter določitev lastnih metod, izvedenih prek klica zunanjih avtentikacijskih programov (na primer za avtentikacijo prek LDAP) ali pošiljanje zahtevkov prek HTTP API.
- Omogoča povezavo z zunanjimi obdelovalniki ali klici HTTP API za dinamično spreminjanje parametrov uporabnika, ki se kličemo pred prijavo uporabnika. Podpira ustvarjanje uporabnikov ob povezavi.
- Podpora individualnim kvotam za velikost podatkov in število datotek.
- Podpora omejitvi prepustnosti z ločenim nastavljanjem omejitev za vhodni in izhodni promet ter omejitvami na število hkratnih povezav.
- Orodja za razmejevanje dostopa, ki delujejo v navezavi na uporabnika ali imenik (lahko omejite ogled seznama datotek, prepovedujete nalaganje, prenos, prepisovanje, brisanje, preimenovanje ali spreminjanje pravic dostopa, prepovedujete ustvarjanje imenikov ali simboličnih povezav itd.).
- Za vsakega uporabnika lahko določite individualna omrežna omejitev, na primer, lahko dovolimo dostop samo z določenih IP naslovov ali podomrežij.
- Podprto je povezovanje filtrov prenesenih vsebin v povezavi z določenimi uporabniki in imeniki (na primer, lahko blokiramo nalaganje datotek z določenimi razširitvami).
- Možna je vezava obdelovalcev, ki se izvajajo pri različnih operacijah z datoteko (nalaganje, brisanje, preimenovanje itd.). Poleg klica obdelovalcev se tudi pošiljajo obvestila v obliki HTTP zahtev.
- Samodejno zaključevanje neaktivnih povezav.
- Atomarna posodobitev konfiguracije brez prekinitev povezav.
- metrik za spremljanje v Prometheus.
- Podprt je protokol HAProxy PROXY za organizacijo uravnoteženja obremenitve ali posredovanje povezav do SFTP/SCP storitev brez izgube informacij o izvorni IP naslovu uporabnika.
- za upravljanje uporabnikov in imenikov, ustvarjanje varnostnih kopij in oblikovanje poročil o aktivnih povezavah.
- (http://127.0.0.1:8080/web) za nastavitev in spremljanje (podprta je tudi nastavitev prek običajnih konfiguracijskih datotek).
- Možnost določanja nastavitev v formatih JSON, TOML, YAML, HCL in envfile.
- povezav po SSH z omejenim dostopom do sistemskih ukazov. Na primer, dovoljeno je zagnati ukaze, potrebne za delovanje Gita (git-receive-pack, git-upload-pack, git-upload-archive) in rsync, pa tudi nekaj vgrajenih ukazov (scp, md5sum, sha*sum, cd, pwd, sftpgo-copy in sftpgo-remove).
- Način za skupno rabo enega skupnega imenika z avtomatskim generiranjem prijavnih podatkov za povezavo, napovedanih preko multicast DNS.
- Vgrajen sistem za analizo zmogljivosti.
- Poenostavljeno migracijo sistemskih uporabniških računov Linux.
- dnevnikov v formatu JSON.
Izvor: opennet.ru
