Modifica schemi slapd.d

Da sia.
Vai alla navigazione Vai alla ricerca

Introduzione

Se la configurazione di openldap2.4 e' nel db cn=config di ldap stesso, allora e' possibile aggiornare gli schemi con un comando ldapmodify a ldap acceso. Se la partizione cn=schema,cn=config e' in replica, gli slave ricevono le modifiche agli schemi in tempo quasi reale.

Capire quale schema modificare

Con

ldapsearch -x -h iside.unimore.it -Dcn=config -w passwd -b cn=config dn

si ottiene l'elenco delle entry di configurazione. Lo schema che contiene gli attributi custom unimore e': cn={5}unimore-dipendenti.

Scrivere lo ldif di modifica

dn: cn={5}unimore-dipendenti,cn=schema,cn=config
changetype: modify
add: olcAttributeTypes
olcAttributeTypes: {33}( 1.3.6.1.4.1.13331.9.9.0.5.1.35 NAME 'unimoreMailPerso
 nale' DESC 'Indirizzo email non istituzionale comunicatodallo utente' EQUALIT
 Y caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.11
 5.121.1.15 )
-
delete: olcObjectClasses
olcObjectClasses: {1}( 1.3.6.1.4.1.13331.9.9.0.5.2.3 NAME 'unimoreAccount' DES
 C 'Attributi presi dal DB studenti del CASA (alcuni sono calcolati)' SUP top 
 AUXILIARY MUST ( cn $ sn $ uid ) MAY ( unimoreDipAfferenzaDidattica $ unimore
 DipAttivita $ unimoreDipCodiceAttivita $ unimoreDipCodiceDidattica $ unimoreD
 ipCodiceProfilo $ unimoreDipCodiceRuolo $ unimoreDipDataUltimoInquadramento $
  unimoreDipDescrizioneInquadramento $ unimoreDipInquadramento $ unimoreDipMat
 ricola $ unimoreDipOrg2 $ unimoreDipProfilo $ unimoreDipRuolo $ unimoreDipSed
 e $ unimoreDipTessera $ unimoreDiporg1 $ unimoreDiporg2 $ unimoreDiporg3 $ un
 imoreDiporg4 $ unimorebadge $ unimorecodicefiscale $ unimorecorsannodiordinam
 ento $ unimorecorscodfac $ unimorecorscodicecorso $ unimorecorscodicefacolta 
 $ unimorecorscodiceindirizzo $ unimorecorscodiceordinamento $ unimorecorscodi
 cestato $ unimorecorscodicetipocorso $ unimorecorsdescrizionecorso $ unimorec
 orsdescrizioneindirizzo $ unimorecorsdescrizioneordinamento $ unimorecorsdura
 taanni $ unimorecorsfacolta $ unimorecorsnomeindirizzo $ unimorecorskey $ uni
 morecorsnomeorientamento $ unimorecorssede $ unimorecorsstatopercorso $ unimo
 recorstipocorso $ unimoredatacessazione $ unimoredatagtcessazione $ unimoredi
 pcodicesettore $ unimoredipdatafineincarico $ unimoredipdatainizioincarico $ 
 unimoredipdescrizioneruolo $ unimoredipsettore $ unimoredsitdatamodifica $ un
 imorefacsimiletelephonenumber $ unimoremail $ unimoremailprincipale $ unimore
 note $ unimorestudannocorso $ unimorestudcodiceindirizzo $ unimorestudcodices
 tatoattivo $ unimorestudcodicestatoimmatricolazione $ unimorestudcorso $ unim
 orestuddataannullamento $ unimorestuddatarilascio $ unimorestuddatarilasciote
 ssera $ unimorestuddescrcorso $ unimorestuddescrfacolta $ unimorestuddescrind
 irizzo $ unimorestuddescrsede $ unimorestudduratacorso $ unimorestudentedirif
 erimento $ unimorestudfacolta $ unimorestudmatricola $ unimorestudnumerotesse
 ra $ unimorestudpassword $ unimorestudsede $ unimorestudstatoimmatricolazione
  $ unimorestudtipodidattica $ unimorestudtipoiscrizione $ unimorestudultimoan
 noaccademico $ unimorestudvaliditatessera $ unimoretelephonenumber $ unimoreu
 tentediriferimento $ mainUid $ unimoreUid ) )
