You are on page 1of 21

How to Install and Configure Samba on CentOS 7 | Linuxize https://linuxize.

com/post/how-to-install-and-configure-samba-on-centos-7/

How to Install and Configure Samba on CentOS 7


Posted  Feb 27, 2019 • 9 min read

Samba is a free and open-source re-implementation of the SMB/CIFS network file


sharing protocol that allows end users to access files, printers, and other shared
resources.

In this tutorial, we will show how to install Samba on CentOS 7 and configure it as a
standalone server to provide file sharing across different operating systems over a
network.

We’ll create the following Samba shares and users.

1 of 21 28/03/2022, 20:00
How to Install and Configure Samba on CentOS 7 | Linuxize https://linuxize.com/post/how-to-install-and-configure-samba-on-centos-7/

Users:

• sadmin - An administrative user with read and write access to all shares.

• josh - A regular user with its own private file share.

Shares:

• users - This share will be accessible with read/write permissions by all users.

• josh - This share will be accessible with read/write permissions only by users josh and
sadmin.

The file shares will be accessible from all devices on your network. Later in the tutorial,
we will also provide detailed instructions on how to connect to the Samba server from
Linux, Windows and macOS clients.

Prerequisites

Before you begin, make sure you are logged in to your CentOS 7 system as a user with
sudo privileges .

Installing Samba on CentOS


Samba is available from the standard CentOS repositories. To install it on your CentOS
system run the following command:

$ sudo yum install samba samba-client

2 of 21 28/03/2022, 20:00
How to Install and Configure Samba on CentOS 7 | Linuxize https://linuxize.com/post/how-to-install-and-configure-samba-on-centos-7/

Once the installation is completed, start the Samba services and enable them to start
automatically on system boot:

$ sudo systemctl start smb.service


$ sudo systemctl start nmb.service

$ sudo systemctl enable smb.service


$ sudo systemctl enable nmb.service

The smbd service provides file sharing and printing services and listens on TCP ports 139
and 445. The nmbd service provides NetBIOS over IP naming services to clients and
listens on UDP port 137.

Configuring Firewall
Now that Samba is installed and running on your CentOS machine, you’ll need to
configure your firewall and open the necessary ports. To do so, run the following
commands:

$ firewall-cmd --permanent --zone=public --add-service=samba


$ firewall-cmd --zone=public --add-service=samba

Creating Samba Users and Directory Structure


For easier maintainability and flexibility instead of using the standard home directories
( /home/user ) all Samba directories and data will be located in the /samba directory.

3 of 21 28/03/2022, 20:00
How to Install and Configure Samba on CentOS 7 | Linuxize https://linuxize.com/post/how-to-install-and-configure-samba-on-centos-7/

Start by creating the /samba directory:

$ sudo mkdir /samba

Create a new group named sambashare . Later we will add all Samba users to this group.

$ sudo groupadd sambashare

Set the /samba directory group ownership to sambashare :

$ sudo chgrp sambashare /samba

Samba uses Linux users and group permission system but it has its own authentication
mechanism separate from the standard Linux authentication. We will create the users
using the standard Linux useradd tool and then set the user password with the
smbpasswd utility.

4 of 21 28/03/2022, 20:00
How to Install and Configure Samba on CentOS 7 | Linuxize https://linuxize.com/post/how-to-install-and-configure-samba-on-centos-7/

As we mentioned in the introduction, we’ll create a regular user that will have access to
its private file share and one administrative account with read and write access to all
shares on the Samba server.

Creating Samba Users

To create a new user named josh , use the following command:

$ sudo useradd -M -d /samba/josh -s /usr/sbin/nologin -G sambashare josh

The useradd options have the following meanings:

5 of 21 28/03/2022, 20:00
How to Install and Configure Samba on CentOS 7 | Linuxize https://linuxize.com/post/how-to-install-and-configure-samba-on-centos-7/

• -M -do not create the user’s home directory. We’ll manually create this directory.

• -d /samba/josh - set the user’s home directory to /samba/josh .

• -s /usr/sbin/nologin - disable shell access for this user.

• -G sambashare - add the user to the sambashare group.

Create the user’s home directory and set the directory ownership to user josh and
group sambashare :

$ sudo mkdir /samba/josh


$ sudo chown josh:sambashare /samba/josh

The following command will add the setgid bit to the /samba/josh directory so the
newly created files in this directory will inherit the group of the parent directory. This
way, no matter which user creates a new file, the file will have group-owner of
sambashare . For example, if you don’t set the directory’s permissions to 2770 and the
sadmin user creates a new file the user josh will not be able to read/write to this file.

$ sudo chmod 2770 /samba/josh

Add the josh user account to the Samba database by setting the user password:

