r17 - 27 Feb 2022 - 17:17:20 - WebMasterYou are here: TWiki >  Reteisi Web > DocTecDebian > IsiLdap
ANNUNCIO: L'aggiornamento dei pacchetti ISI produce importanti cambiamenti, leggete questa nota

IL PACCHETTO ISI-LDAP3

Un server ldap fornisce un fondamentale servizio di autenticazione centralizzata andando a sostituire la tipica molteplicità di database e meccanismi di autenticazione normalmente presenti su un sistema linux. Il server ldap è responsabile, ad esempio, dell'autenticazione degli utenti linux, di quelli windows via Samba, autorizza l'accesso internet via Squid e conserva tutti i dati significativi degli utenti in modo ben piu' ricco e completo di quanto non possono fare i tradizionali servizi linux basati su passwd e smbpasswd. La configurazione di Openldap e il suo interfacciamento con servizi quali Samba e Squid è generalmente piuttosto complicata, siamo perciò orgogliosi di presentare il pacchetto ISI-LDAP3 che, per le sue caratteristiche autoconfiguranti e per le utilities che lo accompagnano, rende veloce e semplice una operazione generalmente complessa e cruciale per tutta l'architettura di una intranet di qualunque tipo.

Il sistema di pre/post installazione del pacchetto Debian ISI-LDAP3, è stato predisposto per installare automaticamente e preconfigurare anche i pacchetti strettamente correlati Samba, atd,libpam-ldap, libnss-ldap, pam e migrationtools. Da un punto di vista funzionale quindi e partendo da una macchina nuda, in pochissimo tempo e confermando semplicemente le opzioni di default proposte, si ottiene:

  • l'installazione e la configurazione del server ldap (slapd)
  • l'installazione e la configurazione minima di samba che usera' il demone slapd come autenticatore
  • la migrazione automatica di tutti gli account linux (tranne root) sull'albero ldap (facoltativo)

