Proběhlo první významné vydání serveru , který umožňuje vzdálený přístup k souborům pomocí protokolů SFTP, SCP/SSH a Rsync. SFTPGo může být také používán k poskytování přístupu k Git repozitářům prostřednictvím protokolu SSH. Data mohou být poskytována jak z lokální souborové soustavy, tak z externích úložišť kompatibilních s Amazon S3 a Google Cloud Storage. Pro uchování uživatelské databáze a metadat se používají DBMS s podporou SQL nebo formátu klíč/hodnota, jako jsou PostgreSQL 9.4+, MySQL 5.6+, SQLite 3.x nebo . Existuje také režim uchovávání metadat v operační paměti, který nevyžaduje připojení externí databáze. Kód projektu je napsán v jazyce Go a distribuován pod licencí GPLv3.
Hlavní vlastnosti:
- Pro každý účet se aplikuje chroot-izolace, která omezuje přístup pouze na domovský adresář uživatele. Je možné vytvářet virtuální adresáře, které odkazují na data mimo domovský adresář uživatele.
- Účty jsou uchovávány ve virtuální databázi uživatelů, která se nepřekrývá se systémovou databází uživatelů. Pro uchování databáze uživatelů mohou být použity SQLite, MySQL, PostgreSQL, bbolt a uchovávání v paměti. Jsou poskytovány prostředky pro mapování virtuálních a systémových účtů — je možné přímé nebo libovolné mapování (jeden systémový uživatel může být mapován na jiného virtuálního uživatele).
- Podporuje se autentizace pomocí veřejných klíčů, SSH klíčů a hesel (včetně interaktivní autentizace se zadáním hesla z klávesnice). Je možné přiřadit několik klíčů pro každého uživatele, stejně jako nastavit vícestupňovou a vícefaktorovou autentizaci (například v případě úspěšné autentizace pomocí klíče může být navíc požadováno heslo).
- Pro každého uživatele je možné nastavit různé metody autentizace, stejně jako definovat vlastní metody, které se implementují prostřednictvím volání externích autentizačních programů (například pro autentizaci přes LDAP) nebo zasíláním požadavků prostřednictvím HTTP API.
- Je možné se připojit k externím zpracovatelům nebo voláním HTTP API pro dynamickou změnu parametrů uživatele, které jsou vyvolány před přihlášením uživatele. Podporuje se vytváření uživatelů při připojení.
- Podpora individuálních kvót pro objem dat a počet souborů.
- Podpora omezení šířky pásma s odděleným nastavením pro příchozí a odchozí provoz, stejně jako omezení na počet současných připojení.
- Prostředky pro řízení přístupu, působící na základě uživatele nebo adresáře (například lze omezit zobrazení seznamu souborů, zakázat nahrávání, stahování, přepisování, mazání, přejmenovávání nebo měnění oprávnění, a zakázat vytváření adresářů nebo symbolických odkazů atd.).
- Pro každého uživatele lze stanovit individuální síťová omezení, například povolit přístup pouze z určitých IP adres nebo podsítí.
- Podporuje se připojení filtrů nahrávaného obsahu vázaných na jednotlivé uživatele a adresáře (například lze blokovat nahrávání souborů s určitými příponami).
- Možnost připojení obslužných programů, které se spouští při různých operacích se soubory (nahrávání, mazání, přejmenovávání atd.). Kromě vyvolání obslužných programů se podporuje odesílání upozornění formou HTTP požadavků.
- Automatické ukončení neaktivních připojení.
- Atomické aktualizace konfigurace bez přerušení připojení.
- metrik pro monitorování v Prometheus.
- Podporuje se protokol HAProxy PROXY pro organizaci vyvažování zátěže nebo pro proxy připojení k SFTP/SCP službám bez ztráty informací o původní IP adrese uživatele.
- pro správu uživatelů a adresářů, vytváření záloh a generování zpráv o aktivních připojeních.
- (http://127.0.0.1:8080/web) pro nastavení a monitoring (podporuje se také nastavení přes běžné konfigurační soubory).
- Možnost stanovení nastavení ve formátech JSON, TOML, YAML, HCL a envfile.
- připojení přes SSH s omezeným přístupem k systémovým příkazům. Například je povoleno spouštění příkazů nezbytných pro práci s Gitem (git-receive-pack, git-upload-pack, git-upload-archive) a rsync, stejně jako několika integrovaných příkazů (scp, md5sum, sha*sum, cd, pwd, sftpgo-copy a sftpgo-remove).
- Režim pro sdílení jednoho společného adresáře s automatickým generováním přihlašovacích údajů pro připojení, které jsou oznamovány prostřednictvím multicast DNS.
- Vestavěný systém pro analýzu výkonu.
- Zjednodušený migrace systémových účtů Linux.
- logů ve formátu JSON.
Zdroj: opennet.ru
