tui-tools

tui-samba

Samba shares, accounts and live connections, with every change previewed

v0.1.1file-sharingMIT
Every share on one list, worst first: what it exports, who may reach it, and the Unix mode of the directory behind it
Every share on one list, worst first: what it exports, who may reach it, and the Unix mode of the directory behind it

A terminal UI for a Samba file server: the shares it exports, the accounts that can reach them, and who is connected right now.

The shares are listed worst first. A path that does not exist, a directory somebody left at mode 0777, a writable share open to guests — each one is a sentence on the row rather than something to work out from testparm output and a stat. The configuration comes from testparm -s, which is what the server resolved rather than what anybody typed, and every share carries the Unix permissions, the owner and the SELinux label of the directory behind it.

A change goes through Samba's own parser before it goes anywhere near /etc. A share is edited in a guided form, staged to a file, read back with testparm -s and shown as a diff — and only then confirmed. It is installed with install -m 644 and picked up with smbcontrol all reload-config, which disconnects nobody.

This is a file server tool. Samba as an Active Directory domain controller is deliberately out of scope.

Run tui-samba --demo to drive a sample server: every key works, every command is built and previewed for real, and nothing touches your system.

Keys

KeyAction
tab / 1-4Move between the shares, the accounts, the live connections and the server itself
enterOpen the selected row in full
eEdit the selected share, checked by testparm and shown as a diff first
nAdd a share, written to a drop-in of its own
aAdd a Samba account, its password read from standard input
pSet the selected account's password
E / DEnable or disable the selected account
xRemove the selected account from the Samba database, leaving the Unix one
rTell the running server to re-read its configuration
tAsk the server what an anonymous client on the network sees
/Filter the rows of the current screen
?Help
qQuit

Press ? inside the tool for the full help screen, which is generated from the same action table as the key map.

Compatibility

This tool is a face on the program below, so its version matters.Tested is not a claim: a version lands there only after the tool's own suite passed against it on a real machine in the lab, and the run is kept as evidence in the repository. At startup the tool probes the backend once and says what it found in its header — a version nobody has run against is shown as(untested) in the warning colour, one older than the minimum as (below minimum) in the error colour. Neither stops it: the backend still refuses what it cannot do, in its own words.

samba

smbd ≥ 4.11
Binary
smbd
Minimum
4.11
Probed with
smbd --version
Tested
4.24.6

Needs a version this new

  • status-jsonsince 4.17

What changes on older versions

  • samba <4.17

    smbstatus --json does not exist, so the connections are read from the text output; the sessions, the shares in use and the open files are all there, and the per-session encryption is whatever those columns carry

  • samba >=4.17

    smbstatus --json is used, so a session's dialect, signing and encryption come from Samba's own document instead of from columns separated by runs of spaces a value may also contain

  • samba >=4.11

    SMB1 is off by default from this release, so a server min protocol below SMB2 is something somebody set on purpose — which is why tui-samba raises it and says nothing about a server on the default

  • samba >=4.11

    testparm --show-all-parameters is not used at all: it prints every parameter Samba has rather than this server's, so the effective configuration comes from testparm -s

  • samba >=4.11

    a machine may have no Samba at all, and that is a normal machine rather than a failure: the tool says so on its first screen and --check reports it as "installed": false and exits 0

Install

Once per machine, then every tool in the family is one pacman away.

Add the repository
$ curl -fsSL https://pkgs.tui.tools/install.sh | sh
Or run the same thing yourself, one command at a time

A family whose whole promise is preview before you run is not going to insist you pipe a script into a shell. These are the commands that script runs.

The one-time setup, by hand
$ curl -fsSL -o /tmp/tui-tools.asc https://pkgs.tui.tools/pubkey.asc
  sudo pacman-key --add /tmp/tui-tools.asc
  sudo pacman-key --lsign-key \
    "$(gpg --show-keys --with-colons /tmp/tui-tools.asc | awk -F: '/^fpr:/{print $10; exit}')"
  printf '[tui-tools]\nServer = https://pkgs.tui.tools/arch/$arch\n' \
    | sudo tee -a /etc/pacman.conf
  sudo pacman -Sy
