Wollte schon immer einen eigenen LDAP-Server haben. Da es heute regnet, habe ich mir einen mal auf dem Raspberry Pi eingerichtet. Hier gibt es eine gute Anleitung (auf englisch) zum installieren eines Ldap Servers. Analog dazu habe ich mal eine Anleitung zum openLDAP in deutsch angelegt. Erste mal eine Mindmap zum Thema:
Kurz ist folgende nötig (BPMN 2.0):
1. Vorbereitung:
Evl. laufende andere Server stoppen. Z.b.
sudo /etc/init.d/apache2 stop
sudo /etc/init.d/jenkins stop
Und ein update der Package:
sudo apt-get update
sudo apt-get upgrade
2. Um den openLdap-Server zu installieren auf der Konsole die folgenden Package installieren:
sudo apt-get install slapd ldap-utils
Ergebnis:
slapd (2.4.31-1+nmu2) wird eingerichtet ...
Creating new user openldap... done.
Creating initial configuration... done.
Creating LDAP directory... done.
[ ok ] Starting OpenLDAP: slapd.
ldap-utils (2.4.31-1+nmu2) wird eingerichtet ...
2xPasswort eingeben in folgenden Dialogen:
Dann den Server konfigurieren mit:
sudo dpkg-reconfigure slapd
Dann im Dialog auf Nein klicken und eine freie Domäne wählen
z.b. thomas-wenzlaff.lan
den Namen der Organisation wählen
z.b. TWSoft
Dann 2 x Passwort eingeben wie oben und die Datenbank wählen: HDB
und folgende Antworten in den Dialogen wählen:Nein – Ja – Nein
Ergebnis:
[ ok ] Stopping OpenLDAP: slapd.
Moving old database directory to /var/backups:
- directory unknown... done.
Creating initial configuration... done.
Creating LDAP directory... done.
[ ok ] Starting OpenLDAP: slapd.
3. Jetzt noch phpldapadmin für die leicht Verwaltung installieren:
sudo apt-get install php5-fpm php5-cli php5-ldap php-apc phpldapadmin nginx
Die config.php
sudo nano /etc/phpldapadmin/config.php
wie folgt anpassen (suchen mit STRG+W):
//Orginal Zeile suchen
$servers->setValue('server','base',array('dc=example,dc=com'));
// anpassen wie oben eingegeben
$servers->setValue('server','base',array('dc=thomas-wenzlaff,dc=lan'));
//Orginal Zeile suchen
$servers->setValue('login','bind_id','cn=admin,dc=example,dc=com');
// anpassen wie oben eingegeben
$servers->setValue('login','bind_id','cn=admin,dc=thomas-wenzlaff,dc=lan');
4. Nun noch den Server nginx konfigurieren, in dem die Datei default bearbeitet wird:
sudo nano /etc/nginx/sites-available/default
Den vorhanden server Block löschen, und diesen einfügen:
server {
root /usr/share/phpldapadmin/htdocs;
index index.php index.html;
server_name localhost;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}}
Nach dem speichern den nginx-Server restarten mit:
sudo service nginx restart
oder sudo /etc/init.d/nginx restart
Den nginx-Server kann man übrigens mit sudo /etc/init.d/nginx stop
stoppen, mit sudo /etc/init.d/nginx start
starten und den Status ob er läuft oder nicht mit sudo /etc/init.d/nginx status
abfragen.
Wenn folgende Fehlermeldung kommt:
Restarting nginx:
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
nginx.
Evl. laufenden Apache oder was sonst so auf den Port 80 läuft, wie oben in den vorbereitungen beschrieben runterfahren.
5. Test des Server
Im Browser die folgende URL aufrufen:
http://[Raspberry-Pi-Adresse>]/index.php
Cool, es wird die LDAP Admin Seite angezeigt.
Links im Baum auf „Anmelden“ klicken.
6. LDAP-Client installation
sudo apt-get install libpam-ldapd libnss-ldapd
Im Dialog die Server ULR eingeben, z.B.
ldapi://[Raspberry-Pi-Adresse]:389/
Dann den Basis Namen:
dc=thomas-wenzlaff,dc=lan
Im folgenden Dialog alle Services anwählen.
Dann die Datei:
sudo nano /etc/pam.d/common-session
bearbeiten. Einfach hinten folgende Zeile hinzufügen:
session required pam_mkhomedir.so umask=0022 skel=/etc/skel
7. LDAP Client checken mit:
sudo getent passwd
es werden die angelegten Nutzer ausgeben.
Habe ich einen Schritt vergessen?