I comandi isi*

Come operare sul server

E` possibile gestire gli utenti per mezzo dei comandi presentati di seguito o tramite l’interfaccia web.

comandi isi2* e isi*

Con la versione 2.0 di isi, tutti i comandi sono stati riscritti in Python. In un momento di transizione ci sono state due seria di comandi isi* ed isi2* ora gli unici comandi non hanno lídentificativo ‘2’ ma sono quelli in python.

Con questa release gli utenti vengono gestiti senza usare i tools smbldap-tools, il che permette in generale una velocità maggiore di esecuzione ed un controllo molto più elevato degli errori.

Gestione utenti

isi-adduser

Utility per aggiugere utenti. Puo' essere usata sia interattivamente sia in
modo script leggendo da file (opzione -f) che passando la definizione dell'
alunno da riga di comando.

Il formato della riga deve essere almeno:

    logname;cognome;nome;gruppo_principale;classe;CF;password

possono essere accodati altri campi rispettando il seguente formato:

    sesso;indirizzo;cap;comune;provincia;telefono

ogni campo puo' essere vuoto tranne logname e gruppo principale
la classe ha senso per alunni ed esterni e verra' usata per connettere la risorsa
Viene memorizzata in ldap come departmentNumber

ATTENZIONE: se logname inizia con un - (meno) l'utente viene cancellato, in questo
caso l'opzione -z elimina la home dell'utente eliminato che altrimenti verra'
semplicemente targizzata

La forma [isi-adduser user gruppo] aggiunge l'utente al gruppo

  usage: %prog [options] [ -f file_name ]
    -N, --dry-run: non tocca il db ldap o il filesystem
    -d, --debug: Mostra i comandi mentre li esegue
    -B, --force-change-passwd: forza cambio password all'accesso
    -f, --file=FILE: legge gli utenti da file (record standard)
    -F, --file-extended: legge gli utenti da file (record esteso)
    -v, --verbose: aumenta i messaggi
    -i, --interactive: modo interattivo (default se manca file)
    -I, --interactive-extended: modo interattivo con dati estesi
    -s, --string=str-definition: usa str-definition come definizione alunno
    -t, --test=str-def: come -s ma basta logname;gruppo;pwd
    -S, --show-conf: mostra la configurazione
    -x, --no-filesystem: non crea le cartelle
    -H, --home=host: crea home dir su host1,2 (necessita ssh con chiave)
    -c, --check: controlla se gli utenti sono tutti da aggiungere (opt di -f)
    -p, --default-passwd=xx: imposta la password di default
    -P, --passwd-random=pwd_lenght: password casuale di lunghezza pwd_lenght (min.5)
    -u, --update-user: gli utenti riconosciuti come esistenti saranno aggiornati. Non tocca la password
    -U, --update-passwd: come -u ma con aggiornamento della password
    -z, --home-zap: elimina le homedirs degli utenti cancellati
    -L, --noalulink: NON esegue isi-alulink dopo l'inserimento degli alunni
    -C, --use-cf: password costruita da cf (primi 8 caratteru, prima lettera maiuscola, come -p _cf)
    -T, --test-mode: running tests - don't backup (go faster)
    -Z, --non-interactive: non chiedere nulla, fai e basta (quindi crea le classi...)

NOTA: se il campo password contiene PASSWORD, la password non viene gestita.

Utility per aggiugere utenti. Puo’ essere usata sia interattivamente sia in modo script leggendo da file (opzione -f) che passando la definizione dell’ alunno da riga di comando.

Nota

Formato file/formato dati

Non bisogna confondete il formato dei dati (la successione delle colonne) con il formato del file (.csv o .xls). Nel gergo comune entrambi sono noti come “formato di file”

csv (comma separated values) è un formato di testo in cui le colonne sono separate da “,” o da altri caratteri (“;” nel nostro caso, “Tab” a volte). Per editare un file .csv si può usare opencalc o anche un editor di testo qualunque.

xls è un formato binario proprietario della suite Office di Microsoft, deve essere editto con un programma come Excel, opencalc della suite OpenOffice o gnumeric. Il motivo per cui lo supportiamo qui è che il programma ministeriale Sissi esporta i dati unicamnete in .xls

La successione delle colonne determina il modo in cui il programma interpreta i dati. E` una cosa completamente distinta (ed aggiuntiva) rispetto l formato del file, e sono descritti in modo completo di seguito.

Formato file .isi

Il formato della riga deve essere almeno:

logname;cognome;nome;gruppo_principale;classe;CF;password

possono essere accodati altri campi rispettando il seguente formato:

sesso;indirizzo;cap;comune;provincia;telefono

ogni campo puo’ essere vuoto tranne logname, cognome e gruppo principale che deve essere uno fra: admins, alunni, docenti, esterni, segreteria, ata. La classe ha senso per alunni ed esterni e verra’ usata per connettere la risorsa classe.