P.S.= è utile prima di inserire gli utenti, inserire nella cartella /etc/skel/ tutto ciò che si desidera faccia parte della home di ciascun utente. Per far sì che sia semplificato il salvataggio dei profili degli utenti windows, noi abbiamo creato in /etc/skel/ la cartella nascosta .profili che automaticamente Samba utilizzerà per memorizzare il profilo dell'utente. L'autenticazione dell'utente da parte di Samba determina infatti in ./profili la creazione e/o l'aggiornamento della cartella di profilo (Win95 o WinXP? dipendentemente dal S.O. del client che ha effettuato l'accesso), dove verranno salvati i profili Windows 98 e Windows Xp. Vedi i dettagli nella pagina della configurazione dei client.

Installazione

L'installazione del pacchetto avviene in due fasi con i comandi:

  1. # apt-get install isi-ldap3-def
  2. # apt-get install isi-ldap3
Verranno sottoposte le opzioni avanti descritte, accettando i default proposti, si ottiene un sistema funzionante già pronto per il caricamento degli utenti.

Popolazione dell'albero ldap e generazione del file system

Se non si hanno utenti, Il caricamento iniziale dell'albero ldap avviene per mezzo del comando

# isi-addusers [opzioni] file_utenti

l'opzione -h visualizza l'help del comando. Eccolo:


uso    : isi-addusers [opzioni] [file_dati_utenti]
opzioni:
        -h       questo help
        -d       stampa i comandi eseguiti ma li esegue ugualmente
        -n       non esegue i comandi
        -s       esegue senza conferma
        -e       chiede anche i dati extra (solo modo interattivo)
        -P n     lunghezza della password casuale (default 8)
        -B       cambio password obbligato al primo accesso
        -x pwd   password pwd uguale per tutti
        -X pwd   password = CF o = pwd se il cod.fiscale manca
La modalità interattiva si ottiene NON indicando il nome del file dati.
NOTA1: classe e codice fiscale saranno memorizzati nei campi ldap 
            classe  -> departmentNumber, codfisc -> employeeNumber
NOTA2: il formato del file utenti (dati obbligatori) è
            UID;COGNOME;NOME;GRUPPO PRINC;CLASSE,ALTRI GRP;[CODFISC];[PASSWD]

Se il sistema contiene già utenti, si preferisce utilizzare il comando isi-updusers che oltre all'aggiunta di nuovi utenti è in grado di aggiornare i dati degli utenti esistenti o di capire quali utenti devono essere eliminati. Ecco l'help del comando (ottenuto digitando isi-updusers -h)


uso    : isi-updusers [opzioni] file_dati_utenti
opzioni:
        -h       questo help
        -d       stampa i comandi eseguiti ma li esegue ugualmente
        -n       non esegue i comandi
        -k       non ricalcola ALULINK (/home/classi/*/alulink)
        -L       non esegue il backup del db LDAP
        -s       esegue senza conferma
        -p       cambia la pwd attuale con quella nel campo 7 del file dati
        -P n     cambia la pwd attuale con pwd casuale di lunghezza n (min.5)
        -x pwd   password pwd uguale per tutti
        -X pwd   password = cod.fisc. o = pwd per tutti quelli senza cf
        -B       impone il cambio password al primo accesso
        -a       tratta gli utenti con uid inesistente come nuovi e li aggiunge
        -e       tratta gli uid che iniziano con un '-' come utenti da cancellare
                 verranno cancellate anche le rispettive homedirs
        -E       come -e solo che le homedirs sono salvate in formato tar.gz
        -F       forza la riscrittura dei campi ldap (gecos, displayName, ecc.)
NOTA1: le opzioni -p -P sono incompatibili
NOTA2: gli utenti non riconosciuti o prefissati con meno sono comunque
        accumulati nei file /root/users_add.data e /root/users_del.data
NOTA3: classe e codice fiscale saranno memorizzati nei campi ldap
        classe  -> departmentNumber, codfisc -> employeeNumber
NOTA4: il formato del file utenti (parte obbligatoria) è
        UID;COGNOME;NOME;GRUPPO PRINC;CLASSE,ALTRI GRP;[CODFISC];[PASSWD]

Programmi di utilità

Per i dettagli si rimanda alle relative pagine man (o all'help del comando: comando -h).

Gestione ldap/dominio Samba

isi-startup: inizializza/cambia il dominio samba, il nome del server PDC, le password amministrative (root e admin ldap)

isi-smbdomain: cambia il nome del dominio samba (vedi anche isi-startup)

isi-checkugnum: controlla la correttezza degli id numerici uid e gid noti al db ldap

isi-ldapsaveall: salva il db ldap comprimendolo in un tgz

isi-ldaprestall: recupera il db ldap salvato nel file tgz

isi-passwd: cambia la password dell'utente o la password dell'amministratore ldap

Amministrazione utenti

ldap_addusers: aggiunge utenti al db ldap leggendoli da un file oppure, omettendo il file, in modo interattivo direttamente da tastiera.

isi-updusers: automatizza completamente l'aggiornamento degli utenti da un anno all'altro

isi-prepusers: produce un file di aggiornamento utente da un report di SISSI (*)

isi-deluser: cancella l'utente dal db ldap, opera anche sui gruppi o sugli utenti letti da un file

isi-quota: assegna la quota disco a tutti gli utenti di un gruppo

isi-users: gestione interattiva degli utenti di un gruppo (es. di una classe)

isi-extusers: inserisce/corregge i dati estesi dell'utente (indirizzo, telefono...)

isi-fileusers: scrive un file con gli utenti di un gruppo (escluse password). Il file è nel formato adatto per isi-addusers e isi-updusers

isi-chuid: cambia lo username dell'utente e di conseguenza la sua home

isi-loginmod: cambia lo username dell'utente e la sua home utiliizzando nome e cognome contenuti nei campi ldap cn e sn, il nuovo nome utente avrà la forma sn.cn (es. rossi.mario)

isi-getattr: legge il dato ldap indicato relativo all'utente indicato

isi-putattr: assegna un valore al campo ldap di un utente

isi-checkfield: controlla il valore di un campo ldap

isi-nousers: lista gli utenti del gruppo ldap che non sono presenti nel file utenti

isi-addgroup: aggiunge un gruppo al db ldap

isi-groupcat: restituisce la lista degli utenti di un gruppo

isi-checkpwd: controlla il funzionamento delle password appena assegnate (sulla base del file delle password)

isi-passrenew: costringe gli utenti di un gruppo a cambiare password (fa scadere le password)

isi-perms: crea/modifica le acl che controllano i permessi degli utenti (se il filesystem gestisce le acl)

Varie

isi-checkclassi: confronta il db ldap a fronte del file utenti controllando i gruppi classe

isi-alulink: scrive nella cartella di ciascuna classe una sottocartella 'alulink' in cui inserisce i link simbolici alle cartelle home degli alunni della classe stessa (per facilitare il ritrovamento di queste da parte dei docenti)

le utilities successive hanno senso in relazione al sistema di cartelle gestite da samba.

isi-alusetclasse: registra nel db ldap, nel campo utente departmentNumber, la classe frequentata dall'alunno, per tutti gli alunni

isi-homesetclasse: utilizzato da una direttiva di smb.conf durante il processo di logon; serve per generare la connessione dell'utente alla cartella della propria classe, che sarà raggiungibile attraverso Risorse del computer, unita' L

isi-homesetperm: setta i permessi delle cartelle personali del gruppo indicato e del relativo contenuto. Aggiorna il contenuto delle home sulla base del modello in /etc/skel. Vedi anche isi-perms, da utilizzare con i filsystem che supportano le acl

isi-homedu: genera un report sullo spazio disco occupato dalle home degli utenti di un gruppo

isi-htmlsetindex: personalizza la homepage di default dell'utente ospitata in public_html, qualora sia stata attivata tale funzionalità.

isi-homeprofili: recupera i profili degli utenti di un gruppo

isi-homerestore: recupera le homedir degli utenti

isi-homesposta: sposta le homedir di utenti inesistenti

In conclusione

Concludiamo con quanto è necessario digitare in una console di root su macchina su cui è stato appena installato ArgoLinux, per trasformarla in un PDC samba/ldap pronta a gestire la nostra rete d'istituto. I prerequisiti sono:
  • è stato preparato (in /root) il file degli utenti, chiamiamolo lista-utenti (noi, ad esempio, lo costruiamo con excel e lo esportiamo come file csv pronto all'uso - da agosto 2004 abbiamo reso disponibile una procedura migliore - vedi avanti )
  • è stata creata la cartella /home/classi e le sottocartelle /home/classi/nome-classe con nome-classe uguale a al nome del gruppo classe utilizzato nel file lista-utenti

Installazione pacchetti indispensabili

# apt-get update
# apt-get install isi-ldap3-def (confermare tutte le opzioni, bisognerà solo scrivere per TRE volte la stessa password, la prima volta in chiaro)
# apt-get install isi-ldap3
# isi-prepusers file_utenti_sissi
# isi-updusers -aeBP 8 file_utenti_generato_da_isi-prepusers

Finitura dell'installazione

# apt-get install isi-logon

seguita dalla configurazione dei file in /etc/isi (gruppi principali, classi, shares di samba) e dalla conf di samba

Nel caso in cui le cartelle personali vengano riempite con un precedente contenuto migrato da altro filesystem (ad esempio in seguito a una migrazione windows-linux), si potranno settare i permessi sulle home e sul relativo contenuto utilizzando in comando:

# isi-homesetperm <gruppo>
Questo comando si preoccupa anche di aggiornare le home con il contenuto di /etc/skel (se più recente).

a questo punto non resta che perfezionare la configurazione di samba, modificando opportunamente /etc/samba/smb.conf e configurare le stampanti (se si possiedono stampanti di rete, la cosa richiede l'utilizzo del pacchetto CUPS)

Se durante l'anno....

Se durante l'anno dovrete aggiungere uno studente, potete farlo in due modi:
  1. in modo interattivo eseguendo isi-addusers senza parametri e rispondendo alle domande
  2. in modo interattivo eseguendo isi-users gruppo_classe e lavorando direttamente sulla lista degli utenti
  3. costruendo il file utenti col formato precedentemente descritto ed eseguendo isi-addusers o isi-updusers con le opzioni opportune

Subito dopo si potra' aggiornare la cartella /home/classi/classe/alulink eseguendo isi-alulink classe (solo nel caso in cui alulink non venga eseguito automaticamente)

L'anno dopo....NEW

Le operazioni che si dovranno fare sono:
  1. cancellazione degli utenti che non ci sono più (es. studenti che non frequenteranno più)
  2. aggiunta dei nuovi utenti (es. nuovi studenti)
  3. modifica dei dati, eventualmente delle password (fortemente consigliato) e dell'appartenenza ai gruppi per gli utenti che rimangono attivi

Gli script del pacchetto isi-ldap rendono tutte le operazioni quasi automatiche. Ecco come procedere...

Preparazione del file utenti

Il file utenti è un normalissimo file di testo (con fine riga di tipo unix), composto da cinque (5) campi di cui i primi tre (3) obbligatori:

USERID , COGNOME, NOME, GRUPPO_PRINCIPALE, GRUPPI_SECONDARI , [COD.FISCALE], [PASSWORD (fortemente sconsigliato)]

il campo GRUPPI_SECONDARI è composto dalla classe e da qualunque altro gruppo separati da spazio. Può essere lasciato vuoto.

Per preparare questo file si può procedere in tre modi:

  1. modificare il file utilizzato per il caricamento dei dati dell}anno precedente (si aggiungono a mano i nuovi studenti, e quelli da cancellare si marcano iniziano la riga con un segno - (meno). Si aggiunge il cod.fiscale come quarto campo o lo si omette inserendo ,,. Per quanto riguarda la password si veda sotto all'apposito titolo.
  2. usare il comando isi-fileusers per produrre la lista degli utenti esistenti per poi modificarla come al punto precedente.
  3. produrre il file di tutti gli studenti estraendolo direttamente da Open Sissi ed elaborandolo con il comando isi-prepusers, sottoponendo questo file al comando isi-updusers tutte le operazioni di cancellazione, aggiunta, modifica e ridefinizione dei gruppi, memorizzazione della classe e del codice fiscale nel db ldap saranno svolte in automatico.

Estrazione dei dati con Open Sissi e uso di isi-prepusers

Open Sissi è il programma di utilità compreso nel pacchetto SISSI in rete messo a disposizione di tutte le scuole italiane dal MIUR per la gestione delle segreterie scolastiche (e non solo). Per quanto ci riguarda, siamo interessati alla capacità di Open Sissi di produrre un file con i dati degli studenti estraendoli dal db Sql gestito da SISSI. La funzionalità da utilizzare è, dal menù di Open Sissi, Utilità, Report dinamici, che ci metterà in condizione di comporre un report con i campi desiderati (per noi, oltre a nome, cognome, data di nascita, anche codice fiscale, corso, anno di corso e sezione). Open Sissi produce il report in formato Excel che viene richiamato automaticamente (non sembra ci sia la possibilità di avere un semplice salvataggio del report, quindi bisogna che sulla macchina su cui gira Open Sissi ci sia anche Excel - incredibile ma vero). Ottenuto il foglio Excel con i nostri dati semplicemente lo si salverà in formato CVS (OS2-MSDOS).

L}operazione successiva è trasferire questo file sul server linux che ospita il dbldap. Per fissare le idee supponiamo di avere così ottenuto /root/sissi.alunni. A questo punto siamo pronti per procedere alla preparazione del file utenti.

ATTENZIONE: bisogna controllare che nel sistema sia installato il pacchetto sysutils, che contiene il necessario per la conversione di un testo con fine riga DOS a un testo con fine riga UNIX. Si proceda così:

  • # dpkg -l sysutils per sapere se il pacchetto è correttamente installato. Nel caso che non lo sia lo si installi ordinando
  • # apt-get update seguito da
  • # apt-get install sysutils - si otterranno così le utilità todos e fromdos, quest}ultima sarà richiamata automaticamente per la conversione del caso.

Se tutto è a posto si potrà ordinare

  • *# isi-prepusers /root/sissi.alunni *

il comando isi-prepusers effettua le seguenti operazioni (aammgg è la data del giorno):

  • calcola gli userID degli alunni sulla base di una regola personalizzabile (default = a_11caratteri c.f.) il file di configurazione delle regole è /etc/isi/userid-come

  • produce i seguenti file (che potranno essere comodamente visualizzati):
   
           1) FILE UPDATE UTENTI  : /root/users-upd_aammgg
           2) FILE UTENTI DA CANC.: /root/nousers.txt
           3) RECORD SCARTATI IN  : /root/users-err_aammgg
           4) FILE CODICI FISCALI : /root/users-fis_aammgg
           4) FILE UID RIDEFINITI : /root/users-rid_aammgg

Aggiornamento del db ldap

Una volta che si disponga del file utenti, l'aggiornamento del db ldap è fatta dal comando isi-updusers, il cui uso è il seguente
uso    : isi-updusers [opzioni] file_dati_utenti
opzioni:
        -h       questo help
        -d       stampa i comandi eseguiti ma li esegue ugualmente
        -n       non esegue i comandi
        -k       non ricalcola ALULINK (/home/classi/*/alulink)
        -L       non esegue il backup del db LDAP
        -s       esegue senza conferma
        -p       cambia la pwd attuale con quella nel campo 7 del file dati
        -P n     cambia la pwd attuale con pwd casuale di lunghezza n (min.5)
        -x pwd   password pwd uguale per tutti
        -X pwd   password = cod.fisc. o = pwd per tutti quelli senza cf
        -B       impone il cambio password al primo accesso
        -a       tratta gli utenti con uid inesistente come nuovi e li aggiunge
        -e       tratta gli uid che iniziano con un '-' come utenti da cancellare
                 verranno cancellate anche le rispettive homedirs
        -E       come -e solo che le homedirs sono salvate in formato tar.gz
        -F       forza la riscrittura dei campi ldap (gecos, displayName, ecc.)
NOTA1: le opzioni -p -P sono incompatibili
NOTA2: gli utenti non riconosciuti o prefissati con meno sono comunque
        accumulati nei file /root/users_add.data e /root/users_del.data
NOTA3: classe e codice fiscale saranno memorizzati nei campi ldap
        classe  -> departmentNumber, codfisc -> employeeNumber
NOTA4: il formato del file utenti (parte obbligatoria) è
        UID;COGNOME;NOME;GRUPPO PRINC;CLASSE,ALTRI GRP;[CODFISC];[PASSWD]

Tipicamente il file_dati_utenti è quello prodotto da isi-prepusers e cioè /root/users-upd_aammgg

isi-updusers, dopo aver salvato l} attuale db ldap, confronta il contenuto del db ldap con il file degli utenti precedentemente preparato ed effettua tutte le modifiche necessarie agli utenti esistenti, elimina quelli marcati come cancellandi (via isi-deluser automaticamente richiamato), individua gli utenti nuovi e li passa a isi-addusers che si incarica di aggiungerli. Alla fine vengono prodotti i seguenti file:

