Mein Platz im Internet für Themen wie Linux, BSD, Server, Netzwerk, Knowhow und Besserwisserei

Bulk Move Users in OpenLDAP (Skript)


Hat man ein LDAP Verzeichnis mit vielen Benutzern, dann ist einem angeraten direkt zu Beginn ein gutes, belastbares Design zu erstellen. Tut man das nämlich nicht, so hat man schnell einige hundert Benutzerkonten an falscher Stelle.

Wer dann nacharbeiten möchte, der such sich entweder gescheite Tools, oder macht es selbst. Dabei hat man eigentlich nicht viele Möglichkeiten. Im Grunde genommen geht es nur darum den DN eines Eintrages zu ändern, sodass dieser dann zum neuen Design passt.

Wenn man Beispielsweise 2000 Benutzer in einer OU hat, davon aber nur 789 zu einer bestimmten Gruppe gehörende verschieben will, so kann man das natürlich auch per Hand machen. Oder aber, man jongliert mit den vorhandnen Informationen und sichert sich gleich für die Zukunft ab, denn mit hoher Wahrscheinlichkeit wird so etwas in ähnlicher Form wieder vorkommen.

Zunächst einmal brauch man alle Benutzer einer Gruppe, und das möglichst durch Leerzeichen getrennt. Anschließend muss man sich eine LDIF zusammenschrauben die es einem ermöglicht ein Konto zu verschieben. In schnell und einfach sieht das dann so aus:

#!bin/bash
PASSWORD=STRENG_GEHEIMES_PASSWORD

for i in $(ldapsearch -x cn=G_R_U_P_P_E_N_N_A_M_E | grep memberUid | cut -f 2 -d " " | sort)
do
 ldapsearch -x -s one -b ou=Users,dc=DOMAIN,dc=DE uid=$i | grep -i dn
  if [ "$?" -eq "0" ]; then
  echo "dn: uid=$i,ou=Users,dc=DOMAIN,dc=DE\nchangetype: moddn\nnewrdn: uid=$i\ndeleteoldrdn: 1\nnewsuperior: ou=extern,ou=Users,dc=DOMAIN,dc=DE" \
 | ldapmodify -x -w $PASSWORD -D "cn=Manager,dc=DOMAIN,dc=DE" -H ldap://localhost

  echo "$i wurde verschoben"
 fi
done

 

Das Leben ist schön.

Schlagwörter LDAP, Skript, Server, Admin

LDAP Backupskript


Betreibt man einen LDAP Server, so will man sicherlich das ein oder andere Mal eine Sicherung machen. Ich möchte das ganz oft und da die Daten in der Regel ziemlich klein sind, kann ich das dann auch.

Dazu habe ich mir ein Skript gebaut, welches die Arbeit für mich erledigt. Es wird immer der komplette LDAP-Baum in eine LDIF Datei gesichert, sodass ich im Zweifelsfall alles schnell wieder rekonstruieren kann.

#!/bin/bash
DATE=`date +%Y%m%d-%H%M%S`
DST=/PATH/TO/BACKUP/
DEBUG=1
LDIF=SLAPBACKUP-$DATE.ldif

if [ $DEBUG -eq 1 ]

 then
  echo /usr/sbin/slapcat -l $DST$LDIF
  /usr/sbin/slapcat -l $DST$LDIF 2>/dev/null
 else
  /usr/sbin/slapcat -l $DST$LDIF 2>/dev/null
fi

find $DST -type f -mmin +60 -name "*.ldif" -exec bzip2 {} \;
find $DST -type f -mtime +14 -name "*.bz2" -exec rm -f {} \;

exit 0

Dieses Skript rufe ich dann mittels Crontab alle Stunde auf und sichere mir so kontinuierlich den Zustand des Verzeichnisses. Abgelegt wird immer eine neue Datei mit Zeitstempel. Ältere Dateien werden komprimiert und nach 60 Tagen gelöscht.

So mag ich das.

Schlagwörter Admin, LDAP, Netzwerk, Server, Sicherheit, Skript

samba4 Openldap Backend


Es ist schon ein kleines Trauerspiel. Da begleitet mich Samba mindestens genau so lange durch meinen Linux/Unix Alltag wie die Erkenntnis, dass ein XClient getrennt von einem Server läuft und dann bemerkt man im langen Wechsel von Version 3 zu 4 doch einen erheblichen Hipster-Beigeschmack.

Die Rede ist davon, dass noch bei Samba3 wunderbare Bücher zu finden waren. Werke die nicht nur die Technik, sondern auch Charakter beschrieben und mitgebracht haben. Auf diesem Wege wurde man tief in die Möglichkeiten und Werkzeuge eingeführt, welche sich hier bieten. Mit Samba4 ist hiervon kaum noch die Rede. Klar, Microsoft ist im Boot und ich finde es sehr löblich, dass hierdurch die Schritte der Entwicklung vereinfacht wurden. Doch der Beigeschmack, wenn man sich die Topics des LPI anschaut und noch mehr wenn man ein Buch oder Informationen sucht ist ein wenig Bitter.

So erging es mir auch bei meinem Bestreben einen Samba4 Server als neuen Fileserver bereitzustellen, welcher seine Benutzer gegen ein OpenLDAP authentifiziert. Insgesamt kein reisen Hexenwerk möchte man meinen. Verschafft man sich einen Überblick indem man im Netz sucht und auf Erfahrungsberichte hofft, so wird man schnell enttäuscht. Die Rede ist immer wieder "der Aufwand lohnt nicht!" oder "Migration zu Samba Active Directory"... Sorry, dass ist nicht das was ich will. Ich will weder einen Nameserver auf meinem Fileserver laufen lassen, noch will ich meinen vorhandenen Stamm auf selben migrieren und alle Dienste umbauen. Ich will einfach nur einen Dateiserver haben der tut, was ein Dateiserver tut. Nur eben neuer und vielleicht ein wenig besser.

Lange Rede kurzer Sinn. Fündig geworden bin ich nicht. Die Tägliche Unruhe lies mich auch keine klaren Tage damit verbringen die Manpages auf eventuelle Fallstricke hin zu untersuchen. Also habe ich zunächst einmal gebaut, was ich so bauen konnte. Als dann eine ruhige Minute kam und die Muse stieg, warf ich beherzt den Debug-Modus an und kam recht schnell auf eine mögliche Ursache.

Die Lokale Domänen-SID des Samba, welche durch das Eintragen der OpenLDAP Daten in der Konfiguration einen Zugriff auf das Verzeichnis ermöglichte stimmte nicht mit der bestehenden Domäne überein. Das schien der Grund zu sein, weshalb eine Authentifizierung fehlschlägt.

Ironischer Weise findet man mit diesen Informationen dann auch Gleichgesinnte (http://lapsz.eu/blog/2013/09/04/standalone-samba-server-with-ldap-authentication/). Somit war mein "Problem" dann auch kein Problem mehr und wir konnten uns alle lieb haben. Seit dem arbeitet fröhlich der Samba als lokaler (neuer) Fileserver im Netzwerk und wartet auf all die Tollen Verbindungen.