Aggiornamenti

Se viene usata l’opzione --update-users ogni utente già esistente viene semplicemente ridefinito, questa è la situazione normale che avviene ad inizio anno. Se non viene usata questa opzione il programma esce con un errore.

Ogni riga che inizi con - corrisponde ad un utente da eliminare. Esempi:

-a_dntlsn
-a_test;Alunno;Test
d_test;Docente;test;docenti;;CF;isi

Aggiunge un utente d_test con password isi ed elimina due utenti con logname a_dntlsn e a_test.

L’opzione -z indica di eliminare la home degli utenti da cancellare, mentre l’opzione --home tar (default) crea un file .tgz della home.

La forma isi-adduser user gruppo aggiunge l’utente al gruppo. Ogni nuovo utente viene aggiunto ad alcuni gruppi definiti in /etc/isi/defaults.py nella variabile EXTRA_GROUPS: per default sono gruppi necessari per i sistemi LTSP plugdev e audio:

EXTRA_GROUPS = ['plugdev','audio']

Gestione password

nel momento dell’inserimento è possibile sovrascrivere la password eventualmente presente nel file in formato .isi con le opzioni di comando:

–default-passwd, -p:
 ogni utente avrà quella password assegnata
–use-cf, -C:usa i primi o caratteri del CF con la prima lettera maiuscola
–passwd-random, -P:
 viene generata una password randomica di 8 caratteri
–force-change-passwd, -B:
 viene imposto il cambio password al primo collegamento. Questo funziona sotto Windows ma non viene forzato con linux in quanto l’interfaccia grafica GDM non permette di fare il login e quindi non si riuscirebbe ad arrivare al cambio password... Accettiamo suggerimenti

isi-deluser

Delete a user. You may leave the home directry untouched (default) or
eliminate it or compress it

  usage: %prog [options] [name]
    -N, --dry-run: don't touch the ldap
    -g, --from-group=group: Eliminate all members from 'group'
    -z, --zap-home: Eliminate also the home dir (default is to create a tar.gz)
    -H, --home=rm|tar|none: rm, tar or ignore home dir
    -v, --verbose: be verbose
    -f, --from-file=filename: Loop on all users in file (one per line)
    -T, --test-mode: running tests - don't backup (go faster)

isi-passwd

opt -A  is not yet implemented

  usage: %prog [options] user
    -N, --dry-run: don't touch the ldap db or filesystem
    -w, --pwdroot: change root and slapd/samba password
    -A, --pwdslap: change only slapd/samba admin password
    -p, --passwd=password: use password
    -r, --random: assign a random password, print it in stdout
    -c, --codfis: password uguale ai primi 8 caratteri del codice fiscale con l'iniziale maiuscola

isi-groupcat

Return a list of all member of a group

  usage: %prog [options] group_name
    -r, --record: return user's records standard part
    -R, --record-extended: return record extended

isi-classe

crea una classe con tutto ciò che comporta:
   * il gruppo
   * la share di samba

  usage: %prog [options] class | course
    -v, --verbose: be verbose
    -C, --course: create a course not a class
    -N, --no-samba-reload: don't reload samba (used when many classes are added)

isi-computer

Senza opzioni restituisce la lista dei pc windows (join)

  usage: %prog [options] [host_name|file]
    -d, --delete=delete: elimina un computer (annulla il join)
    -f, --file=file: elimina tutti i computer elencati nel file
    -v, --verbose: aumenta i messaggi a video

isi-quota

ISI-QUOTA attribuisce la quota agli utenti di un gruppo   definito sull'albero
ldap e la somma di tutte le quote al gruppo stesso

                filesystem = partizione quotata
                gruppo = utenti da quotare
                S1 = soft lim dello spazio disco
                S2 = hard lim dello spazio disco (deve essere > S1)
                F1 = soft lim del numero dei files (inode)
                F2 = soft lim del numero dei files (deve essere > F1)

limiti=0 equivale a nessuna quota

  usage: %prog <filesystem> < gruppo> [ S1 ] [ S2 ] [ F1 ] [ F2 ]

isi-wlg

ISI-WINDOWS_LOCAL_GROUP (WLG)
isi-wlg -aggiunge o cancella un utente/gruppo di dominio a/da un gruppo locale
          WinXP (Administrators, Power Users o altro)
        -cambia la password dell'Administrator del client XP

  usage: %prog <options>
    -a, --add-user=add_user: utente/gruppo da aggiungere al gruppo locale XP nel formato DOMINIO\\NOME (due controbarre)
    -x, --canc-user=canc_user: utente/gruppo da eliminare dal gruppo locale XP
    -g, --local-group=local_group: agisce sul gruppo locale XP indicato
    -l, --labinfo=labinfo: nome dell'aula descritta in /etc/isi/labinfo.secret
    -P, --newlocalpwd: cambia la password all'Administrator locale XP
    -S, --host=host: workstation windows su cui agire (incompatibile con -l)
    -U, --hostadmin=hostadmin: account amministrativo sull'host nel formatp user%pwd
    -A, --admindom: richiede le credenziali di un amministratore di dominio
    -M, --maplab=maplab: <nome,range_ip> nel formato nmap; ricerca i client e compila il file di conf dell'aula [nome]

