Samba ist eine sehr gute alternative um ohne einen Windows 2000 Server eine Windows Domäne anzulegen, allerdings muss man neue Samba Benutzer immer umständlich über die Konsole hinzufügen. Ich möchte meine Domänen Benutzer aber über mein Webinterface verwalten. Außerdem sollen die Logindaten der Benutzer für das Webinterface und die Windows Domäne die selben sein. Die beste Lösung dafür ist es die Benutzer in ein LDAP-Verzeichnis zu legen und alle Server so zu konfigurieren das sie LDAP als Benutzer-Speicher benutzen. Als Webserver verwende ich Lighttpd der ohne weiteres LDAP zur Benutzer Authentifizierung verwenden kann, mit Apache sollte das ähnlich einfach sein.
OpenLDAP installieren
Als erstes muss der LDAP Server und die ldap-utils installiert werden, unter Debian geht das ganz einfach mit:
apt-get install slapd ldap-utils
Während der Installation muss man das Passwort für den LDAP Admin abgeben und bestätigen. Um die Basis DN anzulegen muss man nach der Installation dpkg-reconfigure -plow slapd
ausführen. Dabei wird man zu erst nach dem DNS-Domainnamen gefragt auf Grund dessen die Basis-DN erstellt wird, domain.tld ergibt die Basis-DN dc=domain, dc=tld. Es ist nicht unbedingt nötig das hier ein FQDN angegeben wird. Im nächsten Schritt wird man nach dem Namen der Organisation gefragt, hier kann z.B. der Firmenname angegeben werden. Jetzt muss man nochmal das Adminpasswort neu setzen und das zu verwendende Backend wählen, HDB ist auf jeden Fall eine gute Wahl. Die nächsten Fragen kann man einfach mit Nein beantworten.
LDAP für Samba vorbereiten
Damit man in LDAP Samba Benutzer anlegen kann wird das Samba Schema benötigt. Eine Vorlage dafür ist im Paket samba-doc enthalten, man installiert also das Paket und entpackt die Datei samba.schema.gz nach /etc/ldap/schema/
apt-get install samba-doc zcat /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema
Jetzt muss man dem LDAP Server noch beibringen das er das neue Schema verwenden soll, dazu legt man eine neue Datei mit dem Namen samba.conf an und füllt sie mit folgendem Inhalt:
include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/samba.schema
Jetzt muss noch die samba.schema in ein samba.ldif konvertiert werden, das geht ganz einfach mit slaptest, vorher braucht man noch einen Temporären Ordner in dem die Datei vorübergehend abgelegt wird:
mkdir /tmp/slapd.d slaptest -f samba.conf -F /tmp/slapd.d/
Danach kann das Schema in cn=config importiert und der LDAP Server neugestartet werden um die Änderung zu übernehmen.
cp "/tmp/slapd.d/cn=config/cn=schema/cn={4}samba.ldif" "/etc/ldap/slapd.d/cn=config/cn=schema" chown openldap: '/etc/ldap/slapd.d/cn=config/cn=schema/cn={4}samba.ldif' /etc/init.d/slapd restart
Samba installieren
Falls noch nicht geschehen muss jetzt der Samba Server installiert und für LDAP konfiguriert werden, unter Debian geht das wieder ganz einfach mit:
apt-get install samba
Nach der Installation muss die Konfigurationsdatei unter /etc/smb.conf angepasst werden, hier ein Beispiel:
[global] workgroup = DEIN_SAMBA_DOMAIN_NAME server string = %h server map to guest = Bad User logon path = \\%L\profile\%U passdb backend = ldapsam:ldap://127.0.0.1/ pam password change = Yes passwd program = /usr/sbin/smbldap-passwd -u %u passwd chat = *New*password* %n\n *Retype*new*password* %n\n *all*authentication*tokens*updated* add user script = /usr/sbin/smbldap-useradd -m %u -d /home/%u %u delete user script = /usr/sbin/smbldap-userdel %u -r %u add group script = /usr/sbin/smbldap-groupadd -p %g delete group script = /usr/sbin/smbldap-groupdel %g add user to group script = /usr/sbin/smbldap-groupmod -m %u %g delete user from group script = /usr/sbin/smbldap-groupmod -x %u %g set primary group script = /usr/sbin/smbldap-usermod -g %g %u add machine script = /usr/sbin/smbldap-useradd -w %u preferred master = Yes domain master = Yes wins support = Yes ldap admin dn = cn=admin,dc=domain,dc=tld ldap delete dn = Yes ldap group suffix = ou=group ldap idmap suffix = ou=idmap ldap machine suffix = ou=computer ldap suffix = dc=domain,dc=tld ldap ssl = no ldap user suffix = ou=people [homes] comment = Dein persönlicher Ordner valid users = %S read only = No create mask = 0600 directory mask = 0700 browseable = No [profile] comment = Profildateien path = /home/samba/profiles read only = No create mask = 0600 directory mask = 0700 guest ok = Yes browseable = No
Sollte schon eine smb.conf vorhanden sein muss die entsprechend angepasst werden. Nachdem die Konfiguration angepasst wurde muss man Samba noch das Passwort für den LDAP-Server mit dem Befehl smbpasswd -w DEIN_LDAP_ROOT_PASSSWORT
verraten. Außerdem müssen die Ordner für die Profile angelegt und beschreibbar gemacht werden.
smbpasswd -w DEIN_LDAP_ROOT_PASSSWORT mkdir /home/samba mkdir /home/samba/profiles chmod 777 /home/samba/profiles
Benutzer anlegen
Jetzt kann man eigentlich schon Benutzer für Samba im LDAP-Verzeichnis anlegen, da das von Hand aber doch eher mühsam ist kann man sich die Arbeit mit smbldap-tools erleichtern. Wir installieren also smbldap-tools.
apt-get install smbldap-tools
Jetzt können die nötigen Dateien kopiert werden:
cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf /etc/smbldap-tools/smbldap_bind.conf zcat /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz > /etc/smbldap-tools/smbldap.conf
Die smbldap.conf muss noch ein bisschen angepasst werden, dazu benötigt man die Samba SID die man sich mit net getlocalsid
anzeigen lassen kann. In der /etc/smbldap-tools/smbldap.conf müssen nun folgende Zeilen angepasst werden:
SID="DEINE_SAMBA_SID" sambaDomain="DEIN_SAMBA_DOMAIN_NAME" slaveLDAP="localhost" masterLDAP="localhost" ldapTLS="0" suffix="dc=domain,dc=tld"
Wenn man TLS und SSL für LDAP verwendet müssen die entsprechenden Einträge auch noch konfiguriert werden. Außerdem können die default Einstellungen für neue Benutzer angepasst werden.
Jetzt müssen noch die Zugansdaten für den LDAP-Server in die /etc/smbldap-tools/smbldap_bind.conf eingetragen werden.
Danach kann mit smbldap-populate
die nötige Struktur im LDAP angelegt werden. Benutzer können jetzt mit smbpasswd -a BENUTZERNAME
hinzugefügt werden.
Linux Benutzer aus LDAP beziehen
Da Samba Benutzer auch immer Linux Benutzer sein müssen muss man Linux noch beibringen seine Benutzer aus dem LDAP Verzeichnis zu beziehen, dazu bearbeitet man die Datei /etc/nsswitch.conf und trägt zusätzlich ldap ein.
passwd: compat ldap group: compat ldap
Jetzt muss noch das Paket libnss-ldapd installiert werden, während der Installation muss man einige Fragen zum LDAP-Server beantworten. Als Host gibt man localhost an, als Base-DN dc=domain,dc=tld und als Benutzer cn=admin,dc=domain,dc=tld. Die Konfiguration kann später in /etc/libnss-ldap.conf nochmal geändert werden.
apt-get install libnss-ldapd
Wenn alles geklappt hat kann man sich mit getent passwd
alle Linux Benutzer auflisten lassen, hier sollten jetzt auch Benutzer aus LDAP aufgelistet werden. Es empfiehlt sich vorher den nscd (Name Service Caching Daemon) zu stoppen.
/etc/init.d/nscd stop getent passwd
Indexes anlegen
Für eine bessere Performance sollte man auf dem LDAP Verzeichnis Indexes anlegen, dazu müssen wir eine neue Datei mit dem Namen olcDbIndex.ldif anlegen und mit folgendem Inhalt füllen:
dn: olcDatabase={1}hdb,cn=config changetype: modify add: olcDbIndex olcDbIndex: cn pres,sub,eq - add: olcDbIndex olcDbIndex: sn pres,sub,eq - add: olcDbIndex olcDbIndex: uid pres,sub,eq - add: olcDbIndex olcDbIndex: displayName pres,sub,eq - add: olcDbIndex olcDbIndex: default sub - add: olcDbIndex olcDbIndex: uidNumber eq - add: olcDbIndex olcDbIndex: gidNumber eq - add: olcDbIndex olcDbIndex: mail,givenName eq,subinitial - add: olcDbIndex olcDbIndex: dc eqDanach können die Einstellungen mit ldapmodify übernommen werden.
ldapmodify -Y EXTERNAL -H ldapi:/// -f ./olcDbIndex.ldif
GUI zur Benutzerverwaltung
Um die Samba Benutzer komfortabel verwalten zu können sollte man ein GUI installieren. Für alle LDAP aufgaben kann ich phpLDAPadmin empfehlen. Um Benutzer im LDAP Verzeichnis zu verwalten gibt es den LDAP Account Manager.
Eine umfangreiche Liste mit Tools um Samba Benutzer zu verwalten gibt es hier.
Registry unter Windows bearbeiten
Damit man mit Windows 7 Rechnern der Domäne beitreten kann muss man eine kleine Änderung an der Registry vernehmen. Dazu erstellt man sich eine Datei mit dem namen samba.reg und füllt sie mit folgendem Inhalt:
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters] DWORD DomainCompatibilityMode 1 DWORD DNSNameResolutionRequired 0
Die Datei muss dann mit Doppelklick ausgeführt werden und die Sicherheitswarnung bestätigt werden.
Kommentare