Benötigte Pakete
- apt install slapd ldap-utils ldapscripts nslcd
- dpkg-reconfigure -p low slapd
Grundstruktur der Datenbank
- Einträge können mit ldapadd hinzugefügt werden
- Damit der Befehl nicht zu unübersichtlich wird kann man den Eintrag auch in einer Datei definieren
- vim struktur.ldif
dn: ou=users,dc=lab1xx,dc=it
objectClass: organizationalUnit
ou: users
dn: ou=groups,dc=lab1xx,dc=it
objectClass: organizationalUnit
ou: groups
dn: ou=hosts,dc=lab1xx,dc=it
objectClass: organizationalUnit
ou: hosts
- ldapadd -x -D cn=admin,dc=lab1xx,dc=it -w 123Start$ -f struktur.ldif
adding new entry "ou=users,dc=lab1xx,dc=it"
adding new entry "ou=groups,dc=lab1xx,dc=it"
adding new entry "ou=hosts,dc=lab1xx,dc=it"
Einträge einfügen/löschen
Manuell
dn: cn=it,ou=groups,dc=lab1xx,dc=it
objectClass: posixGroup
cn: it
gidNumber: 3001
- ldapadd -x -D cn=admin,dc=lab1xx,dc=it -w 123Start$ -f group.ldif
adding new entry "cn=it,ou=groups,dc=lab1xx,dc=it"
- ldapsearch -x -LLL -H ldap://127.0.0.1 -b dc=labxx,dc=it
- vim user.ldif
dn: uid=leroy,ou=users,dc=lab1xx,dc=it
cn: leroy
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
uid: leroy
uidNumber: 2001
gidNumber: 3001
homeDirectory: /home/leroy
loginShell: /bin/bash
- ldapadd -x -D cn=admin,dc=lab1xx,dc=it -w 123Start$ -f user.ldif
adding new entry "uid=leroy,ou=users,dc=lab1xx,dc=it"
- Einen Benutzer zu einer LDAP-Gruppe hinzufügen
- vim add.ldif
dn: cn=it,ou=groups,dc=labxx,dc=it
changetype: modify
add: memberUid
memberUid: neuer.benutzer
- ldapmodify -x -D "cn=admin,dc=lab1x,dc=it" -W -f add.ldif
- Alle Blätter eines Zweiges müssen zuerst gelöscht werden, bevor die darüberliegende Struktur gelöscht werden kann
- ldapdelete -x -D cn=admin,dc=lab1xx,dc=it -w 123Start$ "ou=hosts,dc=lab1xx,dc=it"
- ldapdelete -x -D cn=admin,dc=lab1xx,dc=it -w 123Start$ "cn=it,ou=groups,dc=lab1xx,dc=it"
- ldapdelete -x -D cn=admin,dc=lab1xx,dc=it -w 123Start$ "uid=leroy,ou=users,dc=lab1xx,dc=it"
- ldapdelete -x -D cn=admin,dc=lab1xx,dc=it -w 123Start$ "ou=groups,dc=lab1xx,dc=it"
- ldapdelete -x -D cn=admin,dc=lab1xx,dc=it -w 123Start$ "ou=users,dc=lab1xx,dc=it"
ldapscripts
- Da das Füllen einer solchen Datenbank leicht automatisierbar ist, gibt es schon Skripte, die genau diese Aufgabe erfüllen
- Damit die Skripte funktionieren müssen aber die Grundstruktur da sein
- ldapadd -x -D cn=admin,dc=lab1xx,dc=it -w 123Start$ -f struktur.ldif
- vim /etc/ldapscripts/ldapscripts.conf
SUFFIX="dc=lab1xx,dc=it"
GSUFFIX="ou=groups"
USUFFIX="ou=users"
MSUFFIX="ou=hosts"
BINDDN="cn=admin,dc=lab1xx,dc=it"
USHELL="/bin/bash"
UHOMES="/home/%u"
CREATEHOMES="yes"
HOMESKEL="/etc/skel"
BINDPWDFILE="/etc/ldapscripts/ldapscripts.passwd"
GIDSTART="10000" # Group ID
UIDSTART="10000" # User ID
MIDSTART="20000" # Machine ID
GCLASS="posixGroup" # Leave "posixGroup" here if not sure !
PASSWORDGEN="pwgen"
RECORDPASSWORDS="no"
PASSWORDFILE="/var/log/ldapscripts_passwd.log"
LOGTOFILE="yes"
LOGFILE="/var/log/ldapscripts.log"
LOGTOSYSLOG="no"
SYSLOGFACILITY="local4"
SYSLOGLEVEL="info"
LDAPSEARCHBIN="/usr/bin/ldapsearch"
LDAPADDBIN="/usr/bin/ldapadd"
LDAPDELETEBIN="/usr/bin/ldapdelete"
LDAPMODIFYBIN="/usr/bin/ldapmodify"
LDAPMODRDNBIN="/usr/bin/ldapmodrdn"
LDAPPASSWDBIN="/usr/bin/ldappasswd"
LDAPSEARCHOPTS="-o ldif-wrap=no"
GETENTPWCMD=""
GETENTGRCMD=""
GTEMPLATE=""
UTEMPLATE=""
MTEMPLATE=""
- Zusätzlich muss das LDAP Admin-Passwort hinterlegt sein
- echo -n "123Start$" > /etc/ldapscripts/ldapscripts.passwd
Successfully added group it to LDAP
Successfully added user leroy to LDAP
Successfully set password for user leroy
New Password:
Retype New Password:
Successfully set password for user uid=leroy,ou=users,dc=lab1xx,dc=it
Testen
...
xinux:x:1000:1000:xinux,,,:/home/xinux:/bin/bash
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
tcpdump:x:106:113::/nonexistent:/usr/sbin/nologin
openldap:x:107:114:OpenLDAP Server Account,,,:/var/lib/ldap:/bin/false
leroy:*:10000:10000:leroy:/home/leroy:/bin/bash
...
xinux:x:1000:
systemd-coredump:x:999:
tcpdump:x:113:
openldap:x:114:
wireshark:x:115:xinux
it:*:10001: