Before you touch smbd and smb.conf, you need to master basic Linux admin skills (user, group, permission, mount), TCP/UDP networking and DNS, plus an understanding of file sharing protocols. In this episode you also prepare a Linux server with Samba 4.24.x, a Windows/Linux client for access testing, and a VM for the Active Directory lab.

Welcome to the Learning Samba series! This series will take you from basic share configuration, Active Directory integration (AD DC & winbind), and SMB3, all the way to security and production readiness as an enterprise NAS, as you master Samba — the open source implementation of the SMB/CIFS protocol used to share files and printers between Linux and Windows, macOS, or other Linux systems. There are 23 episodes in total, arranged across six phases, from foundational concepts to production readiness.
Before running smbd or editing smb.conf, there are base skills and software you must have ready. Why are these prerequisites important? Because Samba works on two layers at once: the network protocol layer (SMB/CIFS running over TCP) and the operating system layer (Linux users, groups, and filesystem permissions). Without understanding both, you will struggle to diagnose why a share is visible but not writable, or why a Windows user fails to log in even though the password is correct.
Episode 0 is your roadmap: we make sure the base skills are covered, prepare the server and clients, and then verify the environment for the first time. Once this episode is done, the rest of the series can be followed comfortably.
Samba has no concept of "users" of its own — every Samba user is mapped to a Linux user. You should be comfortable creating users (useradd), groups (groupadd), and setting filesystem permissions (chown, chmod). Test your understanding with these commands:
id
ls -la /srvThe output of id shows the UID/GID that will later become the basis for Samba's mapping. The directory where a share will live must be readable by the corresponding Linux user — we dig into the details in episode 4.
You need to understand TCP/UDP, the concept of ports, and DNS. Modern SMB connections run on port 445/TCP (and 139 for NetBIOS), while Active Directory integration depends entirely on DNS — clients must be able to resolve an AD DC's name correctly. Without this foundation, episode 9 (AD DC) and 10 (winbind) will feel heavy.
Understand conceptually what a file sharing protocol is: the client sends requests (open file, read, write, lock) to the server, and the server translates them into filesystem operations. SMB (Server Message Block) is one of those protocols — and Samba is its implementation. This concept will clarify why share options and filesystem permissions are two layers that stack on top of each other (episode 4).
Use a Linux server with a distribution you're comfortable with: Ubuntu/Debian or the RHEL family (Rocky/Alma/Fedora). For this series we use Samba 4.24.x — the current stable series in 2026 (4.24.5, released 28 July 2026). Check the host identity:
cat /etc/os-release
uname -r
hostnamectlIf the Samba package from your distribution's repository isn't version 4.24 yet, don't worry — the concepts taught here still apply; we dig into versions and release history in episode 17.
Prepare at least one Windows client (for testing \\server\share and networking) and one Linux client (for mount -t cifs and smbclient). For the Linux client, make sure the cifs-utils and smbclient packages are available — we install them in episode 6.
The AD sections (episodes 9-10) are best learned in an isolated lab. Prepare two or three VMs (VirtualBox, KVM, or Proxmox all work): one for the Samba AD DC, one for a member server, and one Windows client that joins the domain. All VMs should be on the same network, with DNS pointing to the DC.
Two small things that are often forgotten but are crucial for AD and Kerberos: a stable hostname and time synchronization. Kerberos refuses authentication when the clock difference between client and server exceeds the limit (usually 5 minutes). Set these up now:
sudo systemctl enable --now chrony
timedatectl
timedatectl status | grep -i syncFor the hostname, use a consistent FQDN (e.g. fileserver.lab.local) and make sure it resolves via /etc/hosts or DNS — because DNS is the foundation of AD, and we'll cover it in more detail starting with episode 9.
Before moving on to episode 1, run a quick verification:
id
hostname -f
cat /etc/os-release | grep PRETTY_NAME
timedatectl | grep "Time zone"These four commands should run without errors. If smbd is already installed, check its version with smbd --version (it should print something like Version 4.24.5) — if not, episode 3 will install it. You can also start getting familiar with the official documentation at samba.org, since this series references it along the way.
Note
Samba is a project under the Software Freedom Conservancy — a non-profit organization that provides legal and organizational support to open source projects. This isn't just trivia: licensing policy, security releases, and project governance are run transparently, which is why Samba is trusted in enterprise environments. We discuss this in episode 21.
Key takeaways:
id, hostname -f, and check the Samba version if it's already installed.In episode 1 next, we will cover history, background, and why you need Samba — from Andrew Tridgell reverse engineering the SMB protocol in 1992, to the birth of Samba 4 which unified the file server with an Active Directory Domain Controller, to the real problems it solves: integrating Linux into the Windows ecosystem without a Windows Server license. Make sure your environment is ready, because the Learning Samba journey is just beginning!