Debian Samba-LDAP

Aus Wiki
Zur Navigation springen Zur Suche springen

Allgemein

Samba kann seine Userdaten im LDAP Directory ablegen, sodass die Unix- und Samba Userdaten zentral im Directory verwaltet werden können, anstatt diese über mehrere Files und evtl. mehrere Server verteilt zu bearbeiten.

Hier werden die LDAP-spezifischen Änderungen erläutert. Die generelle Installation von Samba und Konfiguration sollte dem Samba Wikiartikel entnommen werden.

Voraussetzung:


Installation und Konfiguration

Samba- und LDAP-Server müssen nicht zwingend auf dem selben Server installiert sein.

LDAP-Server

Um die Samba-Informationen aufnehmen zu können, muss das Samba-Schema in's LDAP-Directory importiert werden, das im Paket samba-doc enthalten ist

apt-get install samba-doc 
cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema/ 
gzip -d /etc/ldap/schema/samba.schema.gz 

Konvertieren des Schema in ein LDIF-File:

schema2ldif.sh samba

Samba-Schema in's LDAP-Directory einbinden:

ldapadd -cxWD cn=admin,cn=config -f /etc/ldap/schema/samba.ldif 

Indizes für Samba im LDAP-Directory anlegen:

vi /root/ldap_ldif/samba_indexes.ldif

Folgende Zeilen einfügen:

dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: uidNumber eq
olcDbIndex: gidNumber eq
olcDbIndex: loginShell eq
olcDbIndex: uid eq,pres,sub
olcDbIndex: memberUid eq,pres,sub
olcDbIndex: uniqueMember eq,pres
olcDbIndex: sambaSID eq
olcDbIndex: sambaPrimaryGroupSID eq
olcDbIndex: sambaGroupType eq
olcDbIndex: sambaSIDList eq
olcDbIndex: sambaDomainName eq
olcDbIndex: default sub

Samba-Inizes in's LDAP-Directory einbinden:

ldapadd -cxWD cn=admin,cn=config -f /root/ldap_ldif/samba_indexes.ldif 


Samba-Server

apt-get install samba samba-common smbldap-tools

Die Basis-Konfiguration von Samba entsprechend Samba Wiki vornehmen.

Folgende zusätzliche Schritte sind für LDAP erforderlich:

vi /etc/samba/smb.conf

Im Bereich [global] folgende Zeilen einfügen bzw. ändern:

ldap passwd sync = yes
passdb backend = ldapsam:ldap://IP_DES_LDAP-SERVER bzw. passdb backend = ldapsam:ldaps://IP_DES_LDAP-SERVER, falls SSL für LDAP auf dem Server aktiviert wurde
ldap admin dn = cn=admin,LDAP_Base z.B. ldap admin dn = cn=admin,dc=test,dc=lan
ldap suffix = LDAP_Base z.B. ldap suffix = dc=test,dc=lan
ldap group suffix = ou=groups
ldap user suffix = ou=people
ldap machine suffix = ou=computers
ldap idmap suffix = ou=idmap
ldap ssl = no
passwd program = /usr/sbin/smbldap-passwd -u "%u"
passwd chat = "Changing UNIX password for*\nNew password*" %n\n "*Retype new password*" %n\n"
add user script = /usr/sbin/smbldap-useradd -m "%u"
delete user script = /usr/sbin/smbldap-userdel "%u"
add group script = /usr/sbin/smbldap-groupadd -p "%g"
delete group script = /usr/sbin/smbldap-groupdel "%g"
set primary group script = /usr/sbin/smbldap-usermod -g '%g' '%u'
add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
add machine script = /usr/sbin/smbldap-useradd -t 0 -w "%u"
admin users = domainadm

Samba neu starten:

/etc/init.d/samba restart

LDAP-Admin Passwort hinzufügen:

smbpasswd -W

Das LDAP-Admin Passwort LDAP_ADMIN_PWD zweimal eingeben

Samba LDAP-Tools

gzip -d /usr/share/doc/smbldap-tools/configure.pl.gz 
perl /usr/share/doc/smbldap-tools/configure.pl 