/root/ldapbak-aammgg.tgz - contiene il salvataggio del db ldap (recuperabile con isi-ldaprestall aammgga)

/root/users-add_aammgg - contiene la lista degli utenti da aggiungere (passata a isi-addusers)

/root/users-del_aammgg - contiene la lista degli utenti cancellati

/root/users-pwd_aammgg - contiene la lista di tutti gli utenti attivi con le password assegnate

/root/users-log_aammgg - contiene il log con i messaggi generati durante l'aggiornamento

/root/nomi.txt - prodotto da isi-addusers, contiene l'elenco degli utenti aggiunti con le password assegnate

IMPORTANTE: isi-updusers e isi-addusers ora sono in grado di salvare la classe e il codice fiscale (sempre che sia disponibile) rispettivamente nei campi ldap departmentNumber e employeeNumber. In questo modo viene notevolmente semplificata sia la gestione della classe dell'alunno sia la sua identificazione.

isi-updusers controlla anche l'esistenza della cartella di classe e della share samba corrispondente, se non le trova le crea. Le share di samba vengono accodate al file /etc/samba/smb_classi.conf: si presuppone che questo file venga automaticamente assunto a far parte della conf di samba per mezzo di una direttiva include nel file di conf principale /etc/samba/smb.conf.

Gestione degli userID (a partire da un report Open Sissi)

