tas2580
Blog über Webentwicklung

Samba mit LDAP

tas2580  

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 eq
Danach 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.


Ähnliche Beiträge


Kommentare


Bitte warten ...

Kommentar schreiben

URLs werden automatisch umgewandelt.
[b]DEIN TEXT[/b] für Fett gedruckt
[quote]DEIN ZITAT[/quote] für Zitate
[code]DEIN CODE[/code] für Code
captcha