Dieses Perl-Script erzeugt jede Menge Ausgaben und erfordert teilweise die Eingabe von Optionen. Der jeweilige Standardwert ist in [Option=Standardwert] bereits angegeben. Dieser Standardwert kann mittels ENTER-Taste übernommen werden.

Folgende Ausgaben werden erzeugt:

$# is no longer supported at /usr/share/doc/smbldap-tools/configure.pl line 314.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
       smbldap-tools script configuration
       -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Before starting, check
 . if your samba controller is up and running.
 . if the domain SID is defined (you can get it with the 'net getlocalsid')

 . you can leave the configuration using the Crtl-c key combination
 . empty value can be set with the "." character
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Looking for configuration files...

Samba Configuration File Path [/etc/samba/smb.conf] > ENTER

The default directory in which the smbldap configuration files are stored is shown.
If you need to change this, enter the full directory path, then press enter to continue.
Smbldap-tools Configuration Directory Path [/etc/smbldap-tools/] > ENTER
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Let's start configuring the smbldap-tools scripts ...

. workgroup name: name of the domain Samba act as a PDC
  workgroup name [WORKGROUP] > ENTER
. netbios name: netbios name of the samba controler
  netbios name [] > SAMBA_SERVER_NAME
. logon drive: local path to which the home directory will be connected (for NT Workstations). Ex: 'H:'
  logon drive [] > ENTER
