Saturday, December 28, 2024
Google search engine
HomeGuest BlogsHow to Install Samba in Ubuntu

How to Install Samba in Ubuntu

Introduction

Samba is an open-source utility that enables file sharing between machines running on a single network. It enables Linux machines to share files with machines running different operating systems, such as Windows.

This tutorial teaches you how to install and configure Samba in Ubuntu 20.04 or 22.04.

How to Install and Configure Samba in UbuntuHow to Install and Configure Samba in Ubuntu

Prerequisites

  • Ubuntu system (this guide uses Ubuntu 22.04. The same steps work on Ubuntu 20.04).
  • Sudo privileges.
  • A text editor (this tutorial uses Vim).

How to Install and Configure Samba on Ubuntu

Most Linux package managers have Samba in their default repository. To configure Samba on Ubuntu, follow the steps below:

Step 1: Install Samba

1. Start by updating the package registry:

sudo apt update
sudo apt update terminal outputsudo apt update terminal output

2. Next, use apt to install Samba. Include the -y argument to auto-approve any queries during the installation:

sudo apt install samba -y
installing Samba terminal outputinstalling Samba terminal output

3. Verify the installation with:

whereis samba
whereis samba terminal outputwhereis samba terminal output

The output prints the directory containing Samba. Another method of verifying the installation is by checking the Samba version:

samba -V
samba -V terminal outputsamba -V terminal output

The output shows that the system installed Samba version 4.16.4.

4. Lastly, confirm that Samba is running with:

systemctl status smbd
systemctl status smbd terminal outputsystemctl status smbd terminal output

The output shows that the smbd service is enabled and running.

Step 2: Create a Shared Directory

1. To share files with Samba, create a directory containing files for sharing. Use mkdir -p to create the directory under /home:

For example, make a directory called sharing with:

sudo mkdir -p /home/sharing

2. Use ls to verify the outcome.

ls
sudo mkdir -p and ls terminal outputsudo mkdir -p and ls terminal output

Step 3: Configure Samba’s Global Options

Configure Samba by editing the smb.conf file located in /etc/samba/smb.conf.

Access the file with Vim:

sudo vim /etc/samba/smb.conf

Next, scroll down to the Global Settings section. Use this section to configure the Samba server’s behavior, name, role, and network interfaces.

Opening Samba configuration file in VimOpening Samba configuration file in Vim

Note: Certain settings in the smb.conf file are marked as comments. To enable and tweak those settings, uncomment them.

The key parameters to consider are in the following subsections:

Browsing/Identification

The Browsing subsection contains the workgroup and server string parameters:

  • The workgroup parameter enables file sharing between a group of computers over a local area network. Ensure the workgroup settings correspond to the ones on Windows.
  • The server string setting identifies the Samba server. In our example, the server is named samba_server.

Note: To set the workgroup settings on Windows 10, open the Control Panel and access the System and Security settings. The workgroup parameter is under the System section.

To configure the identification settings, uncomment the workgroup and server string parameters and add these values:

workgroup = WORKGROUP
server string = samba_server
Browsing subsection Global SettingsBrowsing subsection Global Settings

Networking

Use the Networking subsection to configure network interfaces that Samba binds to. Networking contains two parameters:

  • The first parameter, interfaces, sets the network interface for Samba to bind to.
  • The second parameter, bind interfaces only, ensures that Samba only binds to the interfaces listed in the file. The parameter should always be set to yes.
Networking subsection Global SettingsNetworking subsection Global Settings

To set the interfaces parameter, first check the available interfaces with the ip command:

ip link
ip link terminal outputip link terminal output

The example output indicates Samba binds to two interfaces: lo, the loopback interface, and enp0s3, the network interface.

For example, in this case, the settings are:

interfaces = lo enp0s3
bind interfaces only = yes

Note: The network interfaces Samba binds to may differ from one machine to another.

Debugging

The Debugging subsection has four parameters. Set them as follows:

log file = /var/log/samba/log.%m
max log size = 1000
logging = file
panic action = /usr/share/samba/panic-action %d
Debugging subsection Global SettingsDebugging subsection Global Settings

Authentication, Domain, and Misc

The most significant Authentication parameter is server role. This parameter determines the server type for Samba.

1. Set Samba as a standalone server:

