Zum Inhalt springen

go-fileshare

go-fileshare stellt Disk-Images und Verzeichnisse über SMB, NFS, WebDAV, SFTP und S3 bereit, mit einem einzigen Satz von Benutzern und Regeln pro Freigabe aus einer einzigen Konfiguration.

Ein Disk-Image – oder ein Verzeichnis –, bereitgestellt über SMB, NFS, WebDAV, SFTP und S3: dieselben Benutzer, derselbe Zugriff pro Freigabe, aus einer einzigen Konfigurationsdatei. Reines Go, CGO_ENABLED=0, ein Binary. Diese Seiten beschreiben v0.29.1.

go install github.com/go-fileshare/fileshare@latest

fileshare --image disk.img --user alice --password-file pw   # one image, now
fileshare --config /etc/fileshare.d                          # several, with users

Das Passwort kommt aus einer Datei, nie aus einem Flag: Ein Argument ist in der Prozessliste für jeden Benutzer der Maschine sichtbar.

Warum ein einziges Programm

Welches Protokoll ein Image transportiert, hängt vom Client am anderen Ende ab: macOS und Windows greifen zu SMB, eine Linux-Flotte hat bereits NFS, ein Browser oder ein Telefon hat HTTP. Drei Server zu betreiben, jeden mit eigener Konfigurationsdatei und eigener Vorstellung davon, wer alice ist, ist ein sicherer Weg, zwei davon auf subtile Weise falsch zu konfigurieren.

Deshalb gibt es eine Konfiguration, einen Satz von Benutzern, einen Satz von Regeln pro Freigabe – und die Protokolle sind Listener darüber.

Was es beim Start ausgibt

smb    on 0.0.0.0:445 — photos and scratch
webdav on 0.0.0.0:8080 — photos and scratch
sftp   on 0.0.0.0:2222 — photos and scratch
nfs    on 0.0.0.0:2049 — scratch
       photos is not served over nfs: it is restricted to alice and bob, and
       NFSv3 on its own has no authentication: AUTH_UNIX is a claim the client
       makes about itself and the wire cannot disagree with it. A kerberos
       block lifts this: sec=krb5 carries a principal a ticket proves; so
       does identity = "certificate" on the nfs serve block: RPC-over-TLS
       with a client certificate naming the person

Dieser letzte Absatz zeigt die Form des ganzen Programms: Eine Regel, die die Konfiguration verlangt, und ein Protokoll, das sie nicht einhalten kann, treffen sich nicht stillschweigend in der Mitte. Siehe Was ein Protokoll zusichern kann.

Wie es weitergeht

Die KonfigurationBenutzer, Gruppen, Freigaben, serve-Blöcke
Freigaben: Images, Geräte, Verzeichnissewas erkannt wird, was deklariert werden muss
Benutzer, Gruppen und VerzeichnisseDateien, SQL, LDAP und was jede Quelle beweisen kann
checkdie ganze Konfiguration vor einem Neustart zurücklesen
Protokollewas jedes zusichern kann und was nicht
Die Admin-APIFreigaben anlegen, Berechtigungen vergeben und Freigaben offline nehmen, ohne Neustart
VolumesZFS-Datasets, btrfs-Subvolumes und XFS/ext4-Projekt-Quotas, über die API angelegt und bereitgestellt
Health und Metriken/healthz, /readyz, /metrics
Das Verzeichnis erneut einlesenreload, SIGHUP und was eine Entfernung mit offenen Sitzungen macht
TLSDateien oder ACME; und warum WebDAV unverschlüsselt abgelehnt wird
Was was widerruftKRL, CRL, Shared Signals – und warum jedes geschlossen fehlschlägt (fail closed)
Nur bauen, was Sie brauchenein Build-Tag lässt ein Protokoll ganz weg
Ein Prozess pro Protokoll--isolate
Standwas geprüft ist und was noch fehlt

Lizenz

BSD-3-Clause.

Erstellt am von tannevaled

Geändert am von tannevaled