Skip to content

v0.29.2: NetBSD and OpenBSD/arm64 binaries

Choose a tag to compare

@github-actions github-actions released this 17 Oct 20:24
· 7 commits to main since this release
4f5af84

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 tag

The 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 -- files

From 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's

The 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.