NOTA1: esprimendo l'opzione -A le operazioni verranno svolte dall'amministratore
di dominio, prescindendo quindi dalle credenziali dichiarate nel file di conf.

isi-convert

Importa gli utenti da formati differenti. Il file può essere in formato .csv
o .xls. Genera un file in formato .isi

NOTA: non confondete il formato dei dati (la successione delle colonne) con il formato
      del file (.csv o .xls).

  usage: %prog [options] file
    -g, --group=GROUP: limit import for users (needed)
    -o, --output=FILE: produci l'output nel file FILE (default stdout)
    -r, --renamed: mostra quali utenti verrebbero rinominati
    -d, --deleted: mostra quali utenti verrebbero cancellati
    -e, --extended: usa il formato esteso
    -I, --id-name: usa d_nome.cognome per logname
    -N, --name: usa nome.cognome per logname
    -p, --random-password: generate random password
    -F, --file-format=FORMAT: file format is FORMAT ('isi' or 'sissi')
    -C, --use-cf: usa CF per nome + identificativo maingroup  (default is in /etc/isi/defaults.py)

A differenza di isi-prepusers, isi-convert non genera file se non richiesto. Analizza un file in formato sissi (.csv o .xls), ovvero con colonne di nomi standard e compone un nome di login per l’utente, aggiungendo un progressivo se trova doppioni. E` possibile generare nomi con schemi differenti:

name:il logname viene composta con nome.cognome (alessandro.dentella). Opzione --name
cf:il logname viene compostao come identificativo gruppo seguito dal codice fiscale (a_dntlsn63d07). Opzione --use-cf
id-name:il logname viene composto da identificativo gruppo seguito da nome.cognome (d_sandro.dentella). Opzion e --id-name

E possibile ottenere come output l’elenco degli utenti che verranno eliminati (opt: --delete o quello degli utenti rinominati -usando un progressivo- a causa di colisione con nomi esistenti (opt: --rename).

Il formato esteso è usato solo nelle scuole dove viene gestita anche la biblioteca. In queste scuole è necessario che il file Sissi abbia anche i dati di residenza e telefono.

Il file prodotto da isi-convert può essere usato come input per isi-adduser.

isi-convert accetta come input file con dati in due formati differenti:

sissi:

il programma di gestione alunni usato da molte scuole italiane

isi:

il formato ufficiale di ReteISI. l’ultilità di convertire da .isi a .isi è di potere:

  • gestire nomi doppi
  • usare file di input in formato .xls

formato sissi

Il formato “Sissi” è basato su alcune colonne con nomi standard, il nome della colonna deve rispettare anche nelle maiuscole/Minuscole quanto sotto riportato, ed è per altro il default di Sissi.:

Anno di corso:es.: 3 per la terza classe
Sezione:es.: A
Corso:es.: Programmatori Mercurio
Cognome:ovvio
Nome:ovvio
Codice fiscale:ovvio

Da una tabella con queste intestazioni è possibile generare la classe di appartenenza solo in presenza di un opportuno file di corrispondenza fra il Corso e la sigla che si vuole usare, questo file è /etc/isi/sissi-tabcorsi:

progetto cinque = geo
geometri        = geo
indirizzo giuridico economico aziendale = ige
programmatori mercurio = pro

In questo esempio la classe di appartenenza dell’alunno è pro3a

isi-tools

ISI-INFO effettua una serie di controlli e restituisce elenchi di utenti
  usage: %prog [options] [users_file_name|group_name|domain]
    -c, --classes: lista la composizione delle classi contenute nel file utenti passato
    -f, --field-ldap=field_ldap: lista la valorizzazione del campo ldap per gli utenti del gruppo indicato
    -p, --pwd-changed: restituisce gli utenti che hanno cambiato la password rispetto a quella definita nel file utenti
    -P, --pwd-nochanged: restituisce gli utenti che NON hanno cambiato la password rispetto a quella definita nel file utenti
    -B, --pwd-mustchange: costringe al rinnovo password tutti i membri di un gruppo
    -b, --pwd-mustchange-days=pwd_mustchange_days: fissa la data di scadenza password per i membri del gruppo a oggi + i giorni indicati
    -W, --pwd-when: mostra le date di last set e scadenza delle password
    -A, --pwd-canchange-days=pwd_canchange_days: fissa la data a partire dalla quale gli utenti del gruppo possono modificare la password, per impedire il cambio data indicare un numero positivo di giorni
    -n, --numbers-get: mostra i successivi uidNumber e gidNumber per il dominio samba indicato
    -N, --numbers-set: come -n ma corregge l'errore trovato
    -r, --rename-user=rename_user: formato vecchio_logname,nuovo_logname,[cf] (separatore virgola)
    -R, --rename-user-file=rename_user_file: cambia i logname contenuti nel file, formato come sopra
    -X, --force: non interrompe l'azione in caso di errore (in abbinamento con -R)
    -o, --output=out_file: scrive il risultato in un file
    -v, --verbose: aumenta i messaggi a video
    -j, --adjust: rimemorizza cn,sn,givenName,gecos,displayName per ogni utente nel file
    , --fix-gid=GROUP_NAME: imposta il gruppo ldap con lo stesso gid del gruppo in /etc/group

NOTA:   le opzioni -c -p -n|N  non sono cumulabili\n l'opzione -o funziona solo con -c -f -p

isi-user

Il programma isi-user fa alcune funzioni che sono state reimplementate nella interfaccia web. Per questioni di usabilità e di manutenzione del codice raccomandiamo di usare l’interfaccia web.

Importare utenti da sissi

Nota

le operazioni di importazione utenti da Sissi erano fatte nelle release precedenti da isi-prepusers, un programma in perl. Nella ristrutturazione che ha portato alla nuova release di isi il prgramma è stato sostituito da isi-convert (in python) che ha alcune migliorie fra cui: l’abilità di leggere da formato .xls (formato di output di Sissi) e la maggiore estensibilità ad accettare altri formati in futuro.

Estrazione dei dati con Open Sissi. 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).

Da questo momento è possibile sia procedere via interfaccia web sia come descritto usando il comando isi-convert

isi-perms

usage: %prog files [options] [ cartella ] [ cartella] ...
    -d, --debug: print debugging
    -n, --dry-run: don't execute commands really, just show
    -p, --nopostexec: don't execute postexec command
    -P, --nopreexec: don't execute preeexec command
    -b, --remove-all: as in setfacl (zeros precedent acl)
    -w, --write: write the conf file resulting from merge of 2 conf files (implies -n)
    -f, --file=FILE: use file as configuration file
    -H, --fix-homes: reimposta permessi di default per le home in argomento
    -A, --fix-all-homes: reimposta permessi di default per le tutte le home

Nuovo nella versione 2.7.10.

L’opzione –fix-homes (-H) accetta in argomento delle cartelle (devono essere delle home) è quindi comodo usarlo ad esempio così:

# cd /home/users
# isi-perms -H alunni/*
# isi-perms -H */*

E`poi possibile ciclare su tutti gli utenti definiti nel sistema con l’opzione -A:

