Server Setup · 9 min read · Sep 09, 2025

Mandriva Directory Server Auf Debian Etch

Mandriva Directory Server Auf Debian Etch

Version 1.1
Autor: Oliver Meyer

Dieses Dokument beschreibt, wie man den Mandriva Directory Server (MDS) auf Debian Etch einrichtet. Das resultierende System bietet einen voll ausgestatteten Büroserver für kleine und mittlere Unternehmen - einfach zu verwalten über die webbasierte Mandriva Management Console (MMC).

Hauptmerkmale

  • Einfache Verwaltung über MMC
  • Systemweite OpenLDAP-Integration
  • SAMBA Primärer Domänencontroller (PDC)
  • Postfix-Mailserver mit Dovecot, Amavis, Spamassassin und ClamAV (POP3/IMAP/SSL/TLS/Quota)
  • BIND DNS-Server
  • ISC DHCP-Server
  • Squid-Web-Proxy mit SquidGuard

Dieses Howto ist ein praktischer Leitfaden ohne jegliche Garantie - es behandelt nicht die theoretischen Hintergründe. Es gibt viele Möglichkeiten, ein solches System einzurichten - dies ist der Weg, den ich gewählt habe.

Vorwort

Dieses Howto ist ziemlich komplex. Bitte nehmen Sie sich Zeit, lesen Sie es gründlich und folgen Sie den Schritten genau. Die kleinste Abweichung könnte dazu führen, dass Ihre Einrichtung nicht korrekt funktioniert.

1 Vorbereitung

1.1 Grundsystem

Richten Sie ein Standard-Debian-Etch-System ein und aktualisieren Sie es. Ich habe die folgende Konfiguration für dieses Howto und die angehängte virtuelle Maschine verwendet, die unseren Abonnenten zur Verfügung steht:

Hostname: server1.example.com
SAMBA-Domäne: EXAMPLE
IP: 192.168.0.100
Gateway: 192.168.0.2
Alle Passwörter: howtoforge

1.2 Hostname

Bearbeiten Sie die Hosts-Datei - weisen Sie den Hostnamen der Server-IP zu.

vi /etc/hosts

Es sollte so aussehen:

127.0.0.1       localhost.localdomain   localhost
192.168.0.100   server1.example.com     server1

# Die folgenden Zeilen sind wünschenswert für IPv6-fähige Hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Fügen Sie danach den Hostnamen in die Hostname-Datei ein …

echo server1.example.com > /etc/hostname

… und starten Sie das System neu.

reboot

Wenn das System wieder hochgefahren ist, sollte die Ausgabe der beiden Befehle …

hostname

… und …

hostname -f

… sein:

server1.example.com

1.3 Dateisystem-ACLs

Damit SAMBA in der Lage ist, Dateisystem-ACLs zwischen dem Linux-Server und den Windows-Clients zuzuordnen, müssen Sie die ACL-Unterstützung für den entsprechenden Mount-Punkt hinzufügen.

vi /etc/fstab

Fügen Sie die Option “ acl “ zum Mount-Punkt hinzu, an dem die SAMBA-Verzeichnisse gespeichert werden und die SAMBA-Benutzer ihre Home-Verzeichnisse haben. In meinem Fall ist es “ / “ - der Inhalt sollte so aussehen:

# /etc/fstab: statische Dateisysteminformationen.
#
#                
proc            /proc           proc    defaults        0       0
/dev/sda1       /               ext3    defaults,acl,errors=remount-ro 0       1
/dev/sda5       none            swap    sw              0       0
/dev/hdc        /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

Führen Sie danach den Mount-Punkt erneut ein, um die Änderungen wirksam zu machen.

mount -o remount /

Wenn alles gut gelaufen ist, sollte der Befehl …

mount -l

… die Option “ acl “ für den entsprechenden Mount-Punkt anzeigen:

/dev/sda1 on / type ext3 (rw,acl,errors=remount-ro)

2 Repositories

2.1 MDS

Das MDS-Repository stellt die MDS-bezogenen Pakete sowie gepatchte Pakete für bind9 & dhcp3 bereit.

vi /etc/apt/sources.list

Fügen Sie die folgenden Zeilen in die Datei ein.

# MDS-Repository  
deb http://mds.mandriva.org/pub/mds/debian etch main

2.2 Debian Volatile

Das Debian Volatile-Repository stellt neuere Pakete für ClamAV & Spamassassin als das Standard-Debian-Repository bereit.

vi /etc/apt/sources.list

Fügen Sie die folgenden Zeilen in die Datei ein.

# Debian Volatile  
deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free

2.3 Debian Backports

