Standard installazioni FUSS
Struttura directory /home
Premessa
Nei paragrafi che seguono si fa riferimento alla nomenclatura comunemente usata per le classi ( ad es. b-2022 per una classe della sezione B che sia entrata nel 2022). Questa pratica, che può risultare comoda per qualche amministratore, non lo è per i fruitori del servizio, cioè docenti e studenti.Si invita pertanto a seguire lo standard illustrato al seguente link , più comprensibile ed ordinato.
Di seguito viene descritta la struttura comune delle cartelle utente (studenti e docenti) nonché delle cartelle condivise che dovrebbe essere adottata in ciascuna scuola.
Rete scolastica per scuola singola
Gruppi Ldap comuni ad ogni scuola:
docenti: gruppo primario dei docentistudenti: gruppo primario per gli studenti, gruppo secondario per i docentigruppo-classe: (facoltativo) gruppo secondario degli studenti di quella classe, coincide col nome della cartella di classe, gruppo secondario per i docenti
*Esempio* : La cartella classi/c-2021 (nell’anno scolastico 2021/22) è la cartella comune della classe 2C. La cartella home/classi/c-2021 è accessibile in lettura e scrittura solo al gruppo classe (quindi e agli studenti della classe ed ai relativi docenti)
Nota
ATTENZIONE: se si usano i gruppi classe, che vengono attribuiti anche ai docenti, bisogna fare molta attenzione quando si procederà a cancellare gli utenti appartenenti a quel gruppo-classe (cioè gli alunni in uscita): si rischia in tal modo di cancellare anche i docenti aggiunti a quel gruppo. Pertanto bisogna ricordare di cancellare gli utenti appartenenti a quel gruppo-classe escludendo quelli appartenenti al gruppo docenti.
Contenuto della cartella home
Nella cartella home si creano le seguenti cartelle per gli utenti:
docenti, permessi : 750, proprietario: root , gruppo: docenticlassi, permessi : 750, proprietario: root , gruppo: studentiospiti, permessi : 750, proprietario: root , gruppo: ospiti
Contenuto della cartella docenti
una cartella comune-docenti accessibile solo ai docenti, permessi : 3770, proprietario: root , gruppo: docenti
le cartelle personali dei docenti della scuola, permessi : 700
Contenuto della cartella classi
una cartella per ogni classe il nome della classe è della forma [a-z]-[2-99]:
la lettera indica la sezione, il numero a quattro cifre l’anno di entrata nella scuola; permessi : 770, proprietario: root , gruppo: studenti (se presente il gruppo-classe inserire quello)
Esempio : nell’anno scolastico 2024/25 a-2024 indica la classe 1A (entrata nella scuola nell’anno 2024)
All’interno della cartella classi è presente:
una cartella comune-classe, permessi : 3770, proprietario: root , gruppo: studenti (o gruppo-classe se esiste)
le cartelle personali degli alunni della classe
Contenuto della cartella ospiti
le cartelle di utenti ospiti che, anche temporaneamente, devono utilizzare la rete didattica della scuola, permessi : 770, proprietario: root , gruppo: ospiti
una cartella comune-ospiti, permessi : 3770, proprietario: root , gruppo: ospiti
Rete scolastica per Istituti Comprensivi o Pluricomprensivi
Gruppi Ldap comuni ad ogni istituto
docenti: gruppo primario dei docenti
nome-scuola: gruppo secondario per docenti e studenti di quella scuola
studenti: gruppo primario per gli studenti, gruppo secondario per i docenti
gruppo-classe: (facoltativo) gruppo secondario degli studenti di quella classe, coincide col nome della cartella di classe, gruppo secondario per i docenti.
Nota
ATTENZIONE: se si usano i gruppi classe, che vengono attribuiti anche ai docenti, bisogna fare molta attenzione quando si procederà a cancellare gli utenti appartenenti a quel gruppo-classe (cioè gli alunni in uscita): si rischia in tal modo di cancellare anche i docenti aggiunti a quel gruppo. Pertanto bisogna ricordare di cancellare gli utenti appartenenti a quel gruppo-classe escludendo quelli appartenenti al gruppo docenti.
Nella cartella/home vengono create due (o più cartelle):
nome-scuola-1, permessi : 750, proprietario: root , gruppo: nome-scuola-1
nome-scuola-2, permessi : 750, proprietario: root , gruppo: nome-scuola-2
nome-scuola-3, permessi : 750, proprietario: root , gruppo: nome-scuola-3
In ciascuna cartella delle scuole si ripete la struttura indicata nel precedente paragrafo (Rete scolastica per scuola singola).
Esempio:
L’istituto Comprensivo ICBZ3 ha due scuole: scuola secondaria di I grado Leonardo da Vinci, scuola primaria don Milani
Avremo le seguenti cartelle:
/home/donmilani oppure /home/primaria
/home/davinci oppure /home/secondaria
/home/ospiti
Quindi nella cartella donmilani avremo:
docenti
classi
Anche per i gruppi vale quanto già scritto nel precedente paragrafo (Rete scolastica per scuola singola).
La procedura descritta è necessaria per mantenere in ordine la disposizione delle classi come illustrata, ma può essere utile anche per sanare alberi delle home poco ordinati o nomi poco chiari per alunni e docenti, come 2019a per indicare la classe-4a. Il tutto richiede poco tempo e solo una certa attenzione, ribadiamo, nella predisposizione dei file csv.
Nomi utenti
I nomi degli utenti sono definiti dal cognome più le tre lettere iniziali del nome, tutto in minuscolo . Nell’eventualità di doppio cognome si elimina lo spazio vuoto tra un cognome e l’altro o si tiene solo il primo cognome. Tutti i caratteri speciali (accenti, umlaut, ecc) vengono eliminati con sostituzione delle lettere accentate con quelle semplici. La umlaut viene sostituita con il dittongo corrispondente o con lettere semplici.
Hostname
Nella riunione dell’8 maggio 2018 si è deciso di adottare la seguente convenzione:
Client
I nomi dei client dovranno essere basati sullo schema:
nome_aula-numero_progressivo
Server
Per i nomi dei server si decide di utilizzare lo schema seguente:
nome_scuola-fuss per il server FUSS
nome_scuola-prox per il server fisico
Spostamento delle classi da un anno all’altro
Premessa
Per una gestione più chiara ed ordinata dell’albero ldap si consiglia di:
attribuire al nome delle classi il nome reale (ad es. 1b, 3c, ecc), anzichè il nome della sezione seguito dall’anno di iscrizione (b-2024, c-2002,..)
attribuire lo stesso nome al gruppo classe
Ad esempio la cartella che contiene le home degli alunni di una classe della primaria (poniamo 2c) sarà
/home/primaria/alunni/classe-2c-ele
Gli alunni di questa classe apparterrebbero invece al gruppo 2c-ele
Ricordiamo che la creazione di un gruppo specifico per la classe ha lo scopo di facilitarne la gestione, come ad esempio eliminare agevolmente le classi in uscita. Naturalmente si possono scegliere denominazioni di classi e gruppi diverse, purchè siano coerenti ed omogenee nello stesso plesso. Visti alcuni precedenti si preferisce aggiungere ancora una volta la seguente Nota:
Nota
ATTENZIONE: se si usano i gruppi classe, che vengono attribuiti anche ai docenti, bisogna fare molta attenzione quando si procederà a cancellare gli utenti appartenenti a quel gruppo-classe (cioè gli alunni in uscita): si rischia in tal modo di cancellare anche i docenti aggiunti a quel gruppo. Pertanto bisogna ricordare di cancellare gli utenti appartenenti a quel gruppo-classe escludendo quelli appartenenti al gruppo docenti. Per trixie è stata implementata una nuova funzione che permette l’eliminazione in mass «intelligente», consentendo di filtrare gli utenti in base all’appartenenza ad altri gruppi.
Per gestire il passaggio degli alunni all’anno scolastico successivo, è disponibile lo script sposta_classi.sh. Questa procedura automatizza sia lo spostamento delle home directory e di eventuali cartelle comuni sul filesystem, sia l’aggiornamento dei percorsi e dei gruppi secondari (classi) all’interno di LDAP.
Tutti i file necessari si trovano sul server nella cartella /usr/share/fuss-server/scripts/Aggiorna-classi/.
La stessa cartella contiene anche lo script fuss_full_restore.py che, in caso di disastro, permette di riportare tutto alla situazione iniziale. La sua descrizione è leggibile più avanti.
Preparazione dei file di mapping (CSV)
Prima di procedere, è necessario configurare i file di mapping nella cartella dello script.
Avvertimento
Assicurarsi che i file CSV non contengano spazi superflui o separatori diversi dalla virgola (,), per evitare errori nel riconoscimento dei percorsi.
classi_mapping.csv: Definisce il passaggio dei percorsi delle classi (es: /home/.../classe-1a,/home/.../classe-2a).
la colonna di sinistra contiene le classi «vecchie» e quella di destra le classi «nuove»;
si presti particolare cura nella preparazione del csv:
/home/primaria/alunni/classe-5b-ele,/home/primaria/alunni/classe-6b-ele /home/primaria/alunni/classe-5a-ele,/home/primaria/alunni/classe-6a-ele /home/primaria/alunni/classe-4b-ele,/home/primaria/alunni/classe-5b-ele /home/primaria/alunni/classe-4a-ele,/home/primaria/alunni/classe-5a-ele /home/primaria/alunni/classe-3b-ele,/home/primaria/alunni/classe-4b-ele /home/primaria/alunni/classe-3a-ele,/home/primaria/alunni/classe-4a-ele /home/primaria/alunni/classe-2b-ele,/home/primaria/alunni/classe-3b-ele /home/primaria/alunni/classe-2a-ele,/home/primaria/alunni/classe-3a-ele /home/primaria/alunni/classe-1b-ele,/home/primaria/alunni/classe-2b-ele /home/primaria/alunni/classe-1a-ele,/home/primaria/alunni/classe-2a-ele
group_mapping.csv: Definisce il passaggio dei gruppi classe secondari (es: 1a-ele,2a-ele).:
5b-ele,6b-ele
5a-ele,6a-ele
4b-ele,5b-ele
4a-ele,5a-ele
3b-ele,4b-ele
3a-ele,4a-ele
2b-ele,3b-ele
2a-ele,3a-ele
1b-ele,2b-ele
1a-ele,2a-ele
Funzionamento e Sicurezza
All’avvio, lo script è configurato per garantire la massima sicurezza dei dati:
Backup Automatico LDAP: Lo script esegue automaticamente un dump completo del database LDAP (creando il file
ldap-dump.ldif) prima di iniziare qualsiasi modifica. In questo modo è sempre disponibile un punto di ripristino immediato.Selezione Gruppo Primario: Lo script chiederà conferma interattiva su quale sia il gruppo primario degli utenti da spostare (ad esempio
studentioalunni-ele).Seleziona percorso base per la ricerca delle Home (es. /home/primaria/alunni)
Modalità Simulazione (DRY-RUN): Di default, la variabile
DRY_RUNè impostata sutrue. In questa modalità, lo script non modifica nulla ma simula l’intera procedura scrivendo ogni operazione nel file sposta_classi.log.
Procedura operativa
Spostarsi in
/usr/share/fuss-server/scripts/Aggiorna-classi/Configurare i file classi_mapping.csv e group_mapping.csv
Verifica: Eseguire lo script in modalità simulazione con
sudo ./sposta_classi.she controllare attentamente il filesposta_classi.log.Esecuzione: Una volta confermata la correttezza dei mapping nel log, impostare
DRY_RUN=falseall’interno dello script e lanciarlo nuovamente per rendere effettive le modifiche.
Caratteristiche principali
Gestione Home alunni: Sposta automaticamente le cartella Home sia a livello LDAP che a livello fisico
Gestione Cartelle Comuni: Sposta automaticamente la cartella
00-comunedi ogni classe, aggiornandone i permessi per il nuovo gruppo classe.Gestione Gruppi Secondari: Rimuove l’utente dal vecchio gruppo classe e lo inserisce nel nuovo, evitando l’effetto «domino» (spostamenti multipli).
Pulizia: Rimuove le vecchie directory delle classi solo se rimaste effettivamente vuote dopo il passaggio di tutti gli utenti.
Ripristino Totale (fuss_full_restore.py)
In caso di necessità di ripristino totale (es. a causa di un trasferimento incompleto o errato), la cartella include lo script fuss_full_restore.py. Questo script è in grado di ripristinare il backup LDAP (ldap-dump.ldif), scansionare il filesystem alla ricerca delle home degli utenti e riposizionarle automaticamente nei percorsi corretti dichiarati nel database.
Anche questo script è parzialmente interattivo. Viene richiesto di confermare:
il gruppo primario degli alunni da spostare (es. alunni-ele)
il percorso base per la ricerca delle Home (es. /home/primaria/alunni)
la base LDAP (es. dc=fuss,dc=blz) che comunque dovrebbe essere estratta automaticamente
se si vuole eseguire lo script in modalità reale o simulata . In questo caso la simulazione è di scarsa utilità, dato che l’albero ldap non viene realmente ripristinato e quindi lo script non trova utenti da ripristinare.
Filtraggio intelligente basato su metadati (ctime): Lo script fuss_full_restore.py adotta una politica conservativa per il ripristino delle cartelle comuni. Grazie all’analisi dei metadati del filesystem (comando stat), lo script è in grado di distinguere tra una cartella che si trova nella sua posizione storica e una che è stata spostata o modificata di recente. Il ripristino avviene solo se:
La cartella mostra un cambiamento recente nei metadati (indicazione di un move o chgrp recente).
Il percorso di destinazione è libero (lo script non sovrascrive mai cartelle esistenti). Questo garantisce che le operazioni di ripristino agiscano chirurgicamente solo sui dati effettivamente coinvolti nell’errore di spostamento.
Conclusioni
La procedura descritta è necessaria per mantenere in ordine la disposizione delle classi come illustrata, ma può essere utile anche per sanare alberi delle home poco ordinati o nomi poco chiari per alunni e docenti, come 2019a per indicare la classe-4a. Il tutto richiede poco tempo e solo una certa attenzione, ribadiamo, nella predisposizione dei file csv.
Script di Configurazione Cartelle Didattiche Condivise
Descrizione
Questo script automatizza la creazione di una struttura di cartelle collaborative per le classi su server Linux. Configura permessi avanzati tramite ACL (Access Control Lists) per gestire tre scenari tipici:
00-Comune: Spazio di lettura per tutti.
01-Compiti: Solo i docenti scrivono, gli studenti leggono.
02-Buca-delle-Lettere: Gli studenti possono caricare file («al buio») ma non possono vedere o cancellare i file altrui. I docenti hanno controllo totale.
Integrazione: Creazione automatica di link simbolici e segnalibri (GTK) nelle home degli studenti.
La guida per l’utente all’utilizzo della cartella condivisa si può trovare al seguente link:
Prerequisiti
Prima di eseguire lo script, assicurarsi che:
Gli account degli studenti siano già stati creati e le loro home directory siano situate all’interno della cartella della classe (es: /home/classe-2a/studente1).
Esista un gruppo ldap che contenga tutti gli studenti della classe (es: gruppo 2a-media).
Nota
Per poter accedere alla cartella 00-comune è obbligatorio appartenere al gruppo della classe (ad es. 2a-media). Qualunque docente o studente non appartenente a questo gruppo non riuscirà nemmeno ad entrarci. Pertanto oltre agli alunni della classe, anche i docenti abilitati ad operare nella cartella dovranno essere aggiunti allo stesso gruppo via Octonet .
Istruzioni per l’Esecuzione
Spostarsi nella directory radice della classe interessata (es. /home/primaria/alunni/classe-2a):
cd /home/primaria/alunni/classe-2a
Eseguire lo script:
sudo /usr/share/fuss-server/scripts/link-condivisa.sh
Lo script richiederà i seguenti parametri in input:
Nome della cartella comune: Default 00-Comune. Premere Invio per confermare.
Docente Coordinatore (Owner): L’utente che sarà proprietario fisico dei file (es. coordinatore o lasciare root).
Gruppo Amministratori: Il gruppo che rappresenta i docenti (es. docenti). Avranno accesso completo a tutto.
Gruppo della classe: [OBBLIGATORIO] Inserire il nome esatto del gruppo Linux che contiene gli studenti (es. 2a-ele).
Cosa fa lo script (Dettagli Tecnici)
Permessi Speciali: Applica il SGID bit e lo Sticky Bit sulla cartella comune per garantire l’ereditarietà del gruppo e impedire la cancellazione accidentale.
Logica «Buca delle Lettere»: Imposta permessi wx (scrittura ed esecuzione, senza lettura) per il gruppo classe sulla cartella 02-Buca-delle-Lettere. Questo permette agli studenti di entrare nella cartella e trascinare file, ma impedisce loro di listarne il contenuto.
Automazione User-Side:
Crea un link simbolico (ln -s) alla cartella comune dentro la home di ogni studente trovato nella directory corrente.
Aggiorna il file .config/gtk-3.0/bookmarks di ogni studente affinché la cartella appaia nella barra laterale del File Manager (Thunar, Nautilus, ecc.).
Verifica del funzionamento
Dopo l’esecuzione, è possibile verificare la corretta applicazione delle ACL con il comando:
getfacl 00-Comune/02-Buca-delle-Lettere
L’output dovrebbe mostrare il gruppo classe con permessi -wx e il gruppo docenti con rwx.
Manutenzione
Lo script è idempotente: può essere lanciato più volte sulla stessa cartella per riparare permessi corrotti o per aggiungere link simbolici a nuovi studenti aggiunti successivamente alla classe.
Nota
Nota di sicurezza: Lo script opera solo sugli utenti le cui home directory sono sottocartelle della posizione attuale. Non tocca utenti di sistema o utenti fuori dal percorso specificato.