Inhaltsverzeichnis
Das folgende HowTo erklärt, wie man unter SuSE Linux ein (internes) globales Adressbuch mit dem Verzeichnisdienst openLDAP2v3 einrichtet, benutzt und administriert. Zudem habe ich ein kleines Perl-Skript geschrieben welches autom. einen Unix-User erstellt und den User dem Adressbuch hinzufügt.
Voraussetzungen: Linux (in diesem Fall wird von SuSE 8.2 (Minimal Installation) ausgegangen).
Installation Pakete:
Da innerhalb der minimalen Installation nicht alle hier erforderlichen Pakete installiert werden,
im folgenden eine Auflistung der hier benötigten Pakete. openldap2 quota make automake perl-Convert-ASNI perl-URI perl-XML-Simple perl-XML-Parser perl-Authen-SASL perl-IO-Socket-SSL XML-SAX-Base-x.xx perl-ldap-x.xx
Die letzten beiden Pakete (XML-SAX-Base-x.xx und perl-ldap-x.xx) bei CPAN herunterladen.
Die Pakete XML-SAX-Base und perl-ldap-0.30 müssen zuerst noch entpackt und kompiliert werden (z.B. in /tmp): XML-SAX-Base-x.xx:
tar -zxvf XML-SAX-Base-x.xx.tar.gz perl Makefile.PL make && make test make install
perl-ldap-x.xx:
gzip -d perl-ldap-x.xx.tar.gz tar -xof perl-ldap-x.xx.tar perl Makefile.PL make make test make install
LDAP-Server konfigurieren:
*** Kursiv und Fett dargestellte Angaben müssen durch Eure Einstellungen abgeändert werden ***
Zuerst sollte folgende Ordnerstruktur auf dem Linux-Server angelegt werden:
/etc/openldap/db/scripte /etc/openldap/db/adressbook/
Die Datei „/etc/openldap/slapd.conf“ sollte wie folgt aussehen
# slapd.conf include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/nis.schema include /etc/openldap/schema/inetorgperson.schema pidfile /var/run/slapd.pid argsfile /var/run/slapd.args ####################################################################### # ldbm database definitions ####################################################################### allow bind_v2 database ldbm suffix "dc=mybase,dc=de" rootdn "cn=admin,dc=mybase,dc=de" rootpw password directory /var/lib/ldap index objectClass eq
Nun kann der LDAP-Server bereits mit „rcldap start“ gestartet werden. Hier gilt den
Dienst dauerhaft mit dem Runlevel-Editor in Runlevel 3 und 5 einzutragen.
Als nächstes muss die Grundstruktur erstellt und der LDAP-Datenbank hinzugefügt werden.
Dazu erstellen wir folgendes Skript unter „/etc/openldap/db/scripte“. initial.ldif:
# Root erstellen dn: dc=mybase,dc=de objectClass: dcObject objectClass: organization o: myobject dc: de # Manager erstellen dn: cn=admin,dc=mybase,dc=de objectClass: person cn: admin sn: admin description: "LDAP Admin" # Containerobject "myobject" erstellen dn: o=myobject,dc=mybase,dc=de o: myobject objectClass: organization # Adressbuch erstellen dn: ou=adressbook,o=myobject,dc=mybase,dc=de ou: adressbook description: Adressbook objectClass: organizationalUnit
Mit folgendem Befehl wird die „initial.ldif“ der LDAP-Datenbank hinzugefügt:
ldapadd -h hostname -x -D "cn=admin, dc=mybase, dc=de" -W -f initial.ldif
User mit „unix-ldap-useradd hinzufügen:
Um nicht User umständlich mit YAST und dem ldapadd-Befehl hinzuzufügen, ist es praktischer ein kleines Skript zu Hilfe zunehmen.
Deshalb hab ich mir folgendes kleines Skript in Perl geschrieben.
*** Wenn Ihr nur User dem Adressbuch hinzufügen wollt, löscht einfach den Unix-Part aus dem Script herraus (Die Variablen müsst Ihr natürlich in den LDAP-Abschnitt mit übernehmen) *** unix-ldap.useradd:
#!/usr/bin/perl -w
########################################################
# Name: unix-ldap.useradd			       #
#------------------------------------------------------#
# Beschreibung:	Script Legt einen Unix u. LDAP-User an #
########################################################
 
###########################
# Unix-User wird erstellt #
###########################
print "Enter username (Unix):";
chomp ($Name =);
system("useradd -g users -c Mail-User -s /bin/false $Name");
system("mkdir /home/$Name");
system("chown $Name /home/$Name");
system("chmod 700 /home/$Name");
system("passwd $Name");
print "User: $Name, has been added .\n";
#################################
# LDIF-File fuer User erstellen #
#################################
$path="/etc/openldap/db/adressbook";
open(FILE, ">$path/$Name.ldif");
print "Enter firstname (LDAP):";
chomp ($FN =);
print "Enter surname (LDAP):";
chomp ($CN = );
print FILE "dn: cn=$FN $CN,ou=adressbook,o=myobject,dc=mybase,dc=de<\n";
print FILE "objectclass: top\n";
print FILE "objectclass: person\n";
print FILE "objectclass: organizationalPerson\n";
print FILE "objectClass: inetOrgPerson\n";
print FILE "sn: $CN\n";
print FILE "cn: $FN $CN\n";
print FILE "mail: $FN.$CN\@mydomain.de\n";
print "Enter Phonenumber:";
chomp ($PHONE = );
print FILE "telephoneNumber: $PHONE\n";
close (FILE);
 
use Net::LDAP;
use Net::LDAP::LDIF;
############
# Settings #
############
my $server	= "myhost";
my $LDIFfile	= "$path/$Name.ldif";
my $port	= getservbyname("ldap", "tcp") || "389";
my $rootdn	= "cn=admin, dc=mybase, dc=de";
my $pw		= "password";
######################
# Ldif-File einlesen #
######################
my $ldif = new Net::LDAP::LDIF($LDIFfile, "r");
my @eintraege = $ldif->read();
#######################################
# Verbindung zum LDAP-Server aufbauen #
#######################################
my $c = new Net::LDAP($server, port => $port) or die "Kann Server $server nicht erreichen: $@\n";
$c->bind(dn => $rootdn, password => $pw) or die "Fehler bei Bindung: $@\n";
############################################
# Datensatz der LDAP-Datenbank hinzufuegen #
############################################
for (@eintraege) {
	my $res = $c->add($_);
	warn "Fehler: add(" . $_->dn() . "): code " . $res->code . "\n"
		if $res->code();
}
$c->unbind();
Konfiguration eMail-Client:
An dieser Stelle kann und will ich nicht auf jeden eMail-Client eingehen, deshalb wird nur in aller Kürze der von Mozilla angesprochen. Konfiguration „Mozilla“:
– Edit – Preferences – Adressing – Edit Directories
      
	Name:
	Adressbuch
	
      
	Hostname:
	IP oder Hostname
	
      
	Base-DN:
	dc=mydomain.dc=de
		
Nun kann die entsprechende Person mittels des Namens auflöst werden.
Um eine neue eMail zu schreiben gibt man den Vornamen der betreffenden Person an – also z.B. Thomas in das To – Feld ein und drückt die
Tastenkombination Strg+K. Daraufhin wird eine Liste mit allen der Datenbank bekannten Usern „Thomas“ angezeigt.
Quellen:
Bücher:
| „Perl für System-Administratoren“ | OŽReilly | (ISBN: 3-89721-145-9) | 
| „LDAP verstehen, OpenLDAP einsetzen“ | dpunkt.verlag | (ISBN: 3-89864-217-8) | 


