This guide intends to teach you to Install and Configure Samba Share on Ubuntu 22.04.
Samba is a free and open-source SMB/CIFS protocol implementation for Unix and Linux that allows for file and print sharing between Unix/Linux, Windows, and macOS machines in a local area network.
Samba is usually installed and runs on Linux. It comprises several programs that serve different but related purposes, the most important two of which are:
- smbd: provides SMB/CIFS service (file sharing and printing), and can also act as a Windows domain controller.
- nmbd: This daemon provides NetBIOS name service, and listens for name-server requests. It also allows the Samba server to be found by other computers on the network.
Steps To Install and Configure Samba Share on Ubuntu 22.04
To complete this guide, you must log in to your server as a non-root user with sudo privileges and set up a basic firewall. To do this, you can follow our guide on Initial Server Setup with Ubuntu 22.04.
Install Samba on Ubuntu 22.04
Samba packages are available in the default Ubuntu repository. First, update your local package index with the command below:
sudo apt update
Then, use the following command to install Samba:
sudo apt install samba smbclient cifs-utils
This will install the dependencies and required packages.
Configure Samba on Ubuntu 22.04
At this point, you need to make some changes to the Samba config file and create share samba directories. To do these, follow the steps below.
Set Samba Global Settings
At this point, you need to open the Samba configuration file with your favorite text editor, here we use vi:
sudo vi /etc/samba/smb.conf
Under the Global section, find the line below and make sure it is like this:
workgroup = WORKGROUP
When you are done, save and close the file.
Create Shared Samba Directory
At this point, you can share both public and private directories. So you can create the two directories by using the following commands:
# sudo mkdir /public # sudo mkdir /private
Now you need to open the Samba config file again and add the shares and authentication methods to the end of the file.
sudo vi /etc/samba/smb.conf
[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
When you are done, save and close the file.
Create Samba Share User Group
At this point, you need the Samba share user group to access the Private share as specified in the config file above.
Create the group by using the command below:
sudo groupadd smbshare
Set the correct permissions for the private share by using the commands below:
# sudo chgrp -R smbshare /private/ # sudo chgrp -R smbshare /public
Next, set the correct permissions for the directories:
# sudo chmod 2770 /private/ # sudo chmod 2775 /public
Note: The value 2 at the beginning of the above commands, stands for the SGID bit. This allows newly created files to inherit the parent group.
Now you should create a no-login local user to access the private share by using the command below:
sudo useradd -M -s /sbin/nologin sambauser
Then, add the user to the Samba share group on Ubuntu 22.04 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 by using the following command:
sudo smbpasswd -e sambauser
Output Enabled user sambauser.
Verify Samba Configuration
When you are done with the above steps, you can test your Samba configuration on Ubuntu 22.04 that is working correctly or not with the following command:
Output Load smb config files from /etc/samba/smb.conf Loaded services file OK. Weak crypto is allowed Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions # Global parameters [global] log file = /var/log/samba/log.%m logging = file map to guest = Bad User max log size = 1000 obey pam restrictions = Yes pam password change = Yes panic action = /usr/share/samba/panic-action %d passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . passwd program = /usr/bin/passwd %u server role = standalone server server string = %h server (Samba, Ubuntu) unix password sync = Yes usershare allow guests = Yes idmap config * : backend = tdb [printers] browseable = No comment = All Printers create mask = 0700 path = /var/spool/samba printable = Yes [print$] comment = Printer Drivers path = /var/lib/samba/printers [public] comment = Public Folder force create mode = 0775 force directory mode = 0775 guest ok = Yes guest only = Yes path = /public read only = No [private] comment = Private Folder force create mode = 0770 force directory mode = 0770 inherit permissions = Yes path = /private read only = No valid users = @smbshare
This means that everything is configured appropriately.
Create Demo Files in Samba Share
At this point, you can create demo files in the Samba shares. To do this. you can run the following commands:
# sudo mkdir /private/demo-private /public/demo-public # sudo touch /private/demo1.txt /public/demo2.txt
To apply the changes, restart the Samba service on Ubuntu 22.04:
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
Access Share Files From Local Machine
Before you set up Samba clients, you can try accessing your share files with the command below on Ubuntu 22.04:
smbclient '\\localhost\private' -U sambauser
Output Password for [WORKGROUP\sambauser]: Try "help" to get a list of possible commands. smb: \> ls . D 0 Mon Jan 30 10:34:16 2023 .. D 0 Mon Jan 30 10:28:55 2023 demo1.txt N 0 Mon Jan 30 10:34:16 2023 demo-private D 0 Mon Jan 30 10:34:09 2023 50989420 blocks of size 1024. 44337308 blocks available smb: \>
Set up Samba Share Windows Client
At this point, we want to show you access to the share from Windows. First, open a run box using Win+R and enter your Ubuntu 22.04 IP address in the box and click Ok:
Then, the Samba shared folders on Ubuntu 22.04 should appear as below:
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
At this point, 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.
Set up Samba Linux Client
At this point, 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 Ubuntu 22.04:
sudo apt install samba-client cifs-utils
Then, navigate to File manager->Other locations and add your share using the syntax below.
Enter the credentials for the samba user. That is it! You have your Samba share on your Linux client machine.
At this point, you have learned to Install and Configure Samba Share on Ubuntu 22.04. And also, you have learned to set up Samba clients on both Windows and Linux machines.
Hope you enjoy it. You may be like these articles on the Orcacore website:
Install Fathom Analytics on Ubuntu 22.04