$ sudo smbpasswd -a josh

You will be prompted to enter and confirm the user password.

Output
New SMB password:

6 of 21 28/03/2022, 20:00
How to Install and Configure Samba on CentOS 7 | Linuxize https://linuxize.com/post/how-to-install-and-configure-samba-on-centos-7/

Retype new SMB password:


Added user josh.

Once the password is set, enable the Samba account by typing:

$ sudo smbpasswd -e josh

Output
Enabled user josh.

To create another user repeat the same process as when creating the user josh .

Next, let’s create a user and group sadmin . All members of this group will have
administrative permissions. Later if you want to grant administrative permissions to
another user simply add that user to the sadmin group .

Create the administrative user by typing:

$ sudo useradd -M -d /samba/users -s /usr/sbin/nologin -G sambashare sadmin

The command above will also create a group sadmin and add the user to both sadmin
and sambashare groups.

Set a password and enable the user:

7 of 21 28/03/2022, 20:00
How to Install and Configure Samba on CentOS 7 | Linuxize https://linuxize.com/post/how-to-install-and-configure-samba-on-centos-7/

$ sudo smbpasswd -a sadmin


$ sudo smbpasswd -e sadmin

Next, create the Users share directory:

$ sudo mkdir /samba/users

Set the directory ownership to user sadmin and group sambashare :

$ sudo chown sadmin:sambashare /samba/users

This directory will be accessible by all authenticated users. The following command
configures write/read access to members of the sambashare group in the /samba/users
directory:

$ sudo chmod 2770 /samba/users

Configuring Samba Shares


Open the Samba configuration file and append the sections:

$ sudo nano /etc/samba/smb.conf

/etc/samba/smb.conf

[users]
path = /samba/users
browseable = yes
read only = no
force create mode = 0660
force directory mode = 2770

8 of 21 28/03/2022, 20:00
How to Install and Configure Samba on CentOS 7 | Linuxize https://linuxize.com/post/how-to-install-and-configure-samba-on-centos-7/

valid users = @sambashare @sadmin

[josh]
path = /samba/josh
browseable = no
read only = no
force create mode = 0660
force directory mode = 2770
valid users = josh @sadmin

The options have the following meanings:

• [users] and [josh] - The names of the shares that you will use when logging in.

• path - The path to the share.

• browseable - Whether the share should be listed in the available shares list. By
setting to no other users will not be able to see the share.

• read only - Whether the users specified in the valid users list are able to write to
this share.
• force create mode - Sets the permissions for the newly created files in this share.

• force directory mode - Sets the permissions for the newly created directories in this
share.
• valid users - A list of users and groups that are allowed to access the share. Groups
are prefixed with the @ symbol.

For more information about available options see the Samba configuration file
documentation page.

Once done, restart the Samba services with:

$ sudo systemctl restart smb.service


$ sudo systemctl restart nmb.service

In the following sections, we will show you how to connect to a Samba share from Linux,
macOS and Windows clients.

9 of 21 28/03/2022, 20:00
How to Install and Configure Samba on CentOS 7 | Linuxize https://linuxize.com/post/how-to-install-and-configure-samba-on-centos-7/

Connecting to a Samba Share from Linux


Linux users can access the samba share from the command line, using the file manager
or mount the Samba share.

Using the smbclient client

smbclient is a tool that allows you to access Samba from the command line. The
smbclient package is not pre-installed on most Linux distros so you will need to install it
with your distribution package manager.

To install smbclient on Ubuntu and Debian run:

$ sudo apt install smbclient

To install smbclient on CentOS and Fedora run:

$ sudo yum install samba-client

The syntax to access a Samba share is as follows:

$ mbclient //samba_hostname_or_server_ip/share_name -U username

For example to connect to a share named josh on a Samba server with IP address
192.168.121.118 as user josh you would run:

$ smbclient //192.168.121.118/josh -U josh

You will be prompted to enter the user password.

Output
Enter WORKGROUP\josh's password:

Once you enter the password you will be logged into the Samba command line interface.

10 of 21 28/03/2022, 20:00
How to Install and Configure Samba on CentOS 7 | Linuxize https://linuxize.com/post/how-to-install-and-configure-samba-on-centos-7/

Output

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


smb: \>

Mounting the Samba share

To mount a Samba share on Linux first you need to install the cifs-utils package.

On Ubuntu and Debian run:

$ sudo apt install cifs-utils

On CentOS and Fedora run:

$ sudo yum install cifs-utils

Next, create a mount point:

$ sudo mkdir /mnt/smbmount

Mount the share using the following command:

$ sudo mount -t cifs -o username=username //samba_hostname_or_server_ip/sharename /mnt/s

