# How to Create Samba Share on Ubuntu

> URL: https://www.atlantic.net/vps-hosting/how-to-create-samba-share-on-ubuntu/ | Published: 2023-12-08 | Updated: 2025-05-13 | Author: Hitesh Jethva

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 22.04 and Ubuntu 24.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.19.5-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 May 11 08:17:58 2025
  ..                                  D        0  Sun May 11 08:18:13 2025
  file1                               N        0  Sun May 11 08:17:58 2025

		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 May 11 08:18:17 2025
  ..                                  D        0  Sun May 11 08:18:13 2025
  file2                               N        0  Sun May 11 08:18:17 2025

		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](https://www.atlantic.net/vps-hosting/) from Atlantic.Net!
