Home / How to configure a Samba server with SSSD in CentOS 7 or 8

How to configure a Samba server with SSSD in CentOS 7 or 8

The idmap sss module has some restrictions when used with CentOS 7. As a result, it is currently not advised to utilize the idmap sss module for Samba file servers registered with AD domains.

If you are configuring a CentOS 8 or above version, you must run the following command. The system must be rebooted to execute this command.

You must run the following command while configuring a CentOS 8 or higher version. The system must be rebooted to execute this command.

# update-crypto-policies --set DEFAULT:AD-SUPPORT

Login to the server as root user and install SSSD and Samba packages as follows.

# yum install realmd oddjob oddjob-mkhomedir sssd adcli samba samba-winbind krb5-workstation

Connect to the server using the realm command.

# realm  discover testlab.centos.com

# realm  join testlab.centos.com -U Administrator --client-software=sssd --membership-software=samba 

In /etc/sssd/sssd.conf. In the example [domain/testlab.centos.com] section. Add the following.

ad_update_samba_machine_account_password = True

Start SSSD service.

# systemctl stop sssd ; rm -f /var/lib/sss/db/* ; systemctl start sssd

Verify that AD user lookup and authentication are functioning correctly.

# id <AD Username>
# kinit <AD Username>
# klist

Install and remove packages.

# yum remove sssd-libwbclient
# yum install sssd-winbind-idmap

Configure /etc/samba/smb.conf file as follows.

[global]

    realm = TESTLAB.CENTOS.COM
    workgroup = TESTLAB
    security = ads
    kerberos method = secrets and keytab 
    template homedir = /home/%U
    idmap config * : backend = tdb
    idmap config * :  range = 10000-199999
    idmap config TESTLAB : backend = sss
    idmap config TESTLAB : range = 200000-2147483647
    load printers = no
    printing = bsd
    printcap name = /dev/null
    disable spoolss = yes
    machine password timeout = 0 

[test]

    comment = Test Share
    path = /testshare
    read only = No
    valid users = <AD Username>

Start smb service.

# systemctl start smb

Create a test share directory.

# mkdir /testshare
# chcon -t samba_share_t /testshare
# chmod 770 /testshare
# chown <AD Username>:<GroupName> /testshare

Enable and start the samba service.

# systemctl enable smb ; systemctl enable winbind ; systemctl restart smb ; systemctl restart winbind

Enable samba in firewalld.

# firewall-cmd --add-service=samba
# firewall-cmd --add-service=samba --permanent

Check if Samba share access based on an AD user is functional.

# kinit <AD Username>
# smbclient -L `hostname` -k
# smbclient //`hostname`/test -k

In the steps above, replace every instance of "AD Username" or "GroupName" with the appropriate user name or group.

Leave a Reply