Samba is a free and open-source Server Message Block protocol that provides file and print services between clients across various operating systems. Samba allows you to share files and directories between Linux and Windows operating systems. It can also integrate with a Microsoft Windows Server domain, either as a Domain Controller (DC) or as a domain member.

In this post, we will show you how to install the Samba server and create a private and public share on Oracle Linux 8.

Step 1 – Install Samba Server

By default, the Samba server package is included in the Oracle Linux default repo. You can install it easily using the following command:

dnf update -y
dnf install samba samba-common samba-client -y

Once the Samba packages are installed, start and enable the smb and nmb services with the following command:

systemctl start smb
systemctl enable smb
systemctl start nmb
systemctl enable nmb

Step 2 – Create a Public Share

In this section, we will show you how to create a public share on Samba so that everyone can access it without authentication.

First, create a directory for the public share and provide the necessary permissions:

mkdir -p /data/public
touch /data/public/public.txt
chmod -R 755 /data/public
chown -R nobody:nobody /data/public

Next, backup the default Samba configuration file and create a new one with the following command:

mv /etc/samba/smb.conf  /etc/samba/smb.conf.bak
nano /etc/samba/smb.conf

Add the following configuration:

[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = Oracle Linux 8
security = user
map to guest = bad user
dns proxy = no

[Public]
path = /data/public
writable = yes
guest ok = yes
read only = no

Save and close the file, then restart the smb and nmb services to apply the changes:

systemctl restart smb
systemctl restart nmb

Step 3 – Create a Private Share

In this section, we will show you how to create a private share on Samba so that the user needs to authenticate to Samba to access the share.

First, create a user and group with the following command

groupadd private
useradd -g private private

Next, create a directory for the private share and provides the necessary permissions:

mkdir -p /data/private
touch /data/private/private.txt
chmod -R 755 /data/private
chown -R root:private /data/private

Next, set the password for the private user with the following command:

smbpasswd -a private

Set your password as shown below:

New SMB password:
Retype new SMB password:
Added user private.

Next, edit the Samba configuration file with the following command:

nano /etc/samba/smb.conf

Add the following configurations at the end of the file:

[Private]
path = /data/private
valid users = @private
guest ok = no
writable = yes
browsable = yes

Save and close the file, then restart the smb and nmb service to apply the changes:

systemctl restart smb
systemctl restart nmb

Step 4 – Install Samba Client and Access the Samba Share

Next, go to the remote machine and install the Samba client with the following command:

dnf install samba-client cifs-utils -y

Next, run the following command to access the private share:

smbclient //server-IP/private -U private

You will be asked to provide your password to access the private share:

Password for [WORKGROUP\private]:

Once you are authenticated, you will get the following output:

Try "help" to get a list of possible commands.
smb: \>

Next, run the following command to list all files inside the private share:

smb: \> ls

You will get the following output:

  .                                   D        0  Fri Sep 16 03:06:25 2022
  ..                                  D        0  Fri Sep 16 03:06:19 2022
  private.txt                         N        0  Fri Sep 16 03:06:25 2022

		83873792 blocks of size 1024. 75576444 blocks available

Next, exit from the Samba shell with the following command:

smb: \> exit

To access the public share, run the following command:

smbclient //server-IP/public

You should see the password prompt:

Password for [WORKGROUP\root]:

Just press the Enter key to connect to the Samba shell:

Try "help" to get a list of possible commands.

smb: \>

Next, list all files inside the public share with the following command:

smb: \> ls

You should see the following output:

  .                                   D        0  Fri Sep 16 03:04:35 2022
  ..                                  D        0  Fri Sep 16 03:06:19 2022
  public.txt                          N        0  Fri Sep 16 03:04:35 2022

		83873792 blocks of size 1024. 75576424 blocks available

Next, exit from the Samba shell with the following command:

smb: \> exit

Conclusion

In this post, we explained how to install the Samba server and create a private and public share on Oracle Linux 8. You can now easily share files and directories between multiple machines easily. Try it on VPS hosting from Atlantic.Net!