Das Debian Backports-Repository stellt neuere Pakete für dovecot bereit.

vi /etc/apt/sources.list

Fügen Sie die folgenden Zeilen in die Datei ein.

# Debian Etch Backports  
deb http://www.backports.org/debian etch-backports main

Aktualisieren Sie danach apt.

apt-get update

3 Benötigte Pakete

3.1 Installation

Installieren Sie die benötigten Pakete für diese Einrichtung.

apt-get install mmc-web-base mmc-web-mail mmc-web-network mmc-web-proxy mmc-web-samba mmc-agent python-mmc-plugins-tools python-mmc-base python-mmc-mail python-mmc-network python-mmc-proxy python-mmc-samba postfix postfix-ldap sasl2-bin libsasl2 libsasl2-modules amavisd-new libdbd-ldap-perl libnet-ph-perl libnet-snpp-perl libnet-telnet-perl lzop nomarch zoo clamav clamav-daemon gzip bzip2 unzip unrar-free unzoo arj spamassassin libnet-dns-perl razor pyzor dcc-client slapd ldap-utils libnss-ldap libpam-ldap dhcp3-server dhcp3-server-ldap bind9 samba smbclient smbldap-tools cupsys cupsys-client foomatic-db-engine foomatic-db foomatic-db-hpijs foomatic-db-gutenprint foomatic-filters foomatic-filters-ppds fontconfig hpijs-ppds linuxprinting.org-ppds

Die aktuellen dovecot-Pakete im Standard-Debian-Repository haben einen Fehler in Verbindung mit LDAP - daher müssen Sie die dovecot-Pakete aus Debian Backports verwenden.

apt-get install -t etch-backports dovecot-common dovecot-imapd dovecot-pop3d

Wenn Sie HP-Drucker verwenden möchten, wird empfohlen, einige weitere Pakete zu installieren.

apt-get install hplip libusb-dev python-dev python-reportlab libcupsys2-dev libjpeg62-dev libsnmp9-dev lsb-core

3.2 Konfiguration

Während der Installation der neuen Pakete werden Ihnen einige Fragen gestellt - beantworten Sie diese wie folgt.

3.2.1 LDAP

Geben Sie das Passwort für den LDAP-Admin ein und bestätigen Sie es. ( howtoforge)

3.2.2 Samba

Geben Sie einen Namen für Ihre Domäne ein. ( EXAMPLE)
Wählen Sie “ Nein “ aus, wenn Sie gefragt werden, ob die smb.conf geändert werden soll, um WINS-Einstellungen von DHCP zu verwenden.

3.2.3 Postfix

Wählen Sie “ Internet Site “ als allgemeinen Konfigurationstyp.
Geben Sie “ server1.example.com “ als Mailnamen ein.

3.2.4 Libnss-LDAP

Geben Sie “ ldap://127.0.0.1/ “ als LDAP-Server-URI ein.
Geben Sie “ dc=example,dc=com “ als Namen für die Suchbasis ein.
Wählen Sie die LDAP-Version. ( 3)
Geben Sie “ cn=admin,dc=example,dc=com “ als LDAP-Konto für root ein.
Geben Sie das Passwort für den LDAP-Admin ein. ( howtoforge)

3.2.5 Libpam-LDAP

Wählen Sie “ Ja “ aus, wenn Sie gefragt werden, ob der lokale Root der Datenbank-Admin sein soll.
Wählen Sie “ Nein “ aus, wenn Sie gefragt werden, ob die LDAP-Datenbank eine Anmeldung erfordert.
Geben Sie “ cn=admin,dc=example,dc=com “ als LDAP-Konto für root ein.
Geben Sie das Passwort für den LDAP-Admin ein. ( howtoforge)

4 LDAP-Konfiguration

4.1 Schema-Dateien

Zuerst kopieren Sie die Schema-Dateien für MMC, Mail, SAMBA, Drucker, DNS und DHCP in das LDAP-Schemaverzeichnis.

cp /usr/share/doc/python-mmc-base/contrib/ldap/mmc.schema /etc/ldap/schema/  
cp /usr/share/doc/python-mmc-base/contrib/ldap/mail.schema /etc/ldap/schema/  
zcat /usr/share/doc/python-mmc-base/contrib/ldap/samba.schema.gz > /etc/ldap/schema/samba.schema  
zcat /usr/share/doc/python-mmc-base/contrib/ldap/printer.schema.gz > /etc/ldap/schema/printer.schema  
zcat /usr/share/doc/python-mmc-base/contrib/ldap/dnszone.schema.gz > /etc/ldap/schema/dnszone.schema  
zcat /usr/share/doc/python-mmc-base/contrib/ldap/dhcp.schema.gz > /etc/ldap/schema/dhcp.schema

