Samba
Auch Samba kann seit Version 2.x Daten aus einem LDAP Verzeichnis verwenden. Diese Fähigkeit wurde mit Erscheinen der Version 3.x noch erweitert. Besonders attraktiv ist die Verwendung von Samba mit LDAP, wenn der Zugriff auf Daten sowohl von Windows- als auch von Unix/Linux-Seite erfolgen soll. Werden beide Seiten aus dem LDAP Verzeichnis mit Daten versorgt, so ist eine konsistente Benutzerverwaltung gewährleistet.
Da sich sowhl die Schemata als auch die Konfiguration zwischen Samba Version 2.x und 3.x geändert haben wird im folgenden zwischen diesen beiden Varianten unterschieden.
Samba 2.x
Um die für Samba nötigen Klassen zur Verfügung zu stellen muss ein zusätzliches Schema in die Datei /etc/openldap/slapd.conf eingefügt werden:
... include /etc/openldap/schema/samba.schema ...
In der Datei /etc/samba/smb.conf werden schließlich die Einstellungen für LDAP vorgenommen:
[global] ... ldap admin dn = "cn=Manager,dc=mydomain,dc=de" ldap server = ldapserver.mydomain.de ldap port = 389 ldap suffix = "ou=User,o=Universitaet Erlangen-Nuernberg,c=de" ldap filter = "(&(uid=%u)(objectclass=sambaAccount))" ldap ssl = no ...
Samba 3.x
Samba 3.x bringt eigene Schemata mit die analog zur Version 2.x in die Datei /etc/openldap/slapd.conf eingetragen werden:
... include /etc/openldap/schema/samba3.schema ...
Auch die Syntax der Datei /etc/samba/smb.conf hat sich bei den LDAP Einstellungen deutlich geändert:
[global]
...
# Use this for no SSL
#passdb backend = ldapsam_compat:ldap://ldapserver.mydomain.de/
# Use this for redundant LDAP servers
#passdb backend = ldapsam:ldaps://ldapserver.mydomain.de/ ldaps://ldapserver2.mydomain.de/
# Use this for SSL
passdb backend = ldapsam:ldaps://ldapserver.mydomain.de/
ldap admin dn = cn=Manager,dc=mydomain,dc=de
ldap ssl = yes
ldap suffix = dc=mydomain,dc=de
ldap user suffix = ou=User
ldap group suffix = ou=Group
ldap machine suffix = ou=Machine
...
Zugriff aus Verzeichnis
Wenn kein anonymer Zugriff auf das Directory erfolgt so muss dem Samba Server vorher das Passwort des verwendeten LDAP Nutzers (ldap admin dn) bekannt gemacht werden. Sollte man das vergessen, so findet sich in den Log-Dateien von Samba eine Fehlermeldung:
[2005/01/12 10:05:42, 0] lib/smbldap.c:fetch_ldap_pw(312) fetch_ldap_pw: neither ldap secret retrieved! [2005/01/12 10:05:42, 0] lib/smbldap.c:smbldap_connect_system(812) ldap_connect_system: Failed to retrieve password from secrets.tdb
Ist das der Fall, so kann man das Passwort mit folgendem Kommando setzen:
linux ~# smbpasswd -w 'Passwort'
Das entsprechende Passwort wird dann in der Datei /etc/samba/secrets.tdb im Klartext abgelegt. Entsprechend wichtig ist es diese Datei vor unbefugtem Zugriff zu schützen: Nur root sollte sie lesen und schreiben können. Mit Hilfe des folgenden Kommandos kann man sich übrigens den Inhalt dieser Datei auflisten lassen:
linux ~# tdbdump /etc/samba/secrets.tdb
Damit Samba seine Einstellungen speichern kann, sollten die
verwendeten Benutzer-Accounts im LDAP auch der Objektklasse
sambaSamAccount angehören. Existiert der
Unix/Linux-Benutzer (posixAccount) bereits im Verzeichnis,
so läßt sich diese Änderung einfach durch den
Aufruf des folgenden Kommandos vornehmen:
linux ~# smbpasswd -a username New SMB password: Retype new SMB password: Added user unrzl1.
Optimierungen
Um die Suche bestimmter IDs im Verzeichnis zu verkürzen empfiehlt es sich für häfig gesuchte Attribute eigene Indices anlegen zu lassen. Einige Zeilen in /etc/openldap/slapd.conf: machen realisieren das:
... index sambaSID eq index sambaPrimaryGroupSID eq index sambaDomainName eq index default sub ...