-
add: objectClass
objectClass: {1}( 1.3.6.1.4.1.13331.9.9.0.5.2.3 NAME 'unimoreAccount' DES
 C 'Attributi presi dal DB studenti del CASA (alcuni sono calcolati)' SUP top 
 AUXILIARY MUST ( cn $ sn $ uid ) MAY ( unimoreDipAfferenzaDidattica $ unimore
 DipAttivita $ unimoreDipCodiceAttivita $ unimoreDipCodiceDidattica $ unimoreD
 ipCodiceProfilo $ unimoreDipCodiceRuolo $ unimoreDipDataUltimoInquadramento $
  unimoreDipDescrizioneInquadramento $ unimoreDipInquadramento $ unimoreDipMat
 ricola $ unimoreDipOrg2 $ unimoreDipProfilo $ unimoreDipRuolo $ unimoreDipSed
 e $ unimoreDipTessera $ unimoreDiporg1 $ unimoreDiporg2 $ unimoreDiporg3 $ un
 imoreDiporg4 $ unimorebadge $ unimorecodicefiscale $ unimorecorsannodiordinam
 ento $ unimorecorscodfac $ unimorecorscodicecorso $ unimorecorscodicefacolta 
 $ unimorecorscodiceindirizzo $ unimorecorscodiceordinamento $ unimorecorscodi
 cestato $ unimorecorscodicetipocorso $ unimorecorsdescrizionecorso $ unimorec
 orsdescrizioneindirizzo $ unimorecorsdescrizioneordinamento $ unimorecorsdura
 taanni $ unimorecorsfacolta $ unimorecorsnomeindirizzo $ unimorecorskey $ uni
 morecorsnomeorientamento $ unimorecorssede $ unimorecorsstatopercorso $ unimo
 recorstipocorso $ unimoredatacessazione $ unimoredatagtcessazione $ unimoredi
 pcodicesettore $ unimoredipdatafineincarico $ unimoredipdatainizioincarico $ 
 unimoredipdescrizioneruolo $ unimoredipsettore $ unimoredsitdatamodifica $ un
 imorefacsimiletelephonenumber $ unimoremail $ unimoremailprincipale $ unimore
 note $ unimorestudannocorso $ unimorestudcodiceindirizzo $ unimorestudcodices
 tatoattivo $ unimorestudcodicestatoimmatricolazione $ unimorestudcorso $ unim
 orestuddataannullamento $ unimorestuddatarilascio $ unimorestuddatarilasciote
 ssera $ unimorestuddescrcorso $ unimorestuddescrfacolta $ unimorestuddescrind
 irizzo $ unimorestuddescrsede $ unimorestudduratacorso $ unimorestudentedirif
 erimento $ unimorestudfacolta $ unimorestudmatricola $ unimorestudnumerotesse
 ra $ unimorestudpassword $ unimorestudsede $ unimorestudstatoimmatricolazione
  $ unimorestudtipodidattica $ unimorestudtipoiscrizione $ unimorestudultimoan
 noaccademico $ unimorestudvaliditatessera $ unimoretelephonenumber $ unimoreu
 tentediriferimento $ mainUid $ unimoreUid $ unimoreMailPersonale ) )

Che significa che prima bisogna aggiungere un attributo, poi modificare la objectclass che lo contiene. La modifica di una voce solo di objectClass non si puo' fare con un changetype: modify, altrimenti cancella le altre objectClass di questa entry.

Spiegazione della entry dell'attributo

olcAttributeTypes: {33}( 1.3.6.1.4.1.13331.9.9.0.5.1.35 NAME 'unimoreMailPerso
nale' DESC 'Indirizzo email non istituzionale comunicatodallo utente' EQUALIT
Y caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.11
5.121.1.15 )

{33}: e' l'indice del primo olcAttributeTypes libero

1.3.6.1.4.1.13331.9.9.0.5.1.35: e' l'urn oid dell'attributo

SYNTAX 1.3.6.1.4.1.1466.11 5.121.1.15: vuol dire che e' una stringa multiple-valued (altrimenti aggiungere l'identificatore SINGLE-VALUED)

Eseguire il comando

ldapmodify -x -h iside.unimore.it -D cn=config -w password -f unimore_mail_privata.ldif

in cui unimore_mail_privata.ldif e' il file della sezione precedente.

Il comando va controllato sui log di iside, poi lanciato uguale su osiride e su ldap2 (fino a che e' in linea):

ldapmodify -x -ZZ -h osiride.unimore.it -D cn=config -w password -f unimore_mail_privata.ldif
ldapmodify -x -ZZ -h ldap2.unimore.it -D cn=config -w password -f unimore_mail_privata.ldif

Verifica sugli slave

Aprire una shell su uno slave e lanciare:

ldapsearch -x -h localhost -D cn=admin,cn=config -w segreto -b cn=config 'cn={5}unimore-dipendenti'

potrebbero essere necessari 5 minuti per l'aggiornamento.