05. [10p] Actualizare configurare pentru server

Serverul de LDAP are două tipuri de baze de date. O bază de date internă, pentru configuare, și o bază de date cu informații LDAP. Baza de date internă permite serverului de LDAP configurarea acestuia tot prin comenzi LDAP; se asigură astfel o interfață unificată și, mai mult, posibilitatea de a realiza configurații fără a fi nevoie de repornirea serverului.

Pentru a urmări și configura întreaga bază de date de internă a serverului rulăm, pe stația de tip server, comanda

root@ldap-server:~# ldapsearch -Y EXTERNAL -H ldapi:/// -b "cn=config"
[...]

Sunt afișate foarte multe informații, practic toată baza de date internă a serverului LDAP. Dacă vrem să afișăm doar informațiile ce țin de configurarea informațiilor, vom investiga intrarea olcDatabase={1}hdb,cn=config:

root@ldap-server:~# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b "olcDatabase={1}hdb,cn=config"
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn: olcDatabase={1}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=labs,dc=cs,dc=pub,dc=ro
[...]

Dacă vrem să afișăm informații legate strict de configurarea serverului LDAP (număr de thread-uri folosite, nivel de jurnalizare, certificat) vom investiga doar baza intrării cn=config:

root@ldap-server:~# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b "cn=config" -s base
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn: cn=config
objectClass: olcGlobal
cn: config
olcArgsFile: /var/run/slapd/slapd.args
olcLogLevel: none
olcPidFile: /var/run/slapd/slapd.pid
olcTLSCACertificateFile: /etc/ssl/certs/cacert.org_root.pem
olcTLSCertificateFile: /etc/ssl/certs/slapd-cert.pem
olcTLSCertificateKeyFile: /etc/ssl/private/slapd-key.pem
olcToolThreads: 1

Directivele de configurare în serverul LDAP sunt atribute în intrările cu dn-uri care se termină în cn=config. Atributele încep cu prefixul olc însemnând OpenLDAP Configuration.

Dorim să configurăm nivelul de jurnalizare al serverului LDAP. Directiva de configurare se numește olcLogLevel, așa cum este documentată aici. Observăm că area valoarea none. Vrem să-i schimbăm valoarea la stats.

Pentru aceasta construim un fișier LDIF:

change-log-level.ldif
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats

apoi încărcăm fișierul în baza de date LDAP:

root@ldap-server:~# ldapadd -Y EXTERNAL -H ldapi:/// -f change-log-level.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

și verificăm faptul că a fost încărcat corespunzător:

root@ldap-server:~# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b "cn=config" -s base olcLogLevel
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn: cn=config
olcLogLevel: stats

În exemplul de mai sus am creat un fișier LDIF care a modificat valoarea atributului olcLogLevel la valoarea stats. Putem observa informațiile de jurnalizare generate de serverul de LDAP în fișierul /var/log/syslog de pe stația server; eventual facem niște cereri de interogare LDAP (folosind ldapsearch) de pe stația client.

Exercițiu: Modificați nivelul de jurnalizare al serverului LDAP astfel încât să jurnalizeze și mesaje de tipul stats și mesaje de tipul stats2. E ceva simplu :-)