Samba en LDAP
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