Repository navigation
v0.29.2: NetBSD and OpenBSD/arm64 binaries
fileshare serves a disk image, a device or a directory over SMB, NFS, WebDAV, SFTP and S3. The same users and the same per-share access apply over every protocol, and it all comes from one configuration file. It is pure Go, a single static binary, with no cgo.
New in v0.29.2: NetBSD (amd64) and OpenBSD on arm64. fileshare did not build on NetBSD. A dependency, awnumar/memcall v0.1.2 (via memguard v0.22.3 and OpenPubkey), used MADV_DONTDUMP, which NetBSD does not have. memguard v0.23.0 and memcall v0.4.0 fix that upstream. CI now cross-builds every release platform on every pull request, so a platform can no longer break unseen. The program is otherwise the same as v0.29.1.
Download and check
Pick the archive for your system below:
- Linux: amd64, arm64, riscv64, ppc64le, s390x and loong64;
- macOS: amd64 and arm64;
- Windows: amd64 and arm64;
- FreeBSD: amd64 and arm64;
- OpenBSD: amd64 and arm64;
- NetBSD: amd64.
Then check it, in either or both of these ways:
sha256sum -c --ignore-missing SHA256SUMS # the file is the one published here
gh attestation verify fileshare_v0.29.2_linux_amd64.tar.gz -R go-fileshare/fileshare
# and GitHub Actions built it, from this tagThe archives are reproducible: hack/release.sh rebuilds them from a checkout of the tag, byte for byte. A Mac build and the Ubuntu CI build give identical SHA256SUMS, as measured on v0.29.1.
Try it in two minutes: a directory over WebDAV
tar -xzf fileshare_v0.29.2_linux_amd64.tar.gz && cd fileshare_v0.29.2_linux_amd64
mkdir shared
printf 'correct horse battery staple\n' > alice.pw && chmod 600 alice.pw
cat > fileshare.hcl <<'HCL'
user "alice" { password_file = "alice.pw" }
share "files" {
directory = "shared"
allow = ["alice"]
writers = ["alice"]
}
serve "webdav" { addr = "127.0.0.1:8080" }
HCL
./fileshare check -c fileshare.hcl # who gets what, over which protocol -- before serving
./fileshare -c fileshare.hcl # webdav on 127.0.0.1:8080 -- filesFrom another terminal:
curl -u 'alice:correct horse battery staple' -T somefile http://127.0.0.1:8080/files/somefile # 201
curl -u 'alice:correct horse battery staple' http://127.0.0.1:8080/files/somefile # the file back
curl -i http://127.0.0.1:8080/files/somefile # 401: not anybody'sThe file lands in shared/. Add serve "smb", serve "sftp", serve "s3" or serve "nfs" blocks for the other protocols; check says what each can carry.
The password comes from a file, never from a flag: a command-line argument is visible to every user in the process list. The documentation is at https://go-fileshare.github.io/docs/0.29/, in English, French, Spanish and German.
What changed
- v0.29.2: NetBSD/amd64 and OpenBSD/arm64 binaries (memguard v0.23.0, memcall v0.4.0), and every release platform is cross-built in CI.
- v0.29.1: on a reload, a group emptied in the directory grants nothing. The changes since v0.26.1 are listed on the v0.29.1 release.
Reporting a problem
Please open an issue at https://github.com/go-fileshare/fileshare/issues and include:
- the output of
fileshare --version; - your system;
- the client you used;
fileshare check -c <your configuration>, with secrets removed.