Modifica schemi slapd.d
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.