Samba en LDAP

Submitted by Frederik Vos on Sun, 06/13/2010 - 19:17

In dit document wordt een Samba setup beschreven waarbij de authenticatie plaats vind via LDAP. Hierbij wordt er vanuit gegaan dat er reeds een LDAP server aanwezig is.

Benodigdheden

Deze setup is getest onder CentOS 5.5 die steeds up-to-date wordt gehouden via Yum. De installatie van CentOS beschrijf ik hier niet, maar de setup gaat uit van een "Server Installation - without GUI". Dus alles wordt ook met de command-line geconfigureerd.

Ook is er een extra repository nodig om aan alle dependencies te kunnen voldoen. Het gaat hierbij om de repository van Dag Wieers. Het toevoegen van deze installatiebron gaat als volgt:

rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6...

Open nu het bestand /etc/yum.repos.d/rpmforge.repo in je favoriete editor. En disable de rpmforge directory:

enabled = 0

Dit is benodigd, want anders wordt er een update gedaan van je systeem, waarbij je de stabiliteit niet kunt garanderen. Niet iets wat je op je server wilt doen !

Installatie

Allereerst gaan we Samba zelf installeren met een paar extra benodigdheden:

yum install system-config-samba samba-client samba-common samba openldap-clients nss_ldap perl-LDAP

Nu nog de benodigdheden uit de eerder genoemde extra repository:

 yum --enablerepo=rpmforge install perl-Unicode-MapUTF8
 yum --enablerepo=rpmforge install perl-Crypt-SmbHash

En als laatste stap moeten de smbldap-tools geinstalleerd, een serie scripts om de configuratie tot stand te brengen. Ook die wordt niet meegeleverd met CentOS. Je vindt deze hier: http://gna.org/projects/smbldap-tools.

http://download.gna.org/smbldap-tools/packages/smbldap-tools-0.9.5-1.noa...

Configuratie

Om zeker te zijn dat de hostname ok is, check met:

hostname -f

Nu hebben we de SID nodig, een uniek nummer om je systeem mee te identificeren:

net getlocalsid

Open nu het bestand /etc/smbldap-tools/smbldap.conf in je favoriete editor.

  • Pas op regel 37 het SID aan met het nummer dat je zojuist verkregen hebt.
  • Op regel 42 pas je het sambaDomain aan. Bij mij is dat L4L.
  • Op regel 61 zet je een #-teken voor slaveLDAP, idem op regel 65 voor slavePort.
  • Op regel 70 pas je de masterLDAP aan, met daarin het ip adres van je ldap server (of dns naam).
  • Op regel 81:  ldapTLS="0"
  • Op regel 107 pas je de suffix aan, bij mij is dat: dc="l4l,dc=be"
  • Op regel 191 pas je userSmbHome aan: "\\hostname\%u". IPV hostname vul je de output in van hostname -s, bijvoorkeur in hoofdletters
  • Op regel 197, userProfile idem dito.
  • Op regel 213 het mailDomain aanpassen, bij mij l4l.be.

Open nu het bestand /etc/smbldap-tools/smbldap_bind.conf:

  • Plaats # tekens voor slaveDN en slavePw
  • MasterDN aanpassen, bij mij is dat: masterDN="cn=Manager,dc=l4l,dc=be"
  • MasterPw aanpassen...

Vanwege het wachtwoord, de restricties op het bestand wat aanpassen:

chmod 600 smbldap_bind.conf

Nu moet je het Samba schema kopieren naar de LDAP server:

scp /usr/share/doc/samba-3.0.33/LDAP/samba.schema LDAPSERVER:/etc/openldap/schema/

(Vergeet niet LDAPSERVER te vervangen door juiste hostname/ip)

Open nu op de LDAP Server het bestand /etc/openldap/slapd.conf, en voeg onder de andere includes (bovenaan in het bestand) de volgende include toe:

include         /etc/openldap/schema/samba.schema

Vervolgens onder regel 79 (rootdn can always...) het volgende:

access to attrs=userPassword,sambaLMPassword,sambaNTPassword,shadowLastChange
	by dn.children="ou=admin,dc=l4l,dc=be" write
	by self write
	by anonymous auth
	by * none
access to *
	by dn.children="ou=admin,dc=l4l,dc=be" write
	by * read

Herstart nu de LDAP server:

service ldap restart

Op de Samba server voer je het volgende commando uit om de Ldap users en groepen aan te maken:

smbldap-populate

Nu gaan we de admin gebruiker aanmaken, op de LDAP server:

smbldap-useradd -A0 -B0 -G "Domain Users" -N "Voornaam" -S "Achternaam" -m -a -o -P gebruiker

We switchen nu naar de Samba server en activeren ldap support:

authconfig --enableldap --enableldapauth --ldapserver=LDAPSERVER --ldapbasedn=dc=l4l,dc=be --update

Als laatste stap Samba configureren. Een voorbeeld /etc/samba/smb.conf bestand:

[global]
workgroup = L4L
ldap admin dn = cn=Manager,dc=l4l,dc=be
ldap suffix = dc=l4l,dc=be 

passdb backend = ldapsam:ldap://192.168.20.38/
domain master = yes
domain logons = yes
security = user
ldap group suffix = ou=Groups
ldap user suffix = ou=People
ldap machine suffix = ou=Computers

passwd program = /usr/sbin/smbldap-passwd %u
unix password sync = no

[homes]
       comment = Home Directories
       browseable = no
       writable = yes
       valid users = %S, %D%w%S
       read-only = no 
       directory mask = 0750
       inherit acls = yes

[netlogon]
       comment = Network Logon Service
       path = /var/lib/samba/netlogon
       guest ok = yes
       writable = no
       share modes = no
 
[Profiles]
       path = /var/lib/samba/profiles
       browseable = no
       guest ok = yes

De profiles en netlogon directory moeten nog worden aangemaakt:

mkdir /var/lib/samba/{netlogon,profiles} -p

Start nu Samba met:

service smb start