server role = standalone server
server role: = standalone serverserver role: = standalone server

The following is an extensive list of other authentication settings:

obey pam restrictions = yes

unix password sync = yes

passwd program = /usr/bin/passwd

passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .

pam password change = yes

map to guest = bad user
Authentication subsection Global SettingsAuthentication subsection Global Settings

2. Do not change any settings in the Domain subsection, but scroll down to Misc and set the following:

usershare allow guests = yes
Misc subsection Global SettingsMisc subsection Global Settings

Keep all other Global Settings unchanged.

3. Save and exit the file and run the Samba utility testparm to check for syntax errors:

testparm
testparm terminal outputtestparm terminal output

The output shows the Loaded services file OK message, which signifies no syntax errors. With Global Settings configured, the Samba server is ready to use.

Still, not configuring the users and the directory limits the Samba functionality.

Step 4: Set Up a User Account

1. To create a user account, set a username and password with:

sudo smbpasswd -a username

Note that the username should belong to a system user. For instance, in this example, the system account on the Ubuntu system is saraz. Hence, the username is the same:

sudo smbpasswd -a saraz
sudo smbpasswd -a terminal outputsudo smbpasswd -a terminal output

2. To add a new user to Samba and the system, use adduser:

sudo adduser username

For instance, add new_user to the system with:

sudo adduser new_user
sudo adduser terminal outputsudo adduser terminal output

3. After entering and confirming the system password for new_user, create a new Samba user with:

sudo smbpasswd -a new_user
Creating new_user terminal outputCreating new_user terminal output

Next, both users need to have read, write and execute access to the sharing directory. However, saraz has these permissions by default. On the other hand, new_user does not.

4. To grant read, write, and execute permissions to the sharing directory, run setfacl:

sudo setfacl -R -m "u:new_user:rwx" /home/sharing

The command doesn’t produce any output.

Step 5: Configure Samba Share Directory Settings

1. Access the configuration file once again to add the previously made sharing directory. Go to the end of the file and add:

[sharing]
comment = Samba share directory
path = /home/sharing
read only = no
writable = yes
browseable = yes
guest ok = no
valid users = @saraz @new_user
sharing settings in Vimsharing settings in Vim

Each line grants specific permissions to access the directory. For instance:

  • [sharing}. Represents the directory name. This is the directory location Windows users see.
  • comment. Serves as a shared directory description.
  • path. This parameter specifies the shared directory location. The example uses a directory in /home, but users can also place the shared files under /samba.
  • read only. This parameter allows users to modify the directory and add or change files when set to no.
  • writeable. Grants read and write access when set to yes.
  • browseable. This parameter allows other machines in the network to find the Samba server and Samba share when set to yes. Otherwise, users must know the exact Samba server name and type in the path to access the shared directory.
  • guest ok. When set to no, this parameter disables guest access. Users need to enter a username and password to access the shared directory.
  • valid users. Only the users mentioned have access to the Samba share.

2. Save the changes and exit the file.

3. Rerun testparm:

testparm terminal output after the configurationtestparm terminal output after the configuration

The output confirms that the Samba is adequately configured. For a more verbose output, hit enter:

Hitting enter after testparm Hitting enter after testparm

Step 6: Update the Firewall Rules

To ensure the Linux firewall allows Samba traffic, run:

sudo ufw allow samba
sudo ufw allow samba terminal outputsudo ufw allow samba terminal output

Step 7: Connect to the Shared Directory

1. Before connecting to the Samba server, restart the services with:

sudo systemctl restart smbd

The command prints no output.

2. To connect to the shared directory via GUI, access the default file manager and choose the Other Locations option:

Access other locationsAccess other locations

3. Type the following into the Enter server address… box and select Connect:

smb://ip-address/sharing
Connect to serverConnect to server

4. The system asks for a Username and Password. Provide the requested info and click Connect again:

Enter credentialsEnter credentials

5. This adds the sharing directory to the Windows shares location:

Windows sharesWindows shares

Conclusion

After reading this tutorial, you now know how to install and configure Samba on Ubuntu.

Next, learn essential Linux commands with this handy Linux commands cheat sheet.

Was this article helpful?
YesNo

RELATED ARTICLES

Most Popular

Recent Comments