Install Samba File Sharing on Debian 12 | Comprehensive Guide
This tutorial aims to guide you through the process of installing Install Samba File Sharing on Debian 12 Bookworm. You will also learn how to set up Samba clients on both Windows and Linux operating systems. Samba is a powerful and versatile tool that enables you to create seamless file and printer sharing to SMB/CIFS clients directly from a Linux server or desktop environment.
Debian 12 comes pre-packaged with Samba version 4.17. The following steps will guide you through the process of installing and configuring Samba file sharing on your Debian 12 system. Let’s dive into how to Install Samba File Sharing on Debian 12.
Install and Configure Samba File Sharing on Debian 12 Bookworm
Before you can begin to Install Samba File Sharing on Debian 12, you need to ensure that you have access to your server as a non-root user with sudo privileges and have set up a basic firewall. Instructions on how to accomplish this can be found in this guide: Initial Server Setup with Debian 12 Bookworm.
Now, proceed with the following steps to Install Samba File Sharing on Debian 12.
Step 1 – How To Install Samba File Sharing on Debian 12 with APT?
The smbclient
is a tool that provides command-line access to Samba shares. You can Install Samba File Sharing on Debian 12 using the APT package manager.
First, update your system’s package list by running the following command:
sudo apt update
Then, use the following command to Install Samba File Sharing on Debian 12:
sudo apt install samba smbclient cifs-utils
This command will install Samba along with its dependencies and other required packages.
Verify the installation by checking the installed Samba version:
samba --version
**Output**
Version 4.17.9-Debian
Now that Samba is installed, you need to make changes to the Samba configuration file and create the shared Samba directories.
Where is the Samba file on Debian?
The main Samba configuration file is located at /etc/samba/smb.conf
.
Set Samba Global Settings
You’ll now need to open the Samba configuration file using your preferred text editor. In this example, we use the vi
editor:
sudo vi /etc/samba/smb.conf
Under the [global]
section, find the line defining the workgroup
and ensure it’s set correctly for your network:
workgroup = WORKGROUP
Once you’ve made the changes, save and close the file.
Create a Shared Samba Directory
You can create both public and private shared directories. Create these directories using the following commands:
# sudo mkdir /public
# sudo mkdir /private
Now, open the Samba configuration file again and add the share definitions to the end of the file:
sudo vi /etc/samba/smb.conf
Add the following share configurations:
[public]
comment = Public Folder
path = /public
writable = yes
guest ok = yes
guest only = yes
force create mode = 775
force directory mode = 775
[private]
comment = Private Folder
path = /private
writable = yes
guest ok = no
valid users = @smbshare
force create mode = 770
force directory mode = 770
inherit permissions = yes
Save and close the file.
At this point, you need to create the Samba share user group that will have access to the private share, as specified in the configuration file.
Create the group using the following command:
sudo groupadd smbshare
Set the correct permissions for the private and public shares using the commands below:
# sudo chgrp -R smbshare /private/
# sudo chgrp -R smbshare /public
Next, set the correct directory permissions:
# sudo chmod 2770 /private/
# sudo chmod 2775 /public
Note: The value 2
at the beginning of the commands represents the SGID bit. This ensures that newly created files inherit the parent group.
Now, create a no-login local user to access the private share using the command below:
sudo useradd -M -s /sbin/nologin sambauser
Then, add the user to the Samba share group on Debian 12 with the following command:
sudo usermod -aG smbshare sambauser
Finally, set a password for your Samba user:
sudo smbpasswd -a sambauser
**Output**
New SMB password:
Retype new SMB password:
Added user sambauser.
Enable the created account using the following command:
sudo smbpasswd -e sambauser
**Output**
Enabled user sambauser.
Verify Samba Configuration
Once you’ve completed the above steps, you can test your Samba configuration on Debian 12 to ensure it is working correctly. Run the following command:
sudo testparm

This indicates that everything is configured correctly.
At this point, you can create demo files in the Samba shares. To do this, run the following commands:
# sudo mkdir /private/demo-private /public/demo-public
# sudo touch /private/demo1.txt /public/demo2.txt
How To Restart Samba Service?
To apply the changes, restart the Samba service on Debian 12:
sudo systemctl restart nmbd
Configure Firewall for Samba
If you have a firewall running, you need to allow remote access from the specified IP range as shown below:
sudo ufw allow from 192.168.205.0/24 to any app Samba
Before setting up Samba clients, you can try accessing your shared files from the local machine using the command below on Debian 12:
smbclient '\localhostprivate' -U sambauser

