I comandi isi*

Come operare sul server

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

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, gruppo principale e cognome.
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)
    -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 generato 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 dati dei 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 a tutti gli utenti di un gruppo LDAP
  usage: %prog -g <GRUPPO> [s1] [s2] [f1] [f2] [opzioni]
   -f, --filesystem=FILESYSTEM: partizione quotata
   -g, --gruppo=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)
  Nota: Lo spazio viene espresso in Mb

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-checkup

usage: %prog [options]
-t, --template=modello: imposta i test secondo il modello
-T, --templateDefault: attiva i test del template di default
-l, --list: elenca i template disponibili
-d, --dump: elenca i test disponibili nel template corrente
-r, --reset: disattiva tutti i test del template in uso
-s, --system: lancia i test (boot, servizi, ISI)
-u, --user=user: utente da testare
-U, --users: lancia solo i test relativi agli utenti
-L, --local: lancia solo i test locali
-A, --all: lancia tutti i test
-n, --numt=numt: lancia solo il test numero numt
-v, --verbose: be verbose

Leggete maggiori informazioni su isi-checkup nella pagina pagina apposita o nel laboratorio

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 del vecchio isi-prepusers, isi-convert non genera file se non richiesto. Analizza un file in formato sissi (.csv o .xls) o Formato dati dei file .isi e compone un nome di login per l’utente, aggiungendo un progressivo se trova doppioni. Per produrre un file utenti da sissi potete seguire le istruzioni qui

Nota

Dato che come chiave unica viene utilizzato il codice fiscale, quando si genera la lista degli utenti, è bene assicurarsi che gli utenti presenti nel nuovo-elenco continuino ad avere( o non avere) questa informazione. In caso contrario, i vecchi utenti verranno sostituiti da nuovi utenti con lo stesso nome seguito da un numero progressivo.

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

personalizzato:

se i formati precedenti non vi soddisfano potete crearne uno personalizzato editando il file /etc/isi/defaults.py cambiando il contenuto della variabile USER_FORMAT:

USER_FORMAT = {
    'default' : u'%(group_id)s_%(cf).11s',
    'docenti' : u'%(first_name)s.%(last_name)s',
    }

dove ogni gruppo può avere un poprio modo di comporre la logname e la sintassi è quella delle stringhe python, sapendo che le parti fra parentesi rappresentano parti dello user e group_id è l’ identificativo del gruppo (a per alunni, d per docenti, ad per admins...) e che è possibile imporre una lunghezza massima usando .n come in %(cf).11s ovvero i primi 11 caratteri del codice fiscale.

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

NOTA:   le opz.-c-p-n|N non sono cumulabili; l'opz.-o funziona solo con -c-f-p
  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
    -l, --pwd-getpol: legge le politiche di dominio per le password
    -L, --pwd-setpol=pwd_setpol: imposta le politiche di dominio per le password (--pwd-setpol help per avere ulteriore aiuto)

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.

isi-remote-desktop

Questa script sposta i desktop presenti in .profili/WinXP/Desktop o .profili/Vista.V2Desktop in Scrivania.

Può essere chiamata senza parametri o con un nome di cartella che verrà usato al posto di Scrivania. Si suggerisce di leggere cosa sia e cosa serva un desktop remoto. Questo comando, se necessario, viene usato una sola volta per ogni sistema e solo per la migrazione al Desktop remoto, per cui non è nel PATH di root ma in /usr/lib/isi.

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
    -C, --fix-all-classes: reimposta permessi di default per le tutte le classi e corsi

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

L’operazione omologa per le classi è invocata con l’opzione -C. Per default cicla su tutte le classi, ma è possibile passare in argomento solo alcune classi. Reimposta i permessi della classe (o corso) im modo da permettere di fare tutto nella cartella di classe ai seguenti grupppi

  • classe
  • docenti
  • admins

Questi utenti hanno anche diritto di cancellare file di altri!

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.