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
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
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.
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.