Arch Linux · tui-samba
$ sudo pacman -S tui-samba

Upgrades then arrive with the rest of your system updates.

What it can do to your machine

  • Preview, then confirm

    Every change is shown as an exact command line and confirmed before it runs. The dialog and the runner receive the same value, so the preview cannot drift from what executes.

  • Escalates for actions

    Reading the configuration usually needs nothing: smb.conf is world-readable. The password database and smbstatus are root-only, and every change escalates through sudo -n, which never prompts: writing a share, reloading the server, and every smbpasswd call.

  • No daemon, no state of its own

    Nothing keeps running after you quit, and nothing is installed to run later. The system is the source of truth; the tool re-reads it after every change.

  • Opens network connections

    One key runs smbclient -L localhost -N, which opens a connection to this machine's own SMB port to read the share list an anonymous client is shown. It is previewed and confirmed like every other command, and sends no password. Nothing else here opens a socket.

  • Static binary

    Released statically linked, with no runtime dependencies to install.

  • Releases are not signed yet

    Releases carry SHA-256 checksums but no signature. Verify the checksum, and read this as the open item it is.

Reporting

Report a security issue privately, through GitHub's private vulnerability reporting on the repository's Security tab. The family-wide policy, and what counts as in scope, is on the security page.

Downloads

v0.1.1 · 2026-08-30
FileSizeSHA-256
checksums.txt784 B
tui-samba-0.1.1-1-aarch64.pkg.tar.zst1.7 MBfc8cb144e9f5ee31004ecc5f20b1067a538c896c6a151ec43d02dbed3bd24021
tui-samba-0.1.1-1-x86_64.pkg.tar.zst1.9 MBaa70c57cc9d49bb875b5e9b25cbd551214e0799f3db2d734c69414d2d4fa19ab
tui-samba-0.1.1-1.aarch64.rpm1.7 MB7be27b947bd36ced74aaf0cb104885b7428d4ef6f69476a4a0c1f4ba78d59271
tui-samba-0.1.1-1.x86_64.rpm1.9 MBd6707bb6bec6f271802e9e14ed4da5a17b3125b3509539fa6eadc8b445e67289
tui-samba_0.1.1_amd64.deb1.9 MB4a451ba1c73d1333f9c856c997972970d7156255405929e35038c314ad4421a5
tui-samba_0.1.1_arm64.deb1.7 MB7629b615741f897c28ec57efcb9a57ff20609a4aff122699773b94026bef778f
tui-samba_0.1.1_linux_amd64.tar.gz1.9 MB77e54da8973a9f7386ab3e37d02a1e52d7fed62b82f9b05882eb75db056b08de
tui-samba_0.1.1_linux_arm64.tar.gz1.7 MB33539fe13e0b17e4cd7dc2da49911301b32e6d04810b43441314253c3de61be2

Every release ships a checksums.txt. Download it next to the archive and run sha256sum -c checksums.txt --ignore-missing. See verifying a download.

Releases

v0.1.1

2026-08-30
## Changelog
* 2bda73b1ef0ef239a3589bca04e62314e3c14567 Packages are available from pkgs.tui.tools
* bb3f861963571e43390c955c7b54c1fd471c7e8a Re-pin the kit at v0.2.3
* 3a1da992528511c99ce5dfc030a6db7a9d212d60 Record Samba 4.24.6 from a machine that really runs it
* d3f323ecaee9f3cda24a84915d3b24cc7a8cef03 Ship the tool as a .deb, an .rpm and a pacman package

v0.1.0

2026-08-30
## Changelog
* c8ae2e409f1b75bf402de49367340851387c4fbf Fit the help panel on a 26 row terminal
* 60040d0fc123821997731f9cf8baa2ee28a5408a Initial commit
* d70e4f28473af38279809843a8f4a2239a88e51b Turn the template into tui-samba