isi-prepusers è in grado a partire dai dati SISSI di calcolare lo userID applicando una regola definita dall}utente. Prima di assegnare definitivamente lo UID calcolato all}utente, il codice fiscale dello stesso, viene cercato nel db ldap (sempre che sia stato precedentemente salvato nel campo ldap employeeNumber), se il codice fiscale viene trovato, allora quell}utente è già noto al sistema e riceverà lo userID precedentemente assegnatogli.

La regola di default per il calcolo dell}uid è la seguente:

prefisso + i primi 11 caratteri del codice fiscale,

il prefisso per gli alunni è a_. Il default è stato scelto perchè rende difficilissima l}omonimia.

Sono applicabili regole diverse, esse sono descritte da semplici istruzioni perl scritte nel file di configurazione /etc/isi/userid-come . Lo riportiamo per intero:

# REGOLA PER LA COSTRUZIONE DELLO USERID
# si tratta in pratica di un frammento i codice
# perl che viene interpretato al volo e che puo'
# essere modificato dall'utente senza toccare lo script
# principale ldap_prepusers
# le righe precedute dal segno # sono commenti e possono
# essere inserite dovunque
# le variabili in MAISCOLO sono da considerare note e
# gia' valorizzate con i dati utente.
# Esse sono $COGNOME, $NOME, $CODFISC, $NATOIL
# la data di nascita e' restituita nel formato yymmgg
# la regola di default e'
#
#          $UID="a_".substr($CODFISC,0,11)
#
# ed e' quella assunta quando questo file non contiene
# istruzioni eseguibili ( o non esiste, o e vuoto, o tutte
# le righe sono commentate.
# esempio 1 = primi 4 caratteri del cognome
# $UID=substr($COGNOME,0,4);
# esempio 2 = primi 3 caratteri del cognome + primi 3 del nome
# $UID=substr($COGNOME,0,3).substr($NOME,0,3);
# esempio 3 = primi 3 car.cognome + primi 3 del nome + data di nascita
# $UID = substr($COGNOME,0,3).substr($NOME,0,3).$NATOIL;