. logon home: home directory location (for Win95/98 or NT Workstation).
  (use %U as username) Ex:'\\SAMBA\%U'
  logon home (press the "." character if you don't want homeDirectory) [\\SAMBA\%U] > ENTER um Homedirectory zu aktivieren bzw. . falls kein Homedirectory gewünscht.
. logon path: directory where roaming profiles are stored. Ex:'\\MINISERVER\profiles\%U'
  logon path (press the "." character if you don't want roaming profile) [\\MINISERVER\profiles\%U] > .
. home directory prefix (use %U as username) [/home/%U] > ENTER
. default users' homeDirectory mode [700] > ENTER
. default user netlogon script (use %U as username) [] > ENTER
  default password validation time (time in days) [45] > Je nach Bedarf erhöhen. Z.B. 365, damit das Passwort ein Jahr lang fültig ist
. ldap suffix [dc=test,dc=lan] > ENTER
. ldap group suffix [ou=groups] > ENTER
. ldap user suffix [ou=people] > ENTER
. ldap machine suffix [ou=computers] > ENTER
. Idmap suffix [ou=idmap] > ENTER
. sambaUnixIdPooldn: object where you want to store the next uidNumber
  and gidNumber available for new users and groups
  sambaUnixIdPooldn object (relative to ${suffix}) [sambaDomainName=WORKGROUP] > ENTER
. ldap master server: IP adress or DNS name of the master (writable) ldap server
  ldap master server [IP_DES_LDAP-SERVER] > ENTER
. ldap master port [389] > ENTER bzw. 636, falls SSL auf dem LDAP-Server eingerichtet wurde.
. ldap master bind dn [cn=admin,dc=test,dc=lan] > ENTER
. ldap master bind password [] > LDAP_ADMIN_PWD
. ldap slave server: IP adress or DNS name of the slave ldap server: can also be the master one
  ldap slave server [IP_DES_LDAP-SERVER] > ENTER
. ldap slave port [389] > ENTER bzw. 636, falls SSL auf dem LDAP-Server eingerichtet wurde.
. ldap slave bind dn [cn=admin,dc=test,dc=lan] > ENTER
. ldap slave bind password [] > LDAP_ADMIN_PWD
. ldap tls support (1/0) [0] > ENTER
. SID for domain ARBEITSGRUPPE: SID of the domain (can be obtained with 'net getlocalsid MINISERVER')
  SID for domain ARBEITSGRUPPE [SAMBA_SID] > ENTER
. unix password encryption: encryption used for unix passwords
  unix password encryption (CRYPT, MD5, SMD5, SSHA, SHA) [SSHA] > ENTER
. default user gidNumber [513] > ENTER
. default computer gidNumber [515] > ENTER
. default login shell [/bin/bash] > ENTER
. default skeleton directory [/etc/skel] > ENTER
. default domain name to append to mail adress [] > ENTER
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Use of uninitialized value $# in concatenation (.) or string at /usr/share/doc/smbldap-tools/configure.pl line 314, <STDIN> line 34.
backup old configuration files:
  /etc/smbldap-tools/smbldap.conf->/etc/smbldap-tools/smbldap.conf.old
  /etc/smbldap-tools/smbldap_bind.conf->/etc/smbldap-tools/smbldap_bind.conf.old
writing new configuration file:
  /etc/smbldap-tools/smbldap.conf done.
  /etc/smbldap-tools/smbldap_bind.conf done.

Am Ende wird das Passort des Root-Users der Domäne abgefragt. Hier zweimal das gewünschte Passwort eingeben.

Samba Domain-User und Gruppen dem LDAP-Directory hinzufügen:

smbldap-populate 
smbldap-groupadd -a domainadm
smbldap-useradd -am -g domainadm domainadm 
smbldap-passwd domainadm

Zweimal das gewünschte Passwort des Domänenadmin eingeben.


Optional: PAM - Samba Passwort-Sync

Samba verwendet andere Passwort-Felder als PAM für die Ablage des Passwortes im LDAP. D.h. wenn der User sein Unix-Passwort mittels passwd ändert, bleibt das Samba-Passwort unverändert. Selbiges gilt für die Änderung des Samba-Passwort's.

Die Synchronisierung erfolgt innerhalb des LDAP-Servers mit einem sog. Overlay namens smbk5pwd. Neben der Synchronisierung der Passwörter von PAM und SAMBA beherrscht das Overlay auch die Synchronisierung von Kerberos Passwörtern. Auch wenn keine Kerberos Authentifizierung gewünscht ist, bemötigt das Tool das Kerberos Schema im LDAP-Server.

Leider funktioniert smbk5pwd, das in den Debian Squeeze Repositories enthalten ist, nicht korrekt. Deshalb muss es unter Debian Squeeze manuell Compiliert werden. In Debian Wheezy funktioniert es dagegen tadellos.


Wheezy: Smbk5pwd installieren

apt-get install slapd-smbk5pwd


Squeze: Smbk5pwd kompilieren

Nur unter Debian Squeeze erforderlich.

Notwendige Pakete installieren:

apt-get install gcc make build-essential libssl-dev libdb4.8-dev heimdal-dev libldap2-dev

Sourcecode downloaden:

mkdir /usr/local/src/openldap
cd /usr/local/src/openldap
wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.33.tgz
tar -xvf openldap-2.4.33.tgz
cd openldap-2.4.33

Konfiguration und Kompilierung

./configure
make depend
cd contrib/slapd-modules/smbk5pwd/
make

Nachdem die Kompilierung fehlerfrei abgeschlossen wurde, die Module in's LDAP-Lib-Verzeichnis kopieren:

cp .libs/smbk5pwd.la /usr/lib/ldap/
cp .libs/smbk5pwd.so.0.0.0 /usr/lib/ldap/
chmod 644 /usr/lib/ldap/smbk5*
ln -s /usr/lib/ldap/smbk5pwd.so.0.0.0 /usr/lib/smbk5pwd.so


LDAP Konfiguration

Extrahieren des Kerberos Schemas (kerberos.schema):

apt-get -d install heimdal-kdc 

Damit wird das Paket heimdal-kdc heruntergeladen, aber nicht installiert. In diesem Paket ist das gesuchte Schema enthalten.

mkdir /usr/local/src/heimdal
dpkg-deb -x /var/cache/apt/archives/heimdal-kdc*.deb /usr/local/src/heimdal/
cp /usr/local/src/heimdal/etc/ldap/schema/hdb.schema /etc/ldap/schema/

Schema analog dem Samba-Schema in LDAP einbinden:

schema2ldif.sh hdb

Kerberos-Schema in's LDAP-Directory einbinden:

ldapadd -cxWD cn=admin,cn=config -f /etc/ldap/schema/hdb.ldif 

Overlay smbk5pwd Konfigurieren: Auch das Einbinden des Overlays und dessen Konfiguration des Overlays erfolgt im LDAP Directory selbst.

vi /root/ldap_ldif/smbk5-load.ldif

Folgende Zeilen einfügen:

dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: smbk5pwd
vi /root/ldap_ldif/smbk5.ldif

Folgende Zeilen einfügen:

# {0}smbk5pwd, {1}bdb, config
dn: olcOverlay={0}smbk5pwd,olcDatabase={1}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSmbK5PwdConfig
olcOverlay: {0}smbk5pwd
olcSmbK5PwdEnable: samba
olcSmbK5PwdMustChange: 0

Einbinden der LDIF-Files ins Directory:

ldapmodify -cxWD cn=admin,cn=config -f /root/ldap_ldif/smbk5-load.ldif
ldapadd -cxWD cn=admin,cn=config -f /root/ldap_ldif/smbk5.ldif


Client und Samba konfigurieren

Damit die Passwort Sync-Fähigkeiten von LDAP verwendet werden, sind noch zwei kleine Änderungen erforderlich.

  • Auf jedem LDAP-Client:
vi /etc/pam_ldap.conf

Das Kommentarzeichen (#) vor folgender Zeile entfernen:

pam_password exop
  • Samba:
vi /etc/samba/smb.conf

Folgende Änderung durchführen (Option von 'yes' nach 'only' ändern):

ldap passwd sync = only

Samba neu starten:

/etc/init.d/samba restart


Samba-User mit LDAP Account Manager verwalten

Samba Module aktivieren

LDAP Account Manager bietet eine komfortable Möglichkeit die Samba-User zu verwalten.

  • Webbrowser öffnen und http://IP_DES_SERVER/lam eingeben
  • Links oben auf den Link LAM configuration klicken
  • Edit server profiles anwählen
  • Passwort eingeben (LAM_MASTER_PWD)
  • Im Bereich Modules jeweils das Samba-Modul aktivieren:
    • Users: Samba 3 (sambaSamAccount)
    • Groups: Samba 3 (sambaGroupMapping)
    • Hosts: Samba 3 (sambaSamAccount)
    • Samba Domains: Samba domain (sambaDomain)
  • Button Save anklicken, um die Änderungen zu übernehmen


Neuen Samba-User anlegen

  • Mit Hilfe von LAM in's LDAP-Directory einloggen
  • Bereich Users auswählen
  • Button New User anklicken
  • Im Bereich Personal die Masken nach Bedarf ausfüllen. Nachname (Last name) ist erforderlich, die anderen Optional
  • Im Bereich Unix die Masken nach Bedarf ausfüllen. Die Einträge, die mit * gekennzeichnet sind, sind Pflichtfelder die anderen optional
    • Falls der User unter Linux (z.B: via SSH) anmeldeberechtigt sein soll, dann die Login Shell auf /bin/bash setzen
    • Falls der User unter Linux nicht anmeldeberechtigt sein soll, dann die Login Shell auf /bin/false setzen
  • Im Berich Samba3
    • Den Button Add samba 3 extension
    • die Masken nach Bedarf ausfüllen.
  • Den Button Set password anklicken
    • In der erscheinenden Maske zweimal das gewünschte Passwort eingeben
    • Am Ende Button Ok anklicken
  • Den Button Save anklicken


Existenten User für Samba freischalten

  • Mit Hilfe von LAM in's LDAP-Directory einloggen
  • Bereich Users auswählen
  • Button Edit vor dem geünschten User anklicken
    • Den Button Add samba 3 extension
    • die Masken nach Bedarf ausfüllen.
  • Den Button Set password anklicken
    • In der erscheinenden Maske zweimal das gewünschte Passwort eingeben
    • Am Ende Button Ok anklicken
  • Den Button Save anklicken