For example to mount a share named josh on a Samba server with IP address
192.168.121.118 as user josh to the /mnt/smbmount mount point you would run:

$ sudo mount -t cifs -o username=josh //192.168.121.118/josh /mnt/smbmount

You will be prompted to enter the user password.

11 of 21 28/03/2022, 20:00
How to Install and Configure Samba on CentOS 7 | Linuxize https://linuxize.com/post/how-to-install-and-configure-samba-on-centos-7/

Output

Password for josh@//192.168.121.118/josh: ********

Using GUI

Files, the default file manager in Gnome has a built-in option to access Samba shares.

01. Open Files and click on “Other Locations” in the sidebar.

02. In “Connect to Server”, enter the address of the Samba share in the following format
smb://samba_hostname_or_server_ip/sharename .

03. Click “Connect” and the following screen will appear:

04. Select “Registered User”, enter the Samba username and password and click
“Connect”.

12 of 21 28/03/2022, 20:00
How to Install and Configure Samba on CentOS 7 | Linuxize https://linuxize.com/post/how-to-install-and-configure-samba-on-centos-7/

05. The files on the Samba server will be shown.

Connecting to a Samba Share from macOS


In macOS, you can access the Samba Shares either from the command line or using the
default macOS file manager Finder. The following steps show how to access the share
using Finder.

01. Open “Finder”, select “Go” and click “Connect To”.

02. In “Connect To”, enter the address of the Samba share in the following format
smb://samba_hostname_or_server_ip/sharename .

13 of 21 28/03/2022, 20:00
How to Install and Configure Samba on CentOS 7 | Linuxize https://linuxize.com/post/how-to-install-and-configure-samba-on-centos-7/

03. Click “Connect” and the following screen will appear:

14 of 21 28/03/2022, 20:00
How to Install and Configure Samba on CentOS 7 | Linuxize https://linuxize.com/post/how-to-install-and-configure-samba-on-centos-7/

04. Select “Registered User”, enter the Samba username and password and click
“Connect”.

05. The files on the Samba server will be shown.

15 of 21 28/03/2022, 20:00
How to Install and Configure Samba on CentOS 7 | Linuxize https://linuxize.com/post/how-to-install-and-configure-samba-on-centos-7/

Connecting to a Samba Share from Windows


Windows users also have an option to connect to the Samba share from both command
line and GUI. The steps below show how to access the share using the Windows File
Explorer.

01. Open up File Explorer and in the left pane right-click on “This PC”.

02. Select “Choose a custom network location” and then click “Next”.

03. In “Internet or network address”, enter the address of the Samba share in the
following format \\samba_hostname_or_server_ip\sharename .

16 of 21 28/03/2022, 20:00
How to Install and Configure Samba on CentOS 7 | Linuxize https://linuxize.com/post/how-to-install-and-configure-samba-on-centos-7/

04. Click “Next” and you will be prompted to enter the login credentials as shown below:

17 of 21 28/03/2022, 20:00
How to Install and Configure Samba on CentOS 7 | Linuxize https://linuxize.com/post/how-to-install-and-configure-samba-on-centos-7/

If you like our content, please consider buying us a coffee.


Thank you for your support!

BUY ME A COFFEE

05. In the next window, you can type a custom name for the network location. The
default one will be picked up by the Samba server.
Sign up to our newsletter and get our latest tutorials and news
straight to your mailbox.

Your email... Subscribe

We’ll never share your email address or spam you.

Related Articles

18 of 21 28/03/2022, 20:00
How to Install and Configure Samba on CentOS 7 | Linuxize https://linuxize.com/post/how-to-install-and-configure-samba-on-centos-7/

DEC 30, 2019

How to Install Apache Maven on CentOS 8

DEC 26, 2019

How to Install Vagrant on CentOS 8

06. Click “Next” to move to the last screen of the connection setup wizard.

07. Click “Finish” and the files on the Samba server will be shown.

DEC 23, 2019

How to Install CouchDB on CentOS 8

19 of 21 28/03/2022, 20:00
How to Install and Configure Samba on CentOS 7 | Linuxize https://linuxize.com/post/how-to-install-and-configure-samba-on-centos-7/

Show comments (6)

© 2022 Linuxize.com
Privacy Policy Terms Contact Advertise on Linuxize

Conclusion
In this tutorial, you have learned how to install a Samba server on CentOS 7 and create
different types of shared and users. We have also shown you how to connect to the

20 of 21 28/03/2022, 20:00
How to Install and Configure Samba on CentOS 7 | Linuxize https://linuxize.com/post/how-to-install-and-configure-samba-on-centos-7/

Samba server from Linux, macOS and Windows devices.

samba centos

21 of 21 28/03/2022, 20:00

You might also like