Fügen Sie als Nächstes die Schema-Dateien in die LDAP-Konfiguration ein

vi /etc/ldap/slapd.conf

Fügen Sie die Schema-Dateien nach dem inetorgperson-Schema ein.

include /etc/ldap/schema/mmc.schema  
include /etc/ldap/schema/samba.schema  
include /etc/ldap/schema/printer.schema  
include /etc/ldap/schema/mail.schema  
include /etc/ldap/schema/dnszone.schema  
include /etc/ldap/schema/dhcp.schema

Aktivieren Sie die Schemacheck (unter den eingefügten Schema-Dateien).

schemacheck on

4.2 Grundkonfiguration

In diesem Schritt benötigen Sie das LDAP-Admin-Passwort (das Sie während der Paketinstallation in Schritt 3 definiert haben) in verschlüsselter Form (SSHA) - also lassen Sie uns es verschlüsseln.

slappasswd -s %ldap_admin_password%

Z.B.:

slappasswd -s howtoforge

Die Ausgabe sollte so aussehen:

{SSHA}kPd9OeiwGx4lyZUiQ2NFmzXV0JWyLV9A

Notieren Sie es und fahren Sie fort - öffnen Sie die LDAP-Serverkonfigurationsdatei.

vi /etc/ldap/slapd.conf

Suchen Sie die kommentierte Zeile mit dem Eintrag für den LDAP-Admin (rootdn) …

# rootdn "cn=admin,dc=example,dc=com"

… und kommentieren Sie sie aus. Fügen Sie danach eine neue Zeile direkt darunter hinzu. Sie müssen das verschlüsselte LDAP-Admin-Passwort eingeben, das Sie zu Beginn dieses Schrittes generiert haben.

rootpw %encrypted_ldap_admin_password%

Z.B.:

rootpw {SSHA}kPd9OeiwGx4lyZUiQ2NFmzXV0JWyLV9A

Als Nächstes müssen wir die Indizierungsoptionen für die Datenbank ändern. Suchen Sie den folgenden Eintrag:

# Indizierungsoptionen für Datenbank #1

Entfernen Sie die folgende Zeile …

index objectClass eq

… und fügen Sie die folgenden Zeilen ein:

index objectClass,uidNumber,gidNumber eq  
index cn,sn,uid,displayName pres,sub,eq  
index memberUid,mail,givenname eq,subinitial  
index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq  
index zoneName,relativeDomainName eq  
index dhcpHWAddress,dhcpClassData eq

Fügen Sie jetzt SAMBA zur Zugriffsliste für die Datenbank hinzu. Suchen Sie die folgende Zeile:

access to attrs=userPassword,shadowLastChange

Ändern Sie sie so, dass sie so aussieht:

access to attrs=userPassword,sambaLMPassword,sambaNTPassword

An diesem Punkt sollte die LDAP-Serverkonfigurationsdatei so aussehen:

# Dies ist die Hauptkonfigurationsdatei für slapd. Siehe slapd.conf(5) für weitere
# Informationen zu den Konfigurationsoptionen.
#######################################################################
# Globale Direktiven:
# Funktionen, die erlaubt sind
#allow bind_v2
# Schema- und objectClass-Definitionen
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/mmc.schema
include         /etc/ldap/schema/samba.schema
include         /etc/ldap/schema/printer.schema
include         /etc/ldap/schema/mail.schema
include         /etc/ldap/schema/dnszone.schema
include         /etc/ldap/schema/dhcp.schema

schemacheck     on

# Wo die PID-Datei abgelegt wird. Das init.d-Skript
# wird den Server nicht stoppen, wenn Sie dies ändern.
pidfile         /var/run/slapd/slapd.pid

# Liste der Argumente, die an den Server übergeben wurden
argsfile        /var/run/slapd/slapd.args

# Lesen Sie slapd.conf(5) für mögliche Werte
loglevel        0

# Wo die dynamisch geladenen Module gespeichert sind
modulepath      /usr/lib/ldap
moduleload      back_bdb

# Die maximale Anzahl von Einträgen, die für eine Suchoperation zurückgegeben werden
sizelimit 500

# Der tool-threads-Parameter legt die tatsächliche Anzahl von CPUs fest, die verwendet werden
# für die Indizierung.
tool-threads 1

#######################################################################
# Spezifische Backend-Direktiven für bdb:
# Backend-spezifische Direktiven gelten für dieses Backend, bis eine andere
# 'backend'-Direktive auftritt
backend         bdb
checkpoint 512 30