per attivare una delle regole alternative di esempio basta decommentare la riga corrispondente. Naturalmente è possibile definire la regola desiderata. Si tenga presente, nel comporre la regola, che occorre rendere minima la probabilità di omonimia. Nel caso si verifichi tale eventualità , saranno calcolati comunque UID distinti da una numerazione progressiva.

Gestione delle password

Una corretta gestione delle password è cruciale per láffidabilità e la sicurezza del sistema. A differenza delle prime versioni del pacchetto isi-ldap, adesso sconsigliamo vivamente di iniziare assegnando password temporanee uguali per tutti. La procedura da preferire dovrebbe essere quella che assegna inizialmente all}utente una password casuale (default 8 caratteri) costringendolo a ridefinirla al primo login. Quest'ultima questione purtroppo non viene correttamente gestita da Samba, ma le password casuali sono comunque tali da spingere l'utente a ridefinire la password capitatagli.

Gli script isi-updusers e isi-addusers possiedono le seguenti opzioni per la gestione delle password:

  • -p se si desidera assegnare la password contenuta nel campo 7 del file_utenti

  • -P n per generare una password casuale lunga n caratteri

  • -x pwd per assegnare la password fissa pwd

  • *-X * per assegnare come password il codice fiscale

nessuna opzione le password non verranno toccate.

Le password generate dai due script sono salvate rispettivamente nel campo n.7 dei file /etc/users-pwd_aammgg e /root/nomi.txt.

Controlli

Per controllare il buon fine delle operazioni sono disponibili i seguenti script:

  • isi-checkclassi file_utenti controlla l`assegnazione dei gruppi classi e la loro composizione.

  • isi-checkfield gruppo campo_ldap visualizza gli utenti del gruppo con il campo ldap richiesto vuoto.
 

This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback