How to install and enable Samba in Linux mint

Samba is a free implementation of the Microsoft Windows file sharing protocol (formerly called SMB, later renamed to CIFS) for UNIX-like systems. Why is it important? By installing Samba on Linux Mint, you can share resources and folders with Windows computers. Best of all, it is integrated from the file browser.

Samba is an open-source project that implements the Windows file sharing protocol for UNIX-like operating systems, such as Linux. The main feature of this application is that Linux computers can interact in a stable and efficient way with Windows networks.

What do I mean by interacting? Well, with Samba you can:

  • Share various file systems.
  • Share printers, with installation on the server as well as on the clients.
  • Provide or assist with a WINS name resolution server.

Linux Mint and Ubuntu, which are two of the most widely used distributions in all of Linux, provide packages and configurations, so you can install without too much hassle.

Installing and enabling a Samba server in Linux Mint

Before you begin, it’s a good idea to update the entire operating system.

Open a terminal by pressing the CTRL + ALT + T keys or from the main menu. Then, run

sudo apt update
sudo apt upgrade

After this, you can install the samba package, which is the main package of the protocol.

sudo apt install samba
Install and enable Samba on Linux Mint
Install and enable Samba on Linux Mint

Samba runs as a system service, so you will need to enable it and run it to start up

sudo systemctl enable --now smbd
Synchronizing state of smbd.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable smbd

If you want to check that everything is OK, you can run

sudo systemctl status smbd

This command will check the status of the Samba service.

Sample Output

● smbd.service - Samba SMB Daemon
     Loaded: loaded (/lib/systemd/system/smbd.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-12-16 22:36:11 UTC; 9s ago
       Docs: man:smbd(8)
             man:samba(7)
             man:smb.conf(5)
   Main PID: 2204 (smbd)
     Status: "smbd: ready to serve connections..."
      Tasks: 4 (limit: 2258)
     Memory: 10.4M
        CPU: 121ms
     CGroup: /system.slice/smbd.service
             ├─2204 /usr/sbin/smbd --foreground --no-process-group
             ├─2206 /usr/sbin/smbd --foreground --no-process-group
             ├─2207 /usr/sbin/smbd --foreground --no-process-group
             └─2208 /usr/lib/x86_64-linux-gnu/samba/samba-bgqd --ready-signal-fd=45 --parent-watch-fd=11 --debuglevel=0 -F

Dec 16 22:36:11 imaginelinux systemd[1]: Starting Samba SMB Daemon...
Dec 16 22:36:11 imaginelinux update-apparmor-samba-profile[2198]: grep: /etc/apparmor.d/samba/smbd-shares: No such file or directory
Dec 16 22:36:11 imaginelinux update-apparmor-samba-profile[2201]: diff: /etc/apparmor.d/samba/smbd-shares: No such file or directory
Dec 16 22:36:11 imaginelinux systemd[1]: Started Samba SMB Daemon.

Configuring Samba to share a folder

The main goal of installing and configuring Samba is to make the machine able to interact with Windows machines by sharing files.

So first, it is necessary to back up the Samba configuration file. Because it is useful to have it in case there are problems with the new configuration.

sudo cp /etc/samba/smb.conf{,.bak}

This way it will be backed up.

Now you can create a public folder which, while not recommended, can be useful for quick sharing.

So, first create it and assign it the appropriate permissions

sudo mkdir -p /var/public/
sudo chmod -R 0777 /var/public

As you can imagine, you can set the path and folder name to whatever values you prefer.

It is recommended that, as it is a public folder, it does not belong to any user on the system. To do this.

sudo chown -R nobody:nogroup /var/public

And configure it to be used by Samba.

sudo chgrp sambashare /var/public

For testing purposes, you can create an empty file or something so that the process is noticeable

sudo touch /var/public/imaginelinux.txt

Then, edit the Samba configuration file to add the new configuration related to this new folder.

sudo nano /etc/samba/smb.conf

At the bottom of the file, you can add the following settings

[public]
   path = /var/public
   browseable = yes
   guest ok = yes
   guest only = yes
   read only = no
   force user = nobody
   force create mode = 0777
   force directory mode = 0777

What these lines of code do is the following

  • Sets the directory path
  • Makes it navigable and will be used only by guest users
  • It is editable

The rest are security settings that make the folder unusable with permissions besides those set and by different users.

Save the changes and close the editor.

To apply the changes, simply restart the server

sudo systemctl restart smbd

Remember that you can check the status of the service

sudo systemctl status smbd

Finally, using the Linux Mint file browser, you can make the connection

Using the public folder with Samba
Using the public folder with Samba

It is best to do this from the address bar.

Recommended: Creating a private folder in Samba

If you want to create a private folder to improve security and control access to it then there are a few more steps to take

First create a group for Samba

sudo addgroup samba

Then add the user to the group. You can also create it if it doesn’t exist.

sudo usermod -aG samba user

Of course, you can choose a name besides user.

Now use samba to set a password for this user. Don’t confuse this password with the system password, you may want it to be a different one.

sudo smbpasswd -a user

Sample Output:

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

Now create the private folder with the required permissions

sudo mkdir -p /smb/private
sudo chmod -R 0770 /smb/private

Again, you can assign the path of your choice.

Change the owner of the folder

sudo chown -R root:samba /smb/private

Again edit the Samba configuration file

sudo nano /etc/samba/smb.conf

And at the end, add:

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

Save the changes and close the editor.

To apply the changes, restart the Samba service

sudo systemctl restart smbd

Open your file browser, and you should see the changes made. For example, try to access the private folder.

Configuring Samba with a private folder
Configuring Samba with a private folder

You will be prompted for a username and password. Enter them, and you should be able to quickly access them.

Conclusion

Samba is an important tool with which you can share files between Windows and Linux systems, but also between Linux clients only. Because it is so flexible, it has many options to increase security.

I hope you liked this post and can share it with friends.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top