#######################################################################
# Spezifische Backend-Direktiven für 'andere':
# Backend-spezifische Direktiven gelten für dieses Backend, bis eine andere
# 'backend'-Direktive auftritt
#backend                

#######################################################################
# Spezifische Direktiven für Datenbank #1, vom Typ bdb:
# Datenbankspezifische Direktiven gelten für diese Datenbank, bis eine andere
# 'database'-Direktive auftritt
database        bdb

# Die Basis Ihres Verzeichnisses in Datenbank #1
suffix          "dc=example,dc=com"

# rootdn-Direktive zur Angabe eines Superbenutzers in der Datenbank. Dies ist erforderlich
# für syncrepl.
rootdn          "cn=admin,dc=example,dc=com"
rootpw          {SSHA}kPd9OeiwGx4lyZUiQ2NFmzXV0JWyLV9A

# Wo die Datenbankdateien physisch für Datenbank #1 gespeichert werden
directory       "/var/lib/ldap"

# Für das Debian-Paket verwenden wir 2 MB als Standard, aber stellen Sie sicher, dass Sie diesen
# Wert aktualisieren, wenn Sie viel RAM haben
dbconfig set_cachesize 0 2097152 0

# Sven Hartge berichtete, dass er diesen Wert unglaublich hoch setzen musste,
# um slapd überhaupt zum Laufen zu bringen. Siehe http://bugs.debian.org/303057
# für weitere Informationen.
# Anzahl der Objekte, die gleichzeitig gesperrt werden können.
dbconfig set_lk_max_objects 1500

# Anzahl der Sperren (sowohl angefordert als auch gewährt)
dbconfig set_lk_max_locks 1500

# Anzahl der Locker
dbconfig set_lk_max_lockers 1500

# Indizierungsoptionen für Datenbank #1
index      objectClass,uidNumber,gidNumber                  eq
index      cn,sn,uid,displayName                            pres,sub,eq
index      memberUid,mail,givenname                         eq,subinitial
index      sambaSID,sambaPrimaryGroupSID,sambaDomainName    eq
index      zoneName,relativeDomainName                  eq 
index      dhcpHWAddress,dhcpClassData                      eq

# Speichern Sie die Zeit, zu der der Eintrag geändert wird, für Datenbank #1
lastmod         on

# Wo die Replikatprotokolle für Datenbank #1 gespeichert werden
# replogfile    /var/lib/ldap/replog
# Das userPassword kann standardmäßig geändert werden
# von dem Eintrag, der es besitzt, wenn sie authentifiziert sind.
# Andere sollten es nicht sehen können, außer dem
# Admin-Eintrag unten
# Diese Zugriffszeilen gelten nur für Datenbank #1
access to attrs=userPassword,sambaLMPassword,sambaNTPassword
        by dn="cn=admin,dc=example,dc=com" write
        by anonymous auth
        by self write
        by * none

# Stellen Sie sicher, dass der Zugriff auf die Basis für Dinge wie
# supportedSASLMechanisms gewährleistet ist.  Ohne dies könnten Sie
# Probleme mit SASL haben, die nicht wissen, welche
# Mechanismen verfügbar sind und ähnliches.
# Beachten Sie, dass dies auch durch den 'access to *'
# ACL unten abgedeckt ist, aber wenn Sie das ändern, wie es die Leute
# gewohnt sind, müssen Sie dies immer noch haben, wenn Sie
# möchten, dass SASL (und möglicherweise andere Dinge) gut funktioniert.
access to dn.base="" by * read

# Der Admin-dn hat vollen Schreibzugriff, alle anderen
# können alles lesen.
access to *
        by dn="cn=admin,dc=example,dc=com" write
        by * read

# Für Netscape Roaming-Unterstützung erhält jeder Benutzer ein Roaming
# Profil, auf das sie Schreibzugriff haben
#access to dn=".*,ou=Roaming,o=morsnet"
#        by dn="cn=admin,dc=example,dc=com" write
#        by dnattr=owner write

#######################################################################
# Spezifische Direktiven für Datenbank #2, vom Typ 'andere' (kann auch bdb sein):
# Datenbankspezifische Direktiven gelten für diese Datenbank, bis eine andere
# 'database'-Direktive auftritt
#database        

# Die Basis Ihres Verzeichnisses für Datenbank #2
#suffix         "dc=debian,dc=org"

Zusätzlich müssen Sie die LDAP-Konfigurationsdatei bearbeiten.

vi /etc/ldap/ldap.conf

Fügen Sie die folgenden Zeilen hinzu: host 127.0.0.1
base dc=example,dc=com

Starten Sie danach den LDAP-Server neu.

/etc/init.d/slapd restart
Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.