Samba is a reimplementation of the SMB networking protocol that enables resource sharing between different platforms (mainly Linux and Windows though).
We’ll explain how you can set up a Samba server on Ubuntu, as well as how you can access the shared files from other systems in this article.
Install Samba Server
The main Samba package and all the required dependencies can be downloaded directly from the Ubuntu repos, so the initial installation is very simple.
Update the package index first to ensure you download the latest Samba version.
sudo apt update
Then, install Samba with
sudo apt install samba
Set Samba Password
Samba uses its own set of passwords stored in
/etc/samba/smbpasswd. So, you’ll need to add a user to the sambashare group and set a new password for this user. Then, you’ll be able to access Samba shares as this user.
We’ll set a password for the current user anup like so
sudo smbpasswd -a anup
Set Up Shared Directory
You can share a folder from your file explorer by right-clicking and selecting Local Network Share.
Enable the Share this folder checkbox, configure the permissions as you see fit, then click on Create Share.
You can also set up a shared directory from the terminal, although the process is a bit longer. First, create a directory to share. We’ll name it smbshare but you can change it to whatever you prefer.
Now, we’ll add the smbshare directory that we just created to the Samba config file. It’s a good idea to backup the original config file before making any changes though.
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup
Once you’ve made a copy of the config file, edit the original with your preferred text editor.
sudo nano /etc/samba/smb.conf
Add the following configurations at the end of the file.
[directoryname] path = /home/username/directoryname valid users = username read only = no
After replacing the directory and usernames, the config should look something like this.
Save the changes and exit the editor. Then, restart the Samba service to apply the new configs.
sudo systemctl restart smbd
After making such changes, it’s good practice to test
smb.conf for any syntax errors.
Access Share from Client System
Samba uses UDP ports 137 and 138 and TCP ports 139 and 445. The easiest way to open these ports on Ubuntu is by allowing the Samba profile.
sudo ufw allow samba
After allowing Samba traffic through the firewall, you should now be able to access the shares from another system.
If doing so from Windows, enter
\\hostip\foldername into the Run dialog box.
As mentioned earlier, Samba is primarily used for accessing Linux files from Windows. If you want to access the shares from a Linux client instead, you’ll need to install the client package first.
sudo apt install smbclient
Now, you can connect to the Samba share like so
smbclient //hostip/directoryname -U username
smbclient //192.168.10.56/smbshare -U anup
Or, you can access the shares from your file explorer. Simply enter the server’s IP address into the Connect to Server field, then enter the username and samba password to authenticate.