Samba, also known as “Server Message Block,” is a Common Internet File System protocol used for sharing files, directories, and print services across a network on Linux. It allows you to grant read, write, and anonymous access permissions on a shared directory. It is extremely useful for those who use both Windows and Linux systems on their network.
In this post, we will explain how to install and use Samba to share files and directories on Ubuntu. This procedure is compatible with Ubuntu 20.04 and Ubuntu 22.04.
Step 1 – Install Samba Server
By default, the Samba package is included in the Ubuntu repository. You can install it using the following command:
apt-get install samba samba-common-bin acl -y
Once installed, start the Samba services and enable them to start at system reboot:
systemctl start smbd nmbd systemctl enable smbd nmbd
You can check the installed version of Samba with the following command:
smbd --version
Output:
Version 4.11.6-Ubuntu
Step 2 – Create a Private Share with Samba
In this section, we will show you how to create a private share using Samba so that only authenticated users can access the share.
To do so, edit the Samba main configuration file:
nano /etc/samba/smb.conf
Next, add the following lines at the end of the file:
[Private] comment = private share path = /data/private/ browseable = yes guest ok = no writable = yes valid users = @samba
Save and close the file, then create a new user with the following command:
adduser user1
You should see the following output:
Adding user `user1' ... Adding new group `user1' (1000) ... Adding new user `user1' (1000) with group `user1' ... Creating home directory `/home/user1' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for user1 Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] Y
Next, set a Samba password with the following command:
smbpasswd -a user1
You should see the following output:
New SMB password: Retype new SMB password: Added user user1.
Next, create a Samba group with the following command:
groupadd samba
Next, add user1 to the samba group:
gpasswd -a user1 samba
Next, create a shared folder that you have specified in the smb.conf file:
mkdir -p /data/private touch /data/private/file1
Next, provide read and write permissions to the Samba share:
setfacl -R -m "g:samba:rwx" /data/private
Next, check the Samba configuration file for any errors with the following command:
testparm
Next, restart the Samba service to apply the changes:
systemctl restart smbd nmbd
Step 3 – Create a Public Share with Samba
In this section, we will show you how to create a public share with Samba so everyone can access the public share without providing a username and password.
To create a public share, edit the Samba main configuration file:
nano /etc/samba/smb.conf
Add the following lines at the end of the file:
[Public] comment = public share path = /data/public/ browseable = yes writable = yes guest ok = yes
Save and close the file, then create a public directory:
mkdir -p /data/public/ touch /data/public/file2
Next, set proper permissions on the public directory:
setfacl -R -m "u:nobody:rwx" /data/public
Next, restart the Samba service to apply the changes:
systemctl restart smbd nmbd
Step 4 – Access Samba Share from Linux
In order to access the Samba share, you will need to install the Samba client on the Linux system. You can install it using the following command:
apt-get install smbclient cifs-utils -y
Next, run the following command to access the private share from the Samba server:
smbclient //samba-ip-address/private -U user1
You will be asked to provide a password for user1:
Enter WORKGROUP\user1's password: Try "help" to get a list of possible commands.
Once you are connected, run the following command to list Samba share:
smb: \> list 0: server=69.87.221.84, share=private
Next, list all the files in the private share directory:
smb: \> ls
You should see the following output:
. D 0 Sun Jun 27 08:17:58 2021 .. D 0 Sun Jun 27 08:18:13 2021 file1 N 0 Sun Jun 27 08:17:58 2021 51538400 blocks of size 1024. 47348972 blocks available
Next, exit from the Samba shell with the following command:
smb: \> exit
If you want to connect to the Public share, run the following command:
smbclient //samba-ip-address/public
Just press Enter without providing any password:
Enter WORKGROUP\root's password: Try "help" to get a list of possible commands. smb: \>
Next, run the following command to list all files in the Public share:
smb: \> ls
Output:
. D 0 Sun Jun 27 08:18:17 2021 .. D 0 Sun Jun 27 08:18:13 2021 file2 N 0 Sun Jun 27 08:18:17 2021 51538400 blocks of size 1024. 47348972 blocks available
Step 5 – Mount Samba Share on Linux
Samba also allows you to mount a shared directory to the client system so you can access and use it.
First, create a directory on the client system where you want to mount the Samba share:
mkdir /mount
Next, run the following command to mount the Private share directory to the client system:
mount -t cifs -o username=user1 //samba-ip-address/private /mount
You will be asked to provide a password of user1 to mount the directory:
Password for user1@//69.87.221.84/private: *********
Next, verify the mounted directory with the following command:
df -h
You should see your Private shared directory mounted on the /mount directory:
Filesystem Size Used Avail Use% Mounted on udev 981M 0 981M 0% /dev tmpfs 199M 2.2M 197M 2% /run /dev/sda1 50G 1.9G 46G 4% / tmpfs 994M 0 994M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 994M 0 994M 0% /sys/fs/cgroup tmpfs 199M 0 199M 0% /run/user/0 //69.87.221.84/private 50G 4.0G 46G 9% /mount
Now, access the Samba share locally using the following command:
ls /mount/
You should see the following output:
file1
Conclusion
In the above guide, you learned how to install Samba and use it to share files and directories between Linux systems. Give it a try on VPS hosting from Atlantic.Net!