Now, let’s examine accessing the share from Windows. First, open a run box using Win+R
and enter your Debian 12 IP address in the box, then click Ok
:

The Samba shared folders on Debian 12 should appear as follows:

You can open one of the files and create a new file there. You should see the file on your server machine, too.
Mount Network Drive
You can mount the Samba share permanently on your Windows system. Click on This PC
-> Map Network Drive
. This will open a window for you, provide the Path details, and click Finish
.

Then, enter the Samba user credentials and click ok
.
You will have the share available on your This PC.
Step 4 – Set up Samba Linux Client
You can access the share folders from a Linux client. To do this, you need to have Samba packages installed on your server. Here, our Linux client is Debian 12:
sudo apt install samba-client cifs-utils
Then, navigate to File Manager
-> Other locations
and add your share using the syntax below:
smb://server-name/Share_name
Enter the credentials for the Samba user. That is it! You have your Samba share on your Linux client machine.
For more information, you can visit the Samba Documentation page.
Conclusion
Now you have successfully learned how to Install Samba File Sharing on Debian 12 Bookworm. You have also learned how to set up Samba clients on both Windows and Linux machines.
Alternative Solutions for File Sharing on Debian 12
While Samba is a robust and widely used solution for file sharing, alternative approaches may be more suitable depending on your specific needs and network environment. Here are two different ways to achieve file sharing on Debian 12:
1. Using NFS (Network File System)
NFS is a distributed file system protocol that allows users on a network to access files over a network as if they were on a local file system. It’s particularly well-suited for Linux-to-Linux file sharing due to its native integration.
Explanation:
NFS operates by designating a server that exports one or more directories to be shared. Clients then mount these exported directories, allowing them to access the files within. NFS offers granular control over permissions and user access.
Configuration Steps (Simplified):
Server (Debian 12):
-
Install NFS server packages:
sudo apt install nfs-kernel-server
-
Create a shared directory:
sudo mkdir /nfs_share sudo chown nobody:nogroup /nfs_share sudo chmod 777 /nfs_share #Adjust permissions as needed for security
-
Export the directory in
/etc/exports
:/nfs_share *(rw,sync,no_subtree_check,no_root_squash)
rw
: Read-write accesssync
: All writes are synchronized to disk.no_subtree_check
: Disables subtree checking.no_root_squash
: Allows root user on the client to have root privileges on the NFS share. Use with caution for security reasons.
-
Export the shared directory and restart NFS:
sudo exportfs -a sudo systemctl restart nfs-kernel-server
-
Allow NFS through the firewall (if UFW is enabled):
sudo ufw allow from 192.168.205.0/24 to any port nfs
Client (Debian 12 or other Linux):
-
Install NFS client packages:
sudo apt install nfs-common
-
Create a mount point:
sudo mkdir /mnt/nfs_share
-
Mount the NFS share:
sudo mount <server_ip>:/nfs_share /mnt/nfs_share
-
To make the mount permanent, add an entry to
/etc/fstab
:<server_ip>:/nfs_share /mnt/nfs_share nfs defaults 0 0
Code Example (Client Side Mounting):
sudo mount 192.168.205.10:/nfs_share /mnt/nfs_share
2. Using SSHFS (SSH File System)
SSHFS allows you to mount a directory on a remote server over an SSH connection. This is a secure and convenient way to access files, especially over the internet or untrusted networks.
Explanation:
SSHFS leverages the security of SSH to encrypt all data transferred between the client and server. It requires an SSH server running on the remote machine and an SSHFS client on the local machine.
Configuration Steps:
Server (Debian 12):
-
Ensure SSH server is running: Debian typically has an SSH server running by default. If not, install it:
sudo apt install openssh-server
-
Firewall (if UFW is enabled): Ensure that SSH traffic is allowed through the firewall (port 22).
Client (Debian 12 or other OS with SSH client):
-
Install SSHFS:
sudo apt install sshfs
-
Create a mount point:
sudo mkdir /mnt/sshfs_share
-
Mount the remote directory using SSHFS:
sshfs user@<server_ip>:/path/to/remote/directory /mnt/sshfs_share
Replace
user
with the username on the server,<server_ip>
with the server’s IP address, and/path/to/remote/directory
with the directory you want to share.
Code Example (Client Side Mounting):
sshfs sambauser@192.168.205.10:/home/sambauser/data /mnt/sshfs_share
These alternative solutions, NFS and SSHFS, offer different advantages and are suited for various use cases compared to Samba.