Overview

Samba allows you to share data between servers. Like the NFS, Samba requires a server and a client configuration.

Server Configuration

The samba can be installed using the yum repository:

[root@ag-hk-backup1 ~]# yum install samba
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: centos.01link.hk
 * extras: centos.01link.hk
 * updates: centos.01link.hk
Resolving Dependencies
--> Running transaction check
---> Package samba.x86_64 0:4.7.1-6.el7 will be installed
--> Processing Dependency: samba-libs = 4.7.1-6.el7 for package: samba-4.7.1-6.el7.x86_64
--> Processing Dependency: samba-common-tools = 4.7.1-6.el7 for package: samba-4.7.1-6.el7.x86_64
--> Processing Dependency: samba-common-libs = 4.7.1-6.el7 for package: samba-4.7.1-6.el7.x86_64
--> Processing Dependency: samba-common = 4.7.1-6.el7 for package: samb
Dependencies Resolved

============================================================================================================================================================================
 Package                                        Arch                               Version                                        Repository                           Size
============================================================================================================================================================================
Installing:
 samba                                          x86_64                             4.7.1-6.el7                                    base                                661 k
Installing for dependencies:
 pytalloc                                       x86_64                             2.1.10-1.el7                                   base                                 17 k
 samba-common-libs                              x86_64                             4.7.1-6.el7                                    base                                162 k
 samba-common-tools                             x86_64                             4.7.1-6.el7                                    base                                463 k
 samba-libs                                     x86_64                             4.7.1-6.el7                                    base                                275 k
Updating for dependencies:
 dbus                                           x86_64                             1:1.10.24-7.el7                                base                                245 k
 dbus-libs                                      x86_64                             1:1.10.24-7.el7                                base                                169 k
 krb5-libs                                      x86_64                             1.15.1-19.el7                                  updates                             747 k
 krb5-workstation                               x86_64                             1.15.1-19.el7                                  updates                             814 k
 libkadm5                                       x86_64                             1.15.1-19.el7                                  updates                             175 k
 libldb                                         x86_64                             1.2.2-1.el7                                    base                                131 k
 libsmbclient                                   x86_64                             4.7.1-6.el7                                    base                                132 k
 libtalloc                                      x86_64                             2.1.10-1.el7                                   base                                 33 k
 libtdb                                         x86_64                             1.3.15-1.el7                                   base                                 48 k
 libtevent                                      x86_64                             0.9.33-2.el7                                   base                                 37 k
 libwbclient                                    x86_64                             4.7.1-6.el7                                    base                                107 k
 samba-client-libs                              x86_64                             4.7.1-6.el7                                    base                                4.8 M
 samba-common                                   noarch                             4.7.1-6.el7                                    base                                205 k

Transaction Summary
============================================================================================================================================================================
Install  1 Package  (+ 4 Dependent packages)
Upgrade             ( 13 Dependent packages)
Installed:
  samba.x86_64 0:4.7.1-6.el7

Dependency Installed:
  pytalloc.x86_64 0:2.1.10-1.el7        samba-common-libs.x86_64 0:4.7.1-6.el7        samba-common-tools.x86_64 0:4.7.1-6.el7        samba-libs.x86_64 0:4.7.1-6.el7

Dependency Updated:
  dbus.x86_64 1:1.10.24-7.el7              dbus-libs.x86_64 1:1.10.24-7.el7        krb5-libs.x86_64 0:1.15.1-19.el7         krb5-workstation.x86_64 0:1.15.1-19.el7
  libkadm5.x86_64 0:1.15.1-19.el7          libldb.x86_64 0:1.2.2-1.el7             libsmbclient.x86_64 0:4.7.1-6.el7        libtalloc.x86_64 0:2.1.10-1.el7
  libtdb.x86_64 0:1.3.15-1.el7             libtevent.x86_64 0:0.9.33-2.el7         libwbclient.x86_64 0:4.7.1-6.el7         samba-client-libs.x86_64 0:4.7.1-6.el7
  samba-common.noarch 0:4.7.1-6.el7

Complete!

Location Configuration

After the installation, you have to edit the configuration file, located in: /etc/samba/smb.conf Here you can see an example of smb.conf file:

# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.

[global]
        workgroup = SAMBA
        security = user

        server role = standalone
        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw

[homes]
        comment = Home Directories
        valid users = %S, %D%w%S
        browseable = No
        read only = No
        inherit acls = Yes

[printers]
        comment = All Printers
        path = /var/tmp
        printable = Yes
        create mask = 0600
        browseable = No

[print$]
        comment = Printer Drivers
        path = /var/lib/samba/drivers
        write list = root
        create mask = 0664
        directory mask = 0775
[casino]
  comment = Casino Backups
  browseable = no
  read only = no
  create mask = 0700
  directory mask = 0700
  path = /backup/databases/    <- Shared location
  valid users = mssql   <- Users allowed to use the shared location.

User Configuration

Once we have it set up, we have to configure samba user, the same as the valid users, depending on the configuration you want: Let's configure a single user.

[root@ag-hk-backup1 databases]# groupadd backup
[root@ag-hk-backup1 databases]# useradd mssql -G backup
[root@ag-hk-backup1 databases]# smbpasswd -a mssql
New SMB password:
Retype new SMB password:
Added user mssql.
[root@ag-hk-backup1 databases]# ls -alrt

This will define a UNIX group “backup” and a user “mssql” to that group. After, we set up a password for that user in Samba using the “smbpasswd” command. Remember tat if the user is used for SQL Server backup, the password for the samba user (mssql) should be the same as the mssql user on the Windows server.

Permission Configuration

Be sure to define the permission for the shared location, in order to prevent other users from modifying the shared location:

[root@ag-hk-backup1 databases]# chown mssql:mssql ag-ph-csql1
[root@ag-hk-backup1 databases]# ls -lart
total 36
drwxr-xr-x. 2 mssql  mssql  4096 Aug 24  2017 ag-ph-csql1

Start Service

After the samba is configure we can start the samba service:

[root@ag-hk-backup1 databases]# service smb restart
Redirecting to /bin/systemctl restart  smb.service
[root@ag-hk-backup1 databases]#

Client Configuration

On the Client server (Windows), we can just access it using the windows explorer.

Monitoring

You can monitor the sessions and connections of the samba share as follows:

[root@ag-hk-backup1 casino]# smbstatus -v
using configfile = /etc/samba/smb.conf

Samba version 4.7.1
PID     Username     Group        Machine                                   Protocol Version  Encryption           Signing
----------------------------------------------------------------------------------------------------------------------------------------
13793   mssql        mssql        10.80.5.100 (ipv4:10.80.5.100:50122)      SMB3_02           -                    partial(AES-128-CMAC)

Service      pid     Machine       Connected at                     Encryption   Signing
---------------------------------------------------------------------------------------------
casino       13793   10.80.5.100   Fri Aug 10 11:30:05 AM 2018 CEST -            -

Locked files:
Pid          Uid        DenyMode   Access      R/W        Oplock           SharePath   Name   Time
--------------------------------------------------------------------------------------------------
13793        1000       DENY_NONE  0x100080    RDONLY     NONE             /backup/databases/ag-ph-csql1   .   Fri Aug 10 11:30:05 2018
13793        1000       DENY_ALL   0x12019f    RDWR       LEASE(RWH)       /backup/databases/ag-ph-csql1   casino/casino_backup_2018_08_10_093001_1467163.bak   Fri Aug 10 11:30:27 2018