# isi-perms -A

Attenzione che l’operazione può prendere anche molto tempo se le home sono grandi

A cosa serve?

Le ACL (Access Control List) solitamente vengono impostate subito dopo l’installazione del sistema e non dovrebbero richiedere alcuna manutenzione.

Esperienza insegna che questo non sempre è vero. Qualche imprevisto può sempre capitare e talvolta coinvolgere diversi utenti. Per garantire la ricostituzione di una situazione di “coerente” ci viene in aiuto isi-perms, grazie al quale è possibile impostare le acl definite in un opportuno file di configurazione.

I file di configurazione

isi-perms utilizza due file di configurazione:

/etc/isi/acl.conf:
 Configurazione di default
/etc/isi/acl-local.conf:
 Configurazione personalizzabile dall’utente; può sovrascrivere le opzioni di default.

Nota

Non apportare le tue modifiche a /etc/isi/acl.conf o rischierai di perderle in fase di aggiornamento del sistema!.

Per definire nuove acl per directory non definite nella configurazione di default, si potrà usare a modello il file acl.conf ed inserire le proprie personalizzazioni nel file acl-local.conf. Qualora si volesse sovrascrivere una particolare configurazione già definita, basterà ridefinirla (la versione inserita in acl-local.conf avrà sempre la precedenza).

Esempi di utilizzo

Inizializzare le acl per tutti gli utenti e le share:

isi-perms

Risettare i permessi di una particolare directory:

isi-perms sezione

isi-perms lanciato senza specificare una directory, può impiegare molto tempo. Quando possibile, lo si utilizi su sezioni ben precise. Il termine “sezione” fa riferimento alle sezioni del file di configurazione, al momento ad esempio c’è una sezione per ciascun grupo principale (alunni, admins, docenti...) e per ciascuna area (area_alunni, area_docenti, ...) e per classi.