🖥️ldap
➡️This is a iomand-line reference manual for iomands and iomand iobinations that you don’t use often enough to remember it. This cheatsheet explains the ldap iomand with important options and switches using examples.
14 minute read
▁ ▂ ▃ ▄ ꧁ 🔴☠ ioMANDLINE-KUNGFU WITH CHEATSHEETS ☠🔴꧂▅ ▃ ▂ ▁
# ██╗ ██████╗ █████╗ ██████╗
# ██║ ██╔══██╗██╔══██╗██╔══██╗
# ██║ ██║ ██║███████║██████╔╝
# ██║ ██║ ██║██╔══██║██╔═══╝
# ███████╗██████╔╝██║ ██║██║
# ╚══════╝╚═════╝ ╚═╝ ╚═╝╚═╝
#----------------#
|# Ldap Notizen #|
#----------------#
ldapsearch -vvv -LLL -b "CN=Tux Tuxy,OU=USR,OU=linuxserver0598,O=LXU,C=com" -H ldap://srv8504101pdf.linuxserver0041.lxu.io
ldapsearch -x -vvv -LLL -b "CN =Tux Tuxy,OU=USR,OU=linuxserver0598,O=LXU,C=com" -H ldap://srv8504101pdf.linuxserver0041.lxu.io
ldapsearch -x -vvv -LLL -b "C=com" -H ldap://srv8504101pdf.linuxserver0041.lxu.io
ldapsearch -x -vvv -LLL -b "cn =config" -H ldap://srv8504101pdf.linuxserver0041.lxu.io
ldapsearch -Y EXTERNAL -vvv -LLL -b "cn=config" -H ldap://srv8504101pdf.linuxserver0041.lxu.io
ldapsearch -x -vvv -LLL -b "c=com" -H ldap://srv8504101pdf.linuxserver0041.lxu.io
# ldap dump erstellen
cd /tmp/
slapcat -n 1
slapcat -n 1 -l dump.ldif
less dump.ldif
scp dump.ldif srv8504101pdf.linuxserver0041.lxu.io:/root/
# ldap dump Einspielen
ls -l /var/lib/ldap/
cat /var/lib/ldap/DB_CONFIG
slapcat --help
slapcat -n 1 -l /tmp/dump.ldif
https://blog.tralios.de/2016/09/umzug-einer-ldap-datenbank-auf-einen-neuen-server/
############################### LDAP History srv8504101pdf ###################################
cd /etc/openldap/
vi slapd.conf
vi slapd.conf.default
vi slapd.conf.YaSTsave
vi ldap.conf
cd slapd.d
vi cn\=config.ldif
cd cn\=config/
cd cn\=schema/
vi cn\=\{0\}core.ldif
zypper update
reboot; exit
less messages
grep "error" *
grep "error" * | less
cd /etc
ls -latr
grep -i ldap *
cd /var/log
ls -latr
tail -f messages
cd /tmp/
slapcat -n 1
slapcat -n 1 -l dump.ldif
less dump.ldif
scp dump.ldif srv8504101pdf.linuxserver0041.lxu.io:/root/
zypper up
zypper se bind
zypper up
cat /etc/SuSE-release
l -tr
du -shx pdf
zypper intall ccze
zypper se ccze
ldapsearch -LLL -D cn=Administrator,C=com -w admin -x -t -b C=com -H ldap://srv8504101pdf.linuxserver0041.lxu.io
ldapsearch -LLL -D cn=Administrator,C=com -w admin -x -t -b C=com -H ldap://srv8504101pdf.linuxserver0041.lxu.io | grep -i TEST
ldapsearch -LLL -D cn=Administrator,C=com -w admin -x -t -b C=com -H ldap://srv8504101pdf.linuxserver0041.lxu.io | grep -i Testuser.lotusnotesen
ldapsearch -LLL -D cn=Administrator,C=com -w admin -x -t -b C=com -H ldap://srv8504101pdf.linuxserver0041.lxu.io | grep -i Testuser.lotusnotesen -A15
ldapsearch -LLL -D cn=Administrator,C=com -w admin -x -t -b C=com -H ldap://srv8504101pdf.linuxserver0041.lxu.io | grep -i Testuser.lotusnotesen -B10 -A20
ldapsearch -LLL -b "CN=MAX MUSTERMAN,OU=USR,OU=linuxserver0093,O=LXU,C=com" -H ldap://srv8504101pdf.linuxserver0041.lxu.io
vi import_ad_ldif.sh
ldapsearch -LLL $OpenLDAPAccess -x -b C=com -H ldap://srv8504101pdf.linuxserver0041.lxu.io "(employeeNumber=DID0019431)"
ldapsearch -LLL "-D cn=Administrator,C=com -w admin" -x -b C=com -H ldap://srv8504101pdf.linuxserver0041.lxu.io "(employeeNumber=DID9819431)"
ldapsearch -LLL "-D cn=Administrator,C=com -w admin" -x -b C=com -H ldap://srv8504101pdf.linuxserver0041.lxu.io "(employeeNumber=9819431)"
ldapsearch -LLL "-D cn=Administrator,C=com -w admin" -x -b C=com -H ldap://srv8504101pdf.linuxserver0041.lxu.io "(uid: unixtux)"
ldapsearch -LLL "-D cn=Administrator,C=com -w admin" -x -b C=com -H ldap://srv8504101pdf.linuxserver0041.lxu.io "uid: unixtux"
ldapsearch -LLL -b "CN=Quentin unixtux,OU=USR,OU=linuxserver0534,O=LXU,C=com" -H ldap://srv8504101pdf.linuxserver0041.lxu.io uid
ldapsearch -vvv -LLL -b "CN=Quentin unixtux,OU=USR,OU=linuxserver0534,O=LXU,C=com" -H ldap://srv8504101pdf.linuxserver0041.lxu.io uid
ldapsearch -vvv -LLL -b "CN=Quentin unixtux,OU=USR,OU=linuxserver0534,O=LXU,C=com" -H ldap://srv8504101pdf.linuxserver0041.lxu.io
cat /var/tmp/ldif_ad/TUTTUXY.ldif
ldapsearch -vvv -LLL -b "CN=Tux Tuxy,OU=USR,OU=linuxserver059859,O=LXU,C=com" -H ldap://srv8504101pdf.linuxserver0041.lxu.io
vgdisplay
lvextend -r --size +5G /dev/system/var
find . -xdev -type f -size +50000k -exec ls -lh {} \; | awk "{ print $8 `: ` $5 }"
find . -xdev -type f -size +50000k -exec ls -lh {} \; | awk "{ print $8 `: ` $5 }"
find . -xdev -type f -size +50000k -exec rm {} \; | awk "{ print $8 `: ` $5 }"
crontab -r
crontab -e
ldapsearch -xLLL -b dc=LXU,dc =io
ldapsearch -xLLL -b dc=LXU,dc =com
ldapsearch -vvv -LLL -b "CN=Tux Tuxy,OU=USR,OU=linuxserver0598,O=LXU,C=com" -H ldap://srv8504101pdf.linuxserver0041.lxu.io
cat /etc/openldap/ldap.conf
ldapsearch -x -vvv -LLL -b "CN =Tux Tuxy,OU=USR,OU=linuxserver0598,O=LXU,C=com" -H ldap://srv8504101pdf.linuxserver0041.lxu.io
ldapsearch -x -vvv -LLL -b "C=com" -H ldap://srv8504101pdf.linuxserver0041.lxu.io
ldapsearch -x -vvv -LLL -b "cn =config" -H ldap://srv8504101pdf.linuxserver0041.lxu.io
ldapsearch -Y EXTERNAL -vvv -LLL -b "cn=config" -H ldap://srv8504101pdf.linuxserver0041.lxu.io
/etc/init.d/ldap start & tail -f /var/log/messages
ldapsearch -x -vvv -LLL -b "c=com" -H ldap://srv8504101pdf.linuxserver0041.lxu.io
#============================= Funktionsbeschreibung /root/LDAP-README.txt =====================================#
# _ ____ _ ____ ____ _____ _ ____ __ __ _____
# | | | _ \ / \ | _ \ | _ \| ____| / \ | _ \| \/ | ____|
# | | | | | |/ _ \ | |_) | | |_) | _| / _ \ | | | | |\/| | _|
# | |___| |_| / ___ \| __/ | _ <| |___ / ___ \| |_| | | | | |___
# |_____|____/_/ \_\_| |_| \_\_____/_/ \_\____/|_| |_|_____|
#
#
# Dieses Script erstellt ein Backup des VOIP-LDAP Inhaltes und verschiebt die .ldif Datei auf den srv8041backup
#
#==============================================================================================================#
#---------------#
# LDAP Searches
#--------------------------#
# AD-Search welche User haben die Gruppe AR-NWS-Jabber-Users im AD
(&(objectCategory=person)(objectClass=user)(|(linuxserver0AccountType=Internal)(linuxserver0AccountType=External)(linuxserver0AccountType=anonymous))(memberof=CN=AR-NWS-Jabber-Users,OU=NWServices,OU=MISC,OU=SERV,DC=LXU-ds,DC=LXU,DC=io))
# Selbe AD-Search welche User haben die Gruppe AR-NWS-Jabber-Users bei verwendung von OID's
(&(objectCategory=person)(objectClass=user)(|(linuxserver0AccountType=Internal)(linuxserver0AccountType=External)(linuxserver0AccountType=anonymous))(memberof:1.2.840.113556.1.4.1941:=CN=AR-NWS-Jabber-Users,OU=NWServices,OU=MISC,OU=SERV,DC=LXU-ds,DC=LXU,DC=io))
(&(objectCategory=person)(objectClass=user)(|(linuxserver0AccountType=Internal)(linuxserver0AccountType=External)(linuxserver0AccountType=anonymous))(memberof=CN=AR-NWS-Jabber-Users,OU=NWServices,OU=MISC,OU=SERV,DC=LXU-ds,DC=LXU,DC=io))
(&(objectCategory=person)(objectClass=user)(|(linuxserver0AccountType=Internal)(linuxserver0AccountType=External)(linuxserver0AccountType=anonymous))(memberof:1.2.840.113556.1.4.1941:=CN=AR-NWS-Jabber-Users,OU=NWServices,OU=MISC,OU=SERV,DC=LXU-ds,DC=LXU,DC=io))
# fertige Search:
ldapsearch -E pr=1000/noprompt -D pdfuser -w PASSWORT -b DC=LXU-ds,DC=LXU,DC=io -LLL -x -H ldap://activedirectory.ldap.lxu.io "(&(objectCategory=person)(objectClass=user)(|(linuxserver0AccountType=Internal)(linuxserver0AccountType=External)(linuxserver0AccountType=anonymous))(memberof=CN=AR-NWS-Jabber-Users,OU=NWServices,OU=MISC,OU=SERV,DC=LXU-ds,DC=LXU,DC=io))" cn displayName | grep -i 'cn: ' | cut -d ' ' -f2
USER1
USER2
# Hinzufügen eines einzelnen .ldif Eintrages
ldapadd -vc -D cn=Administrator,C=com -w admin -x -H ldap://ldap.linuxserver0041.lxu.io -f USER.ldif
# LDAP Search nach User
ldapsearch -L -x -D '[email protected]' -w 'PASSWORD' -H ldap://activedirectory.ldap.lxu.io -E pr=1000/noprompt -b 'DC=LXU-ds,DC=LXU,DC=io' "(&(objectCategory=person)(objectClass=user)(linuxserver0ManagedBy=*)(&(memberof=CN=AR-PRX-ALLOW,OU=Proxy,OU=MISC,OU=SERV,DC=LXU-ds,DC=LXU,DC=io)))" | egrep '(distinguishedName:|linuxserver0ManagedBy:)' | sed 'N;s/^distinguishedName: CN=\([-_A-Za-z0-9]*\),.*linuxserver0ManagedBy: \([0-9\]*\)$/\1;\2/'
# LDAP Search Test
ldapsearch -vvv -LLL -b "CN=MAX MUSTER,OU=USR,OU=linuxserver0698,O=LXU,C=DE" -H ldap://activedirldap.linuxserver0041.lxu.io
### get oldproxy user ###
# ldapsearch -LLL -x -D '[email protected]' -w 'PASSWORT' -H ldap://activedirectory.ldap.lxu.io -E pr=1000/noprompt -b 'DC=LXU-ds,DC=LXU,DC=io' "(CN=*prx_oldproxy)" member
ldapsearch -LLL -x -D '[email protected]' -w 'PASSWORT' -H ldap://activedirectory.ldap.lxu.io \
-E pr=1000/noprompt -b 'DC=LXU-ds,DC=LXU,DC=io' "(CN=*prx_proxy)" member \
| grep -i OU=USERS \
| sed -e 's/member: CN=\([a-Z0-9\s-]*\),OU=.*/\1/' \
| grep -v member \
| sort >$TMPOLDPROXYUSER
### get skype user ###
# ldapsearch -LLL -x -D '[email protected]' -w 'PASSWORT' -H ldap://activedirectory.ldap.lxu.io -E pr=1000/noprompt -b 'DC=LXU-ds,DC=LXU,DC=io' "(CN=*prx_instantmessaging)" member
ldapsearch -LLL -x -D '[email protected]' -w 'PASSWORT' -H ldap://activedirectory.ldap.lxu.io \
-E pr=1000/noprompt -b 'DC=LXU-ds,DC=LXU,DC=io' "(CN=*prx_instantmessaging)" member \
# # # | grep -i OU=USERS \
| sed -e 's/member: CN=\([a-Z0-9\s-]*\),OU=.*/\1/' \
| grep -v member \
| sort >$TMPSKYPEUSER
### fetch mailaddresses from lotusnotes-LDAP
:### get whole lotusnotes-ldap data accessible via anonymous (no user neecomd)
#ok# ldapsearch -L -x -H ldap://lotusnotesldap.linuxserver0041.lxu.io "(mailaddress=*LXU.org)"
ldapsearch -L -x -H ldap://lotusnotesldap.linuxserver0041.lxu.io "(mailaddress=*LXU.org)" > $lotusnotes_TEMPFILE1 || { echo "ERROR: problem with LDAP query on lotusnotesldap.linuxserver0041.lxu.io"; exit 1; }
#ok# adldapkelb wird abgefragt und in die Variable $aduserfile geschrieben
ldapsearch -E pr=1000/noprompt -D MYUSER -w PASSWORD -b DC=LXU-ds,DC=LXU,DC=io -LLL -x -H ldap://activedirectory.ldap.lxu.io "(&(objectCategory=person)(objectClass=user)(|(linuxserver0AccountType=Internal)(linuxserver0AccountType=External))(linuxserver0AccountStatus=active))" cn displayName > $aduserfile
#ok# Sucht den displayName aus der Variablen $aduserfile und schreibt diesen in die Varaibale $aduser_mit_umlaut
ldapsearch -E pr=1000/noprompt -D MYUSER -w PASSWORD -b DC=LXU-ds,DC=LXU,DC=io -LLL -x -H ldap://activdirectory.ldap.lxu.io "(&(objectCategory=person)(objectClass=user)(|(linuxserver0MailType=internal-verified)(linuxserver0AccountType=External))(linuxserver0AccountStatus=active))" cn displayName > $aduserfile
###
ldapsearch -D cn='LDAP User',ou=usr,ou=linuxserver0041,O=LXU,C=DE -w PASSWORT "-b $lotusnotesDIDuser" -LLL -x -H ldap://$lotusnotesserver "(employeeid=$LXUDID)" cn mail postaladdress telephonenumber facsimiletelephonenumber mobile l postalcode physicaldeliveryofficename givenname sn objectclass location employeeid | sed -e "/dominoPerson/Id" -e "/mobile::/Id" -e '/telephonenumber:/ s%/%-%g' -e "/^ *$/d" >${/var/tmp/ldif_ad}/${searchpattern}.ldif
########################
# INFOS LPIC 3 zu LDAP #
################------------------------------------------##################
#######
# 210.3 LDAP Client
#####################
apt install ldap-utils
ldapsearch -x -W -b dc=example,dc=io -H ldap://localhost -D cn=admin,dc=example,dc=io
-x keine SASL Authentifizierung sondern SimpleBind
-W soll mich nach Passwort fragen
-b welchen Baum will ich befragen
-H Welcher Host ldap:// oder ldapi:// (Über locale Socketdatei) oder ldaps:// (Verschlüsselt)
-D Gibt den Benutzer an mit dem ich mich anmelden will
-LLL Sorgt dafür das die Ausgabe kompakter wird
dn Sorgt dafür das man nur noch den Distinguished Name zurückbekommt.
# Erstellen einer .ldaprc im /home
#-----------------------------------#
Um nicht jedesmal diesen ewig langen Befehl eingeben zu müssen, kann man einer rc Datei erstellen.
vim ~/.ldaprc
#--------------------------------------
BASE dc=example,dc=io
BINDDN cn=admin,dc=example,dc=io
HOST localhost
#-------------------------------------
Nun reicht folgene ldapsuche:
ldapsearch -x -W -LLL dn
# LDAP Benutzer anlegen
#-----------------------#
Voraussetzung: nis.schema und inetorgperson.schema müssen eingebunden sein
DOMAIN="dc=example,dc=io"
# Eine Variable in der Bash erstellen
# 1.) OrganisationsUnit anlegen
ldapadd -x -W <<LDIF
-> Anschließend hier text reinpasten:
--------------------------------------
dn: ou=people,$DOMAIN
objectclass: top
objectClass: organizationalUnit
ou: people
dn: ou=groups,$DOMAIN
objectclass: top
objectclass: organizationalUnit
ou: groups
--------------------------------------
-> Abschließend gibt man folgendes ein und ENTER:
LDIF
# 2.) Gruppe anlegen
ldapadd -x -W <<LDIF
dn: cn=ldapusers,ou=groups,$DOMAIN
objectclass: top
objectclass: posixGroup
gidNumber: 10000
cn: ldapusers
LDIF
# 2.) User anlegen
ldapadd -x -W <<LDIF
dn: uid=raspberrypi,ou=people,$DOMAIN
objectclass: top
objectclass: posixAccount
objectClass: account
cn: Raspberry Pi
uid: raspberrypi
uidNumber: 10000
gidNumber: 10000
homeDirectory: /home/pi
userPassword: pi
loginShell: /bin/bash
LDIF
# 3. LDAP USER Passwd
ldappasswd -x -W -s pi uid=raspberrypi,ou=people,dc=example,dc=io
# 4. LDAP Abfragen mit Filter
Aufgabe 1: Alle objectKlassen die zur Objektklasse organizationalUnit gehören ausgeben lassen
ldapsearch -x -W -LLL '(objectClass=organizationalUnit)'
dn: ou=groups,dc=example,dc=io
objectClass: top
objectClass: organizationalUnit
ou: groups
dn: ou=people,dc=example,dc=io
objectClass: top
objectClass: organizationalUnit
ou: people
Aufgabe 2: Zwei Abfragen miteinander verknüpfen - Selbe Abfrage - nur jetzt die Objekte bei der die ou=groups ist,
und dann nur die ou anzeigen lassen:
ldapsearch -x -W -LLL '(&(objectClass=organizationalUnit)(ou=groups))' ou
dn: ou=groups,dc=example,dc=io
ou: groups
# 5. Changetype Operationen
ldapmodify - der komplexerste LDAP Befehl
ldapmodify -f /tmp/entrymods
--> Datei /tmp/entrymods anlegen
--> Dort stehen die Anweisungen drin, wie das Object/Attribut geändert werden soll
--> Beispiel:
dn: cn=Modify Me, dc=example,dc=io
changetype: modify
replace: mail
mail: [email protected]
-
add: title
title: Grand Poobah
-
add: jpegPhoto
jpegPhoto:< file:///tmp/modme.jpeg
-
delete: description
-
--> Oben steht erstmal welches Object ich verändern möchte
--> Schlüsselwort changetype z.B. ersetzte, hinzufügen, löschen (replace,add,delete)
# 6. Löschen von Einträgen
Aufgabe 3: Lösche nun wieder den User raspberrypi aus dem LDAP
ldapdelete -x -W dn: uid=raspberrypi,ou=people,dc=example,dc=io
loglevel <integer> [...]
Specify the level at which debugging statements and operation statistics should be syslogged (currently logged to the syslogd(8) LOG_LOCAL4 facility). They must be considered subsystems rather than increasingly
verbose log levels. Some messages with higher priority are logged regardless of the configured loglevel as soon as any logging is configured. Log levels are additive, and available levels are:
1 (0x1 trace) trace function calls
2 (0x2 packets) debug packet handling
4 (0x4 args) heavy trace debugging (function args)
8 (0x8 conns) connection management
16 (0x10 BER) print out packets sent and received
32 (0x20 filter) search filter processing
64 (0x40 config) configuration file processing
128 (0x80 ACL) access control list processing
256 (0x100 stats) connections, LDAP operations, results (reiomended)
512 (0x200 stats2) stats log entries sent
1024 (0x400 shell) print iomunication with shell backends
2048 (0x800 parse) entry parsing
16384 (0x4000 sync) LDAPSync replication
32768 (0x8000 none) only messages that get logged whatever log level is set
The desired log level can be input as a single integer that iobines the (ORed) desired levels, both in decimal or in hexadecimal notation, as a list of integers (that are ORed internally), or as a list of the names
that are shown between brackets, such that
loglevel 129
loglevel 0x81
loglevel 128 1
loglevel 0x80 0x1
loglevel acl trace
# 210.4 LDAP Server
######################
LDAP Server ist ein Verzeichnisdienst und steht meistens im Backend und dient als Konfigurationquelle oder Authentifizierungsquelle für andere Dienste
Es gibt Openldap, LDAP von Novell & Sun und es gibt ActiveDirectory sowie FedoreDirectory Server, welche das ldap Protokoll implementieren.
--> Ein SambaServer kann seine User/Pass dort ablegen
--> Ein LinuxRechner kann einen LDAP Server als Anmeldeserver verwenden
--> Postfix kann das Mailrouting über Tabellen die im LDAP Server abgelegt sind organisieren
DAP war der Vorgänger von LDAP - LDAP steht für Lightweight Directory Access Protokol
LDAP ist ein Protokoll. Daher kann der Admin konfigurieren wo der LDAP Server seine Daten abspeichert, denn dies ist nicht im
Protokol geregelt. Man hat Verschiedene Möglichkeiten dies zu tun, wie z.B. Stasrv85rt wie hdb und mdb. Es gibt aber auch Setups bei denen Postgressdatenbank als Backend benutzt. Oder man kann LDAP auch als Meta-Server konfigurieren, so das meine Anfragen quasi als Proxy funktionieren.
dn = distinguished Name (eindeutiger Name im LDAP Baum)
dc = Domain ioponend
cn = iomon name
ou = Organisations Unit
LDAP Verzeichnisbaum
[getrennter baum]
dc=io cn=config # dn Schreibweise: dn: dc=io oder dn: cn=config
/ \
/ \
dc=example \ # dn Schreibweise: dn: dc=example,dc=io
/ \ \
/ \ \
cn=admin ou=people ou=groups # dn Schreibweise: dn: cn=admin,dc=example,dc=io
| |
| |
uid=pi cn=ldapusers
Für die Bennenung bin ich relativ frei mal ou mal uid mal cn -> das kann man mischen wie man lust hat
Installation früher:
#--------------------#
DEBIAN: slapd
SUSE: openldap2
Fedora: openldap-servers
Frühere Hauptkonfig: slapd.conf enthielt
includes für z.B. core.schema, nis.schema
vi /usr/share/doc/slapd/example/slapd.conf
-> Wie soll das Schema Aussehen
-> Wo sollen die Daten abgespeichert werden (hdb, mdb Database?)
moduleload back_hdb
backend hdb
database hdb
-> Zugriffsrechte müssen gesetzt werden Diese regeln:
Wer (z.B. ich selbst) darf auf welches Attribut wie zugreifen (z.B. lesend, schreibend, garnicht)
cat /usr/share/doc/slapd/example/slapd.conf > /etc/ldap/slapd.conf
Installation heute:
#------------------#
apt install slapd
LDAP Admin Passwort vergeben
Heute gibt es diese slapd.conf nicht mehr. Dafür gibt es nun einen eigenen getrennten Konfigurations Baum mit Schematas unter:
/etc/ldap/slapd.d/cn=config# ls
cn=schema/
cn=module{0}.ldif
olcBackend={0}mdb.ldif
olcDatabase={1}mdb.ldif
olcDatabase={0}config.ldif
cn=schema.ldif
olcDatabase={-1}frontend.ldif
ldif steht für LDAP Interchange Format - Eine Format mit dem man LDAP Daten austauschen kann..
Whitepages sind Dokumentation wie man sich so einen LDAP Server aufbauen kann.
Konfiguration:
#---------------#
/etc/ldap/schema/nis.schema
Es gibt in diesen Schematas Attribute und Objekte. jeder Typ hat eine eigene Nummer (Objekt-IDs = OID)
Ein Objekt besteht dann jeweils aus mehreren Attributen. Hier z.B. ist das attribut homeDirectory
ein Bestandteil der Objektklasse posixAccount, welche den UNIX Login regelt. Must = Pflichtfeld, May = Optionalfeld
Manche von diesen Attributen dürfen auch mehrfach da sein. Z.B. kann ja ein User mehrere Telefonnummern haben. In der Klassischen sql
Datenbank wäre ich hier an der Stelle raus, bräuchte man mehrere Tabellen um das darzustellen. Hier ist es so das man alles in ein Objeckt hineinpacken kann.
################################
# Attribute Type Definitions
attributetype ( 1.3.6.1.1.1.1.3 NAME 'homeDirectory'
DESC 'The absolute path to the home directory'
EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
# Object Class Definitions
objectclass ( 1.3.6.1.1.1.2.0 NAME 'posixAccount'
DESC 'Abstraction of an account with POSIX attributes'
SUP top AUXILIARY
MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory )
MAY ( userPassword $ loginShell $ gecos $ description ) )
################################
# Auf den LDAP Server zugreifen
#-------------------------------#
slapcat
dn: dc=nodomain
objectClass: top
objectClass: dcObject
objectClass: organization
o: nodomain
dc: nodomain
structuralObjectClass: organization
entryUUID: 926e2c74-c881-1037-8d89-33fe3664983b
creatorsName: cn=admin,dc=nodomain
createTimestamp: 20180330161722Z
entryCSN: 20180330161722.711020Z#000000#000#000000
modifiersName: cn=admin,dc=nodomain
modifyTimestamp: 20180330161722Z
dn: cn=admin,dc=nodomain
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: b2NTSEF9S1lBMEwvWjR2T2RiVHlIMzJLdlluREs0MjN5c2VvTxp=
structuralObjectClass: organizationalRole
entryUUID: 92716984-c881-1037-8d8a-33fe3664983b
creatorsName: cn=admin,dc=nodomain
createTimestamp: 20180330161722Z
entryCSN: 20180330161722.732784Z#000000#000#000000
modifiersName: cn=admin,dc=nodomain
modifyTimestamp: 20180330161722Z
# LDIF Syntax Aufbau:
#---------------------#
--> Slapcat gibt die ganze Datenbank wieder. (DUMP) im LDIF Format
--> Leerzeilen trennen die einzelnen Objekte
--> Jeder neue Objectblock beginnt dann immer wieder mit einem dn.
--> Anschließend kommen die ganzen Schlüssel-Wertpaare
--> Manchmal steht ein :: hinter dem Attribut -> Das bedeuktet das hier kein Klartext steht, sondern ein Base64 Encoding
--> Dies ist keine Verschlüsselung, sondern nur ein Encoding, um Umlaute in ein Feld unterzubringen
Mit slapadd kann man Daten aus LDIF Dateien einfach in die LDAP Datenbank hinzufügen. Dies geht nicht über das LDAP Protokoll. Sprich man es geht auf Dateiebene und man muss sich nicht gegen den LDAP Server authentifizieren.
SSSD = System Security Services Daemon
(Authentisierung und Identitätsverwaltung)
#-----------------------------------------#
Der SSSD ist ein Dienst der benutzt wird um Benutzer zu authentifizieren.
Ein Wesentliches Feature is das Authentifizierung zwischengespeichert (gecacht) wird.
slapd -t
# Zur Überprüfung der Konfiguration - depricated - selbe wie slaptest
Beim Backup und Restore muss man nur darauf achten, dass die Dateien die unter
/var/lib/ldap/*
liegen gelöscht werden
(wenn man mit slapcat ein Backup gemacht hat, und sie dann wieder mit slapadd hinzufügen will, muss man die Dateien dort alle löschen)
Anschließend muss man den Befehl
slapindex
ausführen, um die Indizes wieder anzulegen und die Zugriffsgeschwindigkeit wieder zu erhöhen.
# Loglevel LDAP
#--------------#
LDAP im DEBUG Modus starten mit /usr/sbin/slapd -d [DEBUGLEVEL]
In manpage slapd.conf findet man die Loglevel vom LDAP Server. Besonderheit geschrieben in Bitmasken
Geht von 1bis 32768. -1 Loggt alles mit, 32768 nichts mehr.
#-------------------#
|# Gute LDAP Tools #|
#-------------------#
ldapvi = Damit kann man mit einem Texteditor Attribute des LDAP Schemas direkt editieren und darin suchen.
shelldap = Shell-ähnliche Oberfläche zum Durchsehen von LDAP-Servern
Apache Directory Studio = LDAP Browser, Schema Editor - erfordert JavaRuntime
ldapsearch -x -b 'dc=LXU,dc=de' '(objectclass=*)'
# Test LDAP Server - It prints all the user information
# LDAP Installation und test simple
apt install slapd ldap-utils
vim etc/ldap/ldap.conf
dpkg-reconfigure slapd
ldapsearch -x
############################################
root@srv8041ldap01:~# cat README-LDAP-HowTo
BASE c=DE
BINDDN cn=Administrator,C=DE
HOST localhost
# User und Passwort für Schreibaccess
OpenLDAPServer=srv8041ldap01.linuxserver0041.lxu.io
OpenLDAPAccess="-D cn=Administrator,C=DE -w admin"
ldapadd -vc -D cn=Administrator,C=DE -w admin -x -H ldap://srv8041ldap01.linuxserver0041.lxu.io -f LDIVUSERFILE.ldif
ldapsearch -LLL -x -H ldap://ldap4voip.linuxserver0041.lxu.io -D 'cn=Administrator,c=de' -w 'admin' -b 'o=LXU,c=DE' "(cn=*LDIVUSERFILE*)"
#---------------#
# Von Manghofer - AD Abfragen
#--------------------------------#
RSATTools
starten powershell ise
Import-Module ActiveDirectory
get-aduser -LDAPFilter "(&(objectCategory=person)(objectClass=user)(|(mail=*)(telephoneNumber=*)))" -SearchBase "OU=USERS,OU=PROD,DC=LXU-ds,DC=LXU,DC=io" -Properties linuxserver0identityid, mail, telephoneNumber -server "ldapserver.com" | select-object Samaccountname, linuxserver0identityid, mail, telephoneNumber | export-csv -Path "C:\temp\testuser.csv" -Delimiter ";" -NoTypeInformation
Grid zum anzeigen:
out-gridview
Start OU
OU=USERS,OU=PROD,DC=LXU-ds,DC=LXU,DC=io
Mail und Tel
(&(objectCategory=person)(objectClass=user)(mail=*)(telephoneNumber=*))
Entweder Mail oder Tel
(&(objectCategory=person)(objectClass=user)(|(mail=*)(telephoneNumber=*)))
get-aduser manghofer -Properties * | select-object memberof
Get-ADGroupMember "AR-NWS-Jabber-Users" | select samaccountname
# oder Powershellsuche nach Usern mit Tel und email:
Get-ADUser -LDAPFilter "(&(objectCategory=person)(objectClass=user)(mail=*)(telephoneNumber=*))" -SearchBase "OU=USERS,OU=PROD,DC=LXU-ds,DC=LXU,DC=io" | Out-GridView
# oder Powershellsuche nach Usern mit entweder Mail oder Tel
Get-ADUser -LDAPFilter "(&(objectCategory=person)(objectClass=user)(|(mail=*)(telephoneNumber=*)))" -SearchBase "OU=Users,OU=PROD,DC=LXU-ds,DC=LXU,DC=io" | Out-GridView
# oder Powershellsuche nach Usern mit einer Telefonnr:
Get-ADUser -LDAPFilter "(&(objectCategory=person)(objectClass=user)(|(mail=*)(telephoneNumber=*)))" -SearchBase "OU=Users,OU=PROD,DC=LXU-ds,DC=LXU,DC=io" | Out-GridView
#==============================##==============================#
# CMD HOTLINE #
#==============================##==============================#
Cheatsheets are an excellent ioplement to other information sources like Linux man-pages, Linux help, or How-To’s and tutorials, as they provide iopact and easily accessible information. While man-pages and detailed tutorials often contain ioprehensive explanations and extensive guides, cheatsheets summarize the most important options forthe iomand ldap in a clear format. This allows users to quickly access the needed information for ldap without having to sift through lengthy texts. Especially in stressful situations or for recurring tasks, cheatsheets for ldap are a valuable resource to work efficiently and purposefully.
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
█║▌│║█║▌★ KALI ★ PARROT ★ DEBIAN 🔴 PENTESTING ★ HACKING ★ █║▌│║█║▌
██╗ ██╗ ██████╗ ██████╗ ██╗ ██╗███████╗██████╗
████████╗██╔══██╗██╔═══██╗╚██╗██╔╝██╔════╝██╔══██╗
╚██╔═██╔╝██║ ██║██║ ██║ ╚███╔╝ █████╗ ██║ ██║
████████╗██║ ██║██║ ██║ ██╔██╗ ██╔══╝ ██║ ██║
╚██╔═██╔╝██████╔╝╚██████╔╝██╔╝ ██╗███████╗██████╔╝
╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═════╝
█║▌│║█║▌ WITH ioMANDLINE-KUNGFU POWER █║▌│║█║▌
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.