Un server FUSS deve avere almeno 2 interfacce di rete. La prima serve
per la connessione alla WAN (Wide Area Network) mentre la seconda è
collegata alla rete locale (LAN-1) della scuola. La presenza di una
terza porta Ethernet sul server e di una seconda LAN nella scuola alla
quale sono connessi degli access point WiFi sono i presupposti per poter
installare sul server FUSS un captive-portal che offre la possibilità a
dispositivi satellite di accedere ad internet previa autenticazione.
Installazione di FUSS server dal template cloud-init ready
A partire dalla versione 10 è disponibile una modalità di installazione più
veloce del FUSS server partendo da una immagine di macchina virtuale
preinstallata con il supporto per la tecnologia di autoconfigurazione
cloud-init.
Questa modalità può essere utilizzata solo con un sistema di virtualizzazione,
qui verrà illustrato come farlo con la piattaforma di virtualizzazione
Proxmox, adottata dal progetto, che supporta la tecnologia indicata
consentendo di gestire tutte le caratteristiche della macchina virtuale
direttamente dalla sua interfaccia web.
In particolare diventa possibile:
gestire indirizzi di rete, gateway e DNS dall’interfaccia web
gestire hostname e dominio dell’interfaccia web
allargare automaticamente il disco radice una volta ridimensionato
sull’interfaccia web
Il primo passo è scaricare l’immagine predisposta dal progetto per
inserirla fra i dump disponibili per il ripristino. Questa è disponibile
all’indirizzo
http://iso.fuss.bz.it/cloud-init/vzdump-qemu-fuss-server-12-latest.vma.zst
e la cosa più semplice è scaricarla direttamente sul server Proxmox su
cui sarà utilizzata collegandosi con SSH ed eseguendo:
# cd /var/lib/vz/dump/# wget http://iso.fuss.bz.it/cloud-init/vzdump-qemu-fuss-server-12-latest.vma.zst
Nota
se si è configurato in Proxmox uno storage diverso da local per
le immagini dei dump ci si ponga nella rispettiva directory invece
che sotto /var/lib/vz/dump/.
Nota
le immagini più recenti sono compresse con il formato zstd ed il
file ha estenzione .zst, alcune delle prime immagini (il cui uso
è comunque sconsigliato) sono in formato lzo ed hanno estensione
.lzo.
Una volta completato il download l’immagine comparirà fra in contenuti
dello storage (dall’interfaccia web) e si potrà iniziare il ripristino
anche direttamente dall’interfaccia selezionandola ed usando il pulsante
«Restore» che creerà una nuova macchina virtuale sul primo VMID libero,
l’interfaccia comunque consente di indicarne uno specifico diverso. Si
abbia cura di indicare, sempre nella finestra di ripristino, l’uso di
local-lvm come storage di ripristino e mettere la spunta sulla
casella «Unique».
Si tenga presente che perché questo funzioni regolarmente occorre avere
configurato Proxmox per l’uso di FUSS, la macchina virtuale infatti assume la
presenza di almeno due diverse interfacce di rete, una sulla rete esterna
(vmbr0) ed una sulla rete interna (vmbr1); qualora non fosse così si
potranno comunque cambiare le assegnazioni delle interfacce una volta
ripristinata la macchina virtuale.
Alternativamente si può eseguire il ripristino dalla riga di comando (si
assume che si sia configurato lo storage su LVM con il nome utilizzato nella
installazione di default di Proxmox) con:
dove al posto di 106 si può usare un qualunque VMID libero. Lo storage
deve essere local-lvm (come l’installazione diretta) e l’uso di -unique
consente di generare un MAC address della nuova VM che non confligga con altri
eventualmente presenti (è poco probabile, a meno che non si reistallino più
machine dalla stessa immagine di partenza, ma è buona norma farlo).
Una volta ripristinata l’immagine gli si deve associare l’immagine del disco
di configurazione con:
si rimuova la precedente istanza del volume logico con:
lvremovepve/vm-106-cloudinit
e si ripeta il comando.
A questo punto prima di avviare la macchina per la prima volta si potrà
configurare la rete dall’interfaccia web, nella sezione Cloud-Init,
impostando: gli IP sulle interfacce di rete, il default gateway per
l’interfaccia esterna, una chiave SSH di accesso a root, il dominio ed il
server DNS. Quest’ultimo deve essere sempre 127.0.0.1, ed il nome a
dominio dovrà essere quello che verrà poi utilizzato nella configurazione
finale eseguita dal comando fuss-server.
Avvertimento
si deve sempre configurare il server DNS come 127.0.0.1 e
il nome a dominio uguale a quello che verrà usato poi con il comando
fuss-server altrimenti si rischia che in una successiva esecuzione di
fuss-server, o nella riesecuzione dell’inizializzazione di cloud-init,
ci siano interferenze e sovrascritture reciproche
Tutte queste operazioni si possono fare anche a riga di comando; per inserire
i suddetti parametri nelle configurazioni di cloud-init (si adattino gli
indirizzi di rete alle proprie esigenze) si esegua:
l’ultimo comando, se si ha un elenco di chiavi, può essere sostituito da:
qmset106--sshkeyelencochiavissh.txt
dove elencochiavissh.txt è un file contenente l’elenco di chiavi pubbliche
(una per riga) che verranno abilitate per la macchina in questione; lo si può
generare da un elenco di file di chiavi con qualcosa tipo cat*.pub>elencochiavissh.txt.
Oltre alla configurazione della rete è opportuno impostare dall’interfaccia
web anche l’hostname della macchina. Questa corrisponde di default al nome
usato da Proxmox per la relativa VM (quello mostrato insieme al VMID
nell’interfaccia). Nell’immagine distribuita si è usato come nome di default
fuss-server-base-image che si potrà modificare nella sezione Options
dell’interfaccia web. Anche in questo caso la modifica si può fare a riga di
comando con:
qmset106--nameserverhostname
Avvertimento
benché sia possibile impostare l’hostname della macchina in un
secondo tempo all’interno della stessa con hostnamectl, dato
che la configurazione iniziale della rete viene gestita comunque
da cloud-init, è opportuno configurare l’hostname direttamente in
questa sezione e verrà correttamente propagato anche nelle varie
configurazioni.
Avvertimento
si tenga presente che se si cambia uno qualunque di questi
parametri in un secondo tempo, tutte le configurazioni da lui
gestite verranno rigenerate da cloud-init al successivo
riavvio. Questo comprende anche le chiavi SSH del server, con la
conseguenza che le precedenti non saranno più valide; per cui se
ci si è già collegati alla macchina si otterrà il solito avviso
che le fingerprint delle chiavi del server non corrispondono, e
sarà necessario rimuoverle e riaccettarle da capo.
Si dovranno inoltre modificare i parametri hardware della macchina virtuale
(dalla omonima sezione Hardware nell’interfaccia web), per aumentare la
memoria ed allargare il disco quanto necessario, ed eventualmente aggiungere
le interfacce di rete mancanti (ad esempio quella per il captive portal). Si
dovrà anche abilitare l’accensione automatica della macchina virtuale
all’avvio, dalla sezione Options. Anche per modificare queste
caratteristiche si può continuare ad operare direttamente a riga di comando,
con qualcosa del tipo:
dove si aumenta la RAM assegnata alla macchina virtuale a 4G, si richiede il
lancio automatico al riavvio di Proxmox, e si allarga il disco a 500G. Se però
si decide di dedicare un disco separato per le home quest’ultima operazione
non deve essere eseguita, a meno che i 32G assegnati nell’immagine di default
al disco della radice risultino insufficienti, nel qual caso comunque la si
esegua con una dimensione opportuna.
Le immagini fornite hanno già attivato il discard sul disco di installazione
(quest’ultima opzione ha senso solo se, come nell’esempio, si ha un disco che
è stato estratto da uno storage che supporta il discard, come LVM-thin),
qualora fosse assente o non necessario lo si può attivare/disattivare
rispettivamente con:
Si tenga presente che le opzioni indicate verranno applicate al successivo
riavvio, anche per la parte di allargamento del disco, che verrà eseguita
automaticamente da cloud-init (con l’avvertenza però che questo è
possibile solo grazie allo specifico partizionamento usato dall’immagine
fornita dal progetto).
Alla fine del primo avvio della macchina virtuale vengono mostrate nella
console (accessibile dall’interfaccia web di Proxmox) le fingerprint delle
chiavi generate per il server SSH, che è possibile usare per verificarne la
correttezza alla prima connessione. Le si possono trovare in un secondo tempo
nel file /var/log/cloud-init-output.log.
Una volta finita l’installazione non è in genere necessario eseguire nessuna
altra configurazione, a meno di non avere necessità di mantere le home su un
disco separato, che è una buona pratica qualora serva mantenere le quote
disco, e che consentirà, in futuro, di eseguire un aggiornamento solo per la
parte di sistema, senza dover reinstallare i file nella home.
Si perde però in questo caso la capacità di avere un ridimensionamento
automatico del disco come avviene per il filesystem di root, in quanto
cloud-init gestisce questa funzionalità solo per quest’ultimo. Essendoci pro e
contro si lascia la valutazione dell’uso delle home separate a chi esegue
l’installazione, tratteremo comunque qui le modalità per configurare le home
su disco separato.
Per installare le home su un disco separato si provveda ad aggiungere un disco
di dimensione opportuna alla macchina virtuale dall’interfaccia web (sezione
«Hardware», «Add->Hard Disk»). Si può eseguire la stessa operazione dalla riga
di comando con qualcosa del tipo:
(di nuovo l’opzione discard=on ha senso solo se si usa uno storage come
local-lvm).
A questo punto una volta avviato il server disco verrà visto all’avvio come
/dev/sdb. Ci si colleghi come root e si verifichi che il disco sia
effettivamente riconosciuto come /dev/sdb; a questo punto lo si dovrà
partizionare e creare il filesystem per le home, questo si può fare con:
si recuperi l’UUID del disco e lo aggiunga a /etc/fstab, questo si può
fare con:
echo-e"# /home was on /dev/sdb1 during installation">>/etc/fstabecho-e"$(blkid -o export /dev/sdb1|grep ^UUID=) /home ext4 defaults,grpquota,usrquota 0 2">>/etc/fstab
Si sostituisca /dev/sdb1 con l’opportuno file di dispositivo se se ne è
usato un altro. A parte l’aggiunta di un commento esplicativo il comando
estrae l’UUID del filesystem appena creato e crea una voce corretta per le
home con le opzioni per avere le quote e il giusto numero di sequenza nella
scansione iniziale del filesystem check.
Una volta verificato che nella installazione di cloud-init non ci siano file o
directory sotto /home (potrebbe restare la home dell’utente ausiliario di
installazione debian, che può essere rimosso con userdel-rdebian) si
potrà montare il disco home con mount-a.
Sia che si sia usato un disco aggiuntivo per /home, sia che si siano
attivate successivamente le quote sulla radice (aggiungendo
grpquota,usrquota alla sua voce in /etc/fstab) è necessario
inizializzare le quote con:
quotacheck-a-fquotacheck-ag-f
dove l’opzione -f è necessaria qualora (come avviene se si aggiungono le
opzioni di mount per le quote sulla radice) per forzare la scrittura dei file
delle quote a sistema attivo. Si possono ignorare gli avvertimenti che i dati
potrebbero essere imprecisi, verranno comunque corretti al primo riavvio.
Una volta attive le quote si potranno usare i comandi repquota e
repquota-g per verificare la effettiva presenza delle quote. Se detti
comandi non sono presenti si possono installare con aptinstallquotatool
(sono stati comunque inclusi nell’immagine di cloud-init).
Se non si riavvia la macchina dopo aver eseguito i comandi precedenti ed
attivato le quote nelle opzioni di montaggio, o se si aggiungono le opzioni
grpquota,usrquota in un secondo tempo rimontando il filesystem, e si forza
il calcolo delle quote a filesystem montato usando anche l’opzione -m con
i due comandi precedenti, occorrerà anche attivare le quote esplicitamente
con:
Per installare FUSS Server su una macchina fisica, è necessario partire
da un’installazione di Debian Bookworm, su cui è basato il FUSS server.
Le immagini si possono ottenere dall’indirizzo
prendendo il file debian-<versione>-amd64-netinst.iso.
Per le installazioni nelle scuole di Bolzano quest’immagine andrà caricata sul
server proxmox precedentemente configurato,
proseguendo quindi con la creazione della macchina virtuale fino al boot
della stessa. Ma in questo caso è preferibile utilizzare la procedura
illustrata nel paragrafo precedente.
Per installare invece direttamente sul server è necessaria una
chiavetta USB della capacità minima di 1 GB sulla quale va copiata
l’immagine ISO scaricata. In GNU/Linux si può usare il comando dd.
Dopo aver inserito la chiavetta nel PC ove è disponibile l’immagine,
verificare con il comando lsscsi quale dispositivo è stato assegnato alla
chiavetta. Nell’esempio usiamo /dev/sdX dove X può essere una delle
lettere a, b, c ecc. Come root, dare il comando:
Se si è correttamente configurato l’avvio della macchina virtuale dalla ISO
del Netinstall si otterrà la seguente schermata iniziale:
si scelga una installazione testuale, verranno chieste nell’ordine la lingua:
e si scelga l’italiano; la posizione (per il fuso orario):
e si scelga Italia; la tastiera:
e si scelga quella italiana.
Per la rete si usi come interfaccia per l’installazione quella corrispondente
alla WAN del server (quella che si affaccia su Internet):
l’installer tenterà la configurazione automatica della rete, che deve essere
interrotta (si prema invio durante l’acquisizione per cancellarla, o si torni
indietro qualora sia avvenuta). In questo modo si potrà selezionare
esplicitamente una configurazione manuale per l’IP «esterno» del fuss-server:
e si effettuino le impostazioni standard della rete (indirizzo IP, netmask e
default gateway e DNS):
Verrà poi chiesto il nome della macchina, si inserisca subito quello
definitivo:
si prosegua poi impostando il dominio:
verranno poi chieste la password di root e l’utente iniziale, da impostare a
piacere.
Si dovrà poi effettuare il partizionamento dei dischi per l’installazione del
sistema.
La scelta più sicura, per evitare problemi di riempimento della radice,
è usare filesystem separati per /home, /var, /tmp. Questo
però con il partizionamento diretto rende meno flessibile la eventuale
riallocazione dello spazio disco.
Si tenga presente infatti che anche avendo disponibile spazio disco per
poter allargare le partizioni, l’allargamento avverrebbe sul «fondo»
pertanto sarebbe facile ridimensionare soltanto l’ultima partizione (nel
caso la /home, che pur essendo quella più probabile, non è detto sia
davvero quella che ha bisogno dello spazio disco aggiuntivo).
Per questo si suggerisce, per avere maggiore flessibilità, al costo di
una leggera perdita di prestazioni in I/O, di installare usando LVM,
selezionando «guidato - usa l’intero disco e imposta LVM»:
quindi selezionare il disco da partizionare:
l’uso dei filesystem separati:
e confermare la configurazione di LVM:
e l’uso di tutto lo spazio disponibile per il gruppo di volumi:
e poi la formattazione finale:
Una volta completato il partizionamento ed esaurita l’installazione del
sistema base verrà chiesto se aggiungere ulteriori CD o DVD, rispondere
di No:
quindi alla richiesta di configurare i repository dei pacchetti, si
utilizzi il mirror più vicino, non sarà necessario, essendo sulla WAN,
utilizzare un proxy.
Si risponda come si preferisce alla richiesta di partecipare o meno alla
indagine del popularity contest, e nella selezione del software si scelgano
soltanto le voci «server SSH» e «utilità di sistema standard»:
e si completi l’installazione con GRUB installato sul Master Boot Record del
disco:
Completata l’installazione si riavvi il server, eventualmente rimuovendo
il CD di installazione e ripristinando l’ordine di avvio al boot.
Completata l’installazione di Debian occorre finalizzare le configurazioni
iniziali della macchina prima di poter lanciare fuss-servercreate. Il
primo passo è configurare la seconda interfaccia di rete per la LAN, si dovrà
modificare /etc/network/interfaces per aggiungere la relativa
configurazione con qualcosa del tipo:
Occorrerà poi configurare le sorgenti software per i pacchetti,
aggiungendo in /etc/apt/sources.list le righe per il repository di
backports e per quello di FUSS:
a questo punto si potrà installare il pacchetto del fuss-server:
# apt install fuss-server
Una volta completata la configurazione iniziale della macchina, si potrà
proseguire con la configurazione del fuss-server come già illustrato nella
sezione Configurazione del server.
È necessaria una chiavetta USB con taglia minima di almeno 4 GB sulla
quale va copiata l’immagine ISO scaricata. Come detto anche sopra, in
GNU/Linux si può usare il comando dd. Dopo aver inserito la
chiavetta nel PC ove è disponibile l’immagine, verificare con il comando
lsscsi quale dispositivo è stato assegnato alla chiavetta.
Nell’esempio usiamo /dev/sdX dove X può essere una delle lettere
a, b, c ecc.
Nell’ipotesi che la ISO scaricata si per architettura amd64, come root,
dare il comando
Per immagini viene mostrata di seguito la procedura di installazione del
primo client. Si è scelto l’installer da console (Debian Installer). In
alternativa si può optare per l’installer grafico (Graphical Debian
Installer).
Nota
Se si vuole utilizzare FUSS in modalità LIVE, si scelga la
prima opzione. Le credenziali dell’utente di default sono user -
live.
Scelta di lingua e tastiera.
Inserire il nome del host.
Il dominio interno nel quale si colloca il host, come definito durante
l’installazione del server.
Impostazione della password di root.
Creazione di un utente locale.
Partizionamento dei dischi. Si scelga il partizionamento manuale
impostando una partizione di swap ed una per la radice (/ o root) del
filesystem.
Al termine scrivere le modifiche sul disco.
Inizia l’installazione del sistema.
L’installer cerca i pacchetti nel CD-ROM di installazione che non
esiste. Semplicemente ignorare l’errore e proseguire premendo
Continua.
Scegliere un mirror di rete.
Impostare il proxy a http://proxy:8080 dove proxy risponde al
FUSS Server.
Installare il boot loader GRUB nel master boot record del disco sul
quale si sta installando il sistema.
Dopo il riavvio si acceda come root. La password preimpostata è fuss
e si consiglia di cambiarla con il comando passwd.
È necessario configurare i repository FUSS. Abilitare pertanto sia i
repository FUSS che bookworm-backports in /etc/apt/sources.list:
deb [signed-by=/usr/share/keyrings/fuss-keyring.gpg] http://archive.fuss.bz.it/ bookworm main
deb http://httpredir.debian.org/debian bookworm-backports main
La sources.list dovrebbe pertanto risultare ad esempio:
# See https://wiki.debian.org/SourcesList for more information.
deb http://deb.debian.org/debian bookworm main
deb-src http://deb.debian.org/debian bookworm main
deb http://deb.debian.org/debian bookworm-updates main
deb-src http://deb.debian.org/debian bookworm-updates main
deb http://security.debian.org/debian-security/ bookworm-security main
deb-src http://security.debian.org/debian-security/ bookworm-security main
# bookworm-backports
deb http://httpredir.debian.org/debian bookworm-backports main
deb [signed-by=/usr/share/keyrings/fuss-keyring.gpg] http://archive.fuss.bz.it/ bookworm main
Se invece si ha la necessità di scaricare anche i pacchetti non-free si
aggiungano a «main» anche «contrib», «non-free» e «non-free-firmware»:
# See https://wiki.debian.org/SourcesList for more information.debhttp://deb.debian.org/debianbookwormmaincontribnon-free-firmwarenon-freedeb-srchttp://deb.debian.org/debianbookwormmaincontribnon-free-firmwarenon-freedebhttp://deb.debian.org/debianbookworm-updatesmaincontribnon-free-firmwarenon-freedeb-srchttp://deb.debian.org/debianbookworm-updatesmaincontribnon-free-firmwarenon-freedebhttp://security.debian.org/debian-security/bookworm-securitymaincontribnon-free-firmwarenon-freedeb-srchttp://security.debian.org/debian-security/bookworm-securitymaincontribnon-free-firmwarenon-free# bookworm-backportsdebhttp://httpredir.debian.org/debianbookworm-backportsmaincontribnon-free-firmwarenon-freedeb[signed-by=/usr/share/keyrings/fuss-keyring.gpg]http://archive.fuss.bz.it/bookwormmaincontribnon-free
Nota
Se si è dietro un FUSS server, perché sia possibile scaricare
la chiave di firma di APT, occorre prima definire exporthttp_proxy=http://proxy:8080 ed exporthttps_proxy=http://proxy:8080
Installare, se non già presente, il pacchetto wget:
apt updateapt install wget
Aggiungere la chiave di firma del repository archive.fuss.bz.it e
aggiornare con apt i pacchetti.
All’occorrenza aggiungere i pacchetti Debian necessari a seconda del
contesto in cui viene installato il FUSS Client.
Creazione di un’immagine del client con Clonezilla
Al fine di velocizzare l’installazione del FUSS Client sui PC/notebook
rimanenti, si consiglia di creare con Clonezilla un’immagine del primo
FUSS Client. Il FUSS Server monta un’istanza di Clonezilla, eseguibile
da qualsiasi macchina presente nella LAN via PXE Boot (network boot).
Pertanto, riavviando il FUSS CLient appena creato e scegliendo l’opzione
di boot «PXE Boot», verrà caricato Clonezilla dal server e sarà
possibile creare un’immagine del primo client che verrà salvata nella
cartella /var/clonezilla sul server. Clonezilla chiederà la password
dell’utente clonezilla, che è memorizzata sul server nel file
/root/clonezilla_cred.txt.
Al termine della procedura di salvataggio del clone sul server, sarà
possibile installare agevolmente nuovi client lanciando parimenti
Clonezilla via network boot e scegliendo di fare il restore di
un’immagine.
Ad ogni client va attribuito un nome di host diverso. E` necessario
intervenire, pertanto, sui file /etc/hostname ed /etc/host
riavviando al termine il client.
Infine va effettuato il join del client al server lanciando da terminale
il comando fuss-client come segue:
fuss-client -a
Come unica interazione viene chiesto, qualora configurato, a quale
cluster associare il host (es: aula-01, aula-insegnanti, ecc.).
Inoltre va inserita per tre volte la password di root del server.
Nella cartella /srv/clonezilla (normalmente cartella standard di
clonezilla) o su altra cartella sul server FUSS che contiene le immagini
da clonare, si trova il file computerList.txt in cui bisogna
elencare i nomi che si vogliono assegnare ai computer specificando
il mac-address e l’immagine di clonezilla che si vuole
installare sul computer.
Sono possibili le seguenti opzioni (e parametri, ove richiesti):
join Seguito dal parametro CLUSTER, permette di agganciare il computer al dominio e di includerlo nel gruppo CLUSTER.
wifi Consente di configurare i client per permettergli di contattare automaticamente il server attraverso la WLAN. I parametri wifi-ssid e wifi-pass vengono letti nel file /srv/clonezilla/clientScripts/wireless_conf, se esiste e i parametri non sono vuoti, altrimenti ci viene chiesto di inserirli interattivamente. Esempio di file wireless_conf:
wifissid:FUSS_LANwifipass:MYSUPERSECRETPASSWORD
standalone Alternativo a join, permette di installare la macchina standalone.
light Nel caso si parta da un’immagine clonezilla light permette di installare la macchina (joinata o standalone) senza i pacchetti fuss-kids, fuss-children e fuss-education.
locale Seguito dal parametro LOCALE, permette di modificare la lingua di sistema (default it_IT.UTF-8). L’elenco dei possibili locale si può trovare nel file /srv/clonezilla/clientScripts/locale.txt
keyboard Seguito dal parametro KBD, permette di modificare il layout della tastiera (default it). L’elenco dei possibili layout si può trovare nel file /srv/clonezilla/clientScripts/keyboard_layout.txt
Si noti che l’ordine non ha importanza, purchè si rispettino la sintassi e la corrispondenza tra opzione e parametro.
La creazione del file /srv/clonezilla/computerList.txt può essere
effettuata anche automaticamente lanciando lo script:
fuss-fuccoctolistNOME-IMMAGINE-CLONEZILLA
Viene creato il file computerList.txt.octo-new che può essere
copiato al posto di /srv/clonezilla/computerList.txt. Verificare che
la lista contenga tutti i pc che si intende aggiornare.
In questo modo, se si reinstalla in modalità automatica, ai client
vengono assegnati gli stessi hostname e cluster di prima.
Nota
Le opzioni standalone, light, locale, keyboard, wifi dovranno
eventualmente essere aggiunte a mano.
Una volta eseguito quanto sopra indicato si avviino in networkboot(PXE) i PC da installare (in genere si preme il tasto F12 ma
potrebbe variare a seconda del computer).
Il menu presenta due possibili scelte, automatica o manuale ,
come indicato nello screenshot seguente. La modalità automatica è il
default ma richiede ovviamente che il file computerList.txt sia
compilato correttamente.
In modalità automatica non occorre praticamente fare nulla, l’immagine
viene copiata, il client viene rinominato e joinato o meno alla rete ed
eseguite le altre opzioni come indicato in computerList.txt. Nel caso la
computerList contenga errori o incongruenze ci verranno poste delle
domande in modo interattivo.
Sempre in modalità automatica, se il mac-address non compare
nella computerList ci verrà chiesto di inserire le varie opzioni interattivamente
anche attraverso finestre di scelta che possono semplificare parecchio il lavoro.
In caso qualcosa non vada a buon fine, si può optare per
l’installazione manuale. In tal caso il client carica clonezilla, ma per
il resto si installa il client quasi come se si usasse una chiavetta, la
partizione contenente le immagini viene montata previa autenticazione
con password (si scelga skip al momento di scegliere la sorgente).
Clonata l’immagine bisognerà lanciare:
fuss-client-H<hostname>
per rinominare il client ed agganciarlo al server.
Configurazione del cambio automatico della password di root
FUCC è in grado di modificare automaticamente la password di root dei
client clonati con una criptata che gli viene passata. Per
configurare il cambiopassword eseguire sul server lo script:
fuss-fuccrootpw
ed inserire due volte la password di root da dare ai client. Di norma
questo script dev’essere ovviamente eseguito prima di iniziare a
clonare le macchine.
Accesso all’interfaccia di amministrazione OctoNet
Aprendo il browser da un qualsiasi PC/notebook della LAN all’indirizzo
http://proxy:13402, è possibile accedere all’interfaccia OctoNet di
configurazione della rete didattica e da questa, tra le altre funzioni, si
possono creare le utenze della rete didattica. L’amministratore è l’utente
root e la password è la Master Password impostata durante l’esecuzione di
fuss-server.
Questa modalità però comporta che tutto il traffico passi in chiaro, pertanto
è fortemente sconsigliata, si utilizzi un tunnel SSH come illustrato nel
paragrafo dedicato all’uso di OctoNet, che non espone al rischio di
intercettazione delle credenziali di accesso.
La configurazione della rete WiFi deve essere effettuata una volta che
si sia correttamente installato il Fuss Server (secondo le istruzioni
di Installazione di FUSS server tradizionale). In particolare si suppone che
siano già correttamente configurate le interfacce di rete per la rete
interna (quella rivolta verso le macchine dell’aula) ed esterna (quella
da cui si accede ad internet).
Per poter utilizzare il WiFi è necessario disporre di una
terza interfaccia di rete sulla quale sia già assegnato un IP statico da
destinare al server.
Questa interfaccia sarà quella che dovrà essere collegata fisicamente al
tratto di rete (fisicamente separato dalla rete interna
del server) al quale afferiranno gli Access Point (ad esempio vi si
potrà attaccare un access point senza autenticazione). Negli esempi
successivi assumeremo che si tratti di ens20.
Per installare il necessario a gestire la rete Wi-Fi con la nuova
infrastruttura occorre eseguire il comando:
fuss-servercp
che provvederà a richiedere, qualora non siano già definiti, i dati
necessari alla configurazione. Come per gli altri questi vengono
mantenuti nel file /etc/fuss-server/fuss-server.yaml In particolare
saranno richiesti:
interfaccia di rete su cui attestare la rete WiFi (nell”
esempio ens20)
indicazione della rete IP e relativa maschera (ad esempio
10.10.0.0/22)
Un esempio di sessione di installazione è il seguente:
root@fuss-server-iso:~# fuss-server cp
################################################################################
Please insert Hot Spot Interface
The Hotspot interface of the server, ex. 'eth3'
Your choice? ens20
################################################################################
Please insert Hot Spot Network (CIDR)
The Hotspot network of the server, ex. '10.1.0.0/24'
Your choice? 10.10.0.0/22
...
Il server FUSS, una volta ultimata la configurazione, esporrà la porta
1812 per l’autenticazione RADIUS da parte del controller / degli
access point e permetterà (ma registrerà) il traffico verso la WAN.
Solo le porte 80 e 443 sono permesse.
Avvertimento
Se si sta aggiornando un’infrastruttura esistente, si tenga presente
che, una volta operativo, il traffico verso internet sarà sempre
consentito. Valutare pertanto di scollegare gli Access Point
o impostare preventivamente una password alla rete WiFi per
evitare accessi imprevisti prima che WPA Enterprise sia operativo.
Nota
l’installazione della rete WiFi crea il gruppo wifi (si
vedano a tal proposito i due file /etc/group ed
/etc/octofuss/octofuss.conf). Di default gli utenti di una rete
scolastica non appartengono al gruppo wifi e pertanto non hanno
l’autorizzazione per accedere al captive portal; devono essere
esplicitamente autorizzati in OctoNet.
Abilitazione di un IP ad eseguire query verso FreeRadius
La policy di default configurata da FUSS Server prevede di rigettare
tutte le query che pervengono a FreeRadius.
Si rende pertanto necessario inserire il controller ed altri eventuali
dispositivi che dovranno contattare FreeRadius nel file
/etc/freeradius/3.0/clients.conf:
Come prima cosa è necessario collegarsi via browser all’interfaccia
web di management del controller ed eseguire l’accesso.
Selezionare quindi «Configurazione» > «Reti».
I parametri da modificare sono i medesimi sia se si crea una nuova
rete sia se se ne modifica una esistente.
Una volta aperta la procedura di creazione/modifica della rete WiFi,
selezionare «Mostra opzioni avanzate» in basso a sinistra.
Giungere allo step 3 (Sicurezza).
Una volta selezionato «Enterprise» come «Livello di sicurezza» e
«WPA2-Enterprise» come «Gestione chiavi», la voce
«Server di autentic. 1» diventa configurabile.
Crearne uno nuovo (o selezionare quello già creato se più reti WiFi
sono presenti) come in figura.
La configurazione della rete risulterà quindi come di seguito:
È possibile salvare la configurazione della rete e constatare
che questa funzioni correttamente in modalità WPA2-Enterprise.
Postazioni prive di collegamento cablato alla LAN FUSS
In un’ottica di costante miglioramento dal punto di vista tecnologico e
dell’esperienza utente, a partire dal FUSS Server 12 la rete WiFi non
viene più gestita tramite Captive Portal. Il server espone la porta del
servizio FreeRadius e demanda agli AccessPoint, attraverso il protocollo
WPA Enterprise, l’autenticazione degli utenti.
Questo aggiornamento complica ulteriormente la gestione ibrida fatta fino
ad ora dei portatili condivisi e collegati tramite WiFi, utilizzati
con l’utenza Guest. Da questo il cambio di paradigma nella gestione dei
portatili discussa nel presente documento.
Nota
Apparato condiviso: dispositivo utilizzato esclusivamente nella
sede scolastica, condiviso da più utenti e senza una connessione
cablata alla LAN.
Ad esempio: PC portatile utilizzato come PC d’aula.
Attraverso il multi-SSID e l’utilizzo delle VLAN, gli apparati
condivisi privi di connessione cablata vengono equiparati a
quelli che invece ne sono dotati. La LAN viene trasportata
sull’infrastruttura WiFi e consegnata sull’apparato condiviso.
Divenendo, di fatto, come qualsiasi altro PC presente nella
rete, una volta configurato il suo funzionamento al di fuori
della portata della rete WiFi sarà impossibile.
L’esperienza utente sarà del tutto equiparata ai PC fissi,
permettendo di accedere ai file memorizzati nella home,
le cartelle condivise, ecc.
Interconnessione della LAN all’infrastruttura WiFi
Si rende necessario far sì che gli AccessPoint dispongano di
un collegamento verso la rete LAN perché venga trasmessa
attraverso un SSID dedicato. La soluzione più rapida è quella
di trasportare la LAN sulla rete del WiFi attraverso una VLAN.
Di seguito sono descritti i due possibili approcci alla
creazione di una seconda VLAN su rete WiFi.
Consiste nel realizzare l’interconnessione con una patch direttamente
tra lo switch LAN e quello WiFi. Richiede che lo switch lato rete WiFi
sia di tipo managed. In questo caso è sufficiente configurare la porta
di prelievo della LAN sullo switch WiFi come “port to VLAN” ovvero
prelievo in untagged e trasporto tagged.
In alternativa, qualora fosse supportato, è possibile usare il
re-mapping della VLAN 1 verso una tagged sulla porta di consegna verso il WiFi.
Pro:
da un punto di vista della topologia di rete, il WiFi è in cascata come qualsiasi altro switch;
evita traffico inutile attraverso le schede di rete e la CPU del server.
Contro:
un reset imprevisto dello switch o lo spostamento della patch su porte diverse
rispetto a quelle configurate causerebbe un collasso delle due reti.
Consegna del bridge su interfacce multiple lato PVE
Consiste nel riconfigurare il virtual bridge dedicato alla LAN per consegnare
su più di una porta, più specificamente sia sulla scheda di rete dedicata
alla LAN sia su una VLAN sulla scheda di rete del WiFi.
Pro:
realizzabile anche con soli switch unmanaged;
resiliente ad eventuali modifiche fisiche.
Contro:
il traffico broadcast e inter-client (LAN trasportata su WiFi verso LAN fisica)
deve attraversare entrambe le schede di rete del server e la CPU.
Collegarsi al controller Aruba Instant On quindi, dal menu laterale,
scegliere “Configurazione” → “Reti”. Premere sul pulsante di aggiunta “+”.
Al primo passo, inserire il nome della rete e lasciare le altre
impostazioni come predefinite.
Al secondo passo, selezionare “Statica” come “Assegnazione VLAN client”
ed inserire l’ID VLAN scelto in precedenza.
Al terzo passo, impostare la passphrase per l’accesso tramite “WPA2-Personal”.
Terminare l’ultimo passo confermando le impostazioni predefinite.
Per evitare confusione da parte degli utenti, è possibile modificare la rete appena creata,
selezionare “Mostra opzioni avanzate in basso a sinistra” e, sotto “Varie”,
selezionare “Nascondi” per SSID per rendere la rete nascosta.
È consigliabile eseguire la prima configurazione del client utilizzando la rete cablata.
Può essere eseguito il provisioning classico utilizzando FUSS FUCC.
Una volta effettuato il join del client alla rete sarà sufficiente eseguire
fuss-client passando come argomenti l’SSID della rete WiFi estensione della LAN e la password.
Verrà automaticamente riattivato Network Manager ed impostata la connessione alla rete all’avvio.:
Una volta completata l’installazione di base della macchina si deve avere cura
di configurare correttamente la rete, identificando le interfacce di rete
interna (quella rivolta verso le macchine dell’aula) ed esterna (quella da cui
si accede ad internet). Si deve anche impostare l’hostname ed il nome e
dominio della macchina su cui si lavora.
Avvertimento
Impostare l’hostname della macchina al suo valore finale prima di eseguire
procedura di configurazione è importante, cambiare l’impostazione in
seguito è problematico. In genere lo si fa in fase di installazione del
sistema operativo, ma qualora questo non fosse quello voluto la correzione
deve essere applicata prima di lanciare il comando
fuss-server. L’hostname della macchina infatti viene usato nel playbook
di configurazione per la creazione di vari file che poi vengono
referenziati, cambiarlo successivamente può non avere impatto immediato nel
funzionamento del server, ma può averlo nella successiva esecuzione (ad
esempio per aggiornamento) di fuss-server.
Per eseguire la creazione della configurazione è necessario eseguire il
comando:
# fuss-server create
questo, se non è già stata eseguita in precedenza una configurazione,
chiederà una serie di dati. In particolari saranno richiesti:
la rete locale che verrà utilizzata (es. 192.168.1.0/24);
il nome a dominio della rete (es. scuola.bzn);
il workgroup per il dominio windows (es. SCUOLA);
un intervallo di indirizzi per il DHCP (es. 192.168.1.10 192.168.1.100);
la master password del server (usarne una lunga e complicata!);
la località (es. Bolzano);
l’interfaccia della rete esterna (es. ens18);
l’interfaccia della rete interna (es. ens19);
Il programma per la richiesta dei dati userà l’interfaccia testuale nel
terminale.
Alla fine dell’inserimento verrà eseguito un controllo di correttezza
dei dati inseriti; in caso di problemi verrà riaperta una nuova finestra
di immissione con i soli dati problematici, fino a quando non si ottiene
una configurazione completamente valida.
Infine il programma procederà automaticamente alla configurazione di
tutto quanto necessario, compresa l’eventuale installazione di
dipendenze.
Qualora non si voglia che questo avvenga, ad esempio perché si vogliono
modificare da subito i parametri di default con cui avviene l’installazione,
si può eseguire al posto di fuss-servercreate il comando fuss-serverconfigure che esegue solo la richiesta delle precedenti informazioni e
genera il corrispondente file di configurazione
/etc/fuss-server/fuss-server.yaml; è in questo file che poi dovranno
essere ridefinite (rispetto ai valori contenuti in
/etc/fuss-server/fuss-server-default.yaml) le variabili di controllo che
si vogliono modificare. Una volta fatte le modifiche si potrà passare alla
configurazione lanciando allora fuss-servercreate.
Nel caso in cui il programma si interrompesse a causa di problemi
temporanei (ad esempio una caduta della connessione ad internet) è
possibile rilanciarlo con: fuss-servercreate; ovviamente non verrà
richiesta la configurazione, ma il programma procederà automaticamente
con la sua fase automatica.
L’accesso al server è consentito, oltre che dalla console, via SSH,
anche per l’utente root, con autenticazione a chiavi. Le chiavi devono
essere installate nel file /root/.ssh/authorized_keys.
Gli utenti normali possono accedere al server in SSH con username e
password con un loro utente solo se fanno parte del gruppo
sshaccess. Il gruppo viene creato come gruppo locale sul server
all’esecuzione di fuss-server ed SSH è configurato per l’accesso in
/etc/ssh/sshd_config con la riga:
AllowGroupsrootsshaccess
che consente l’accesso a root ed ai membri del gruppo.
Questa impostazione viene effettuata dal comando fuss-server con
usando una direttiva blockinfile di ansible, le eventuali modifiche
effettuate all’interno del blocco verranno sovrascritte ad una
successiva invocazione del comando. L’uso della direttiva
AllowGroups è incompatibile con l’uso di AllowUsers che pertanto
non deve essere usata.
Per fornire l’accesso SSH agli utenti sarà sufficiente aggiungerli al
gruppo locale sshaccess con il comando: adduserutentesshaccess.
Nota
se l’utente localadmin non riesce a entrare in SSH sul server
controllate che appartenga al gruppo sshaccess
Sotto /etc/fuss-server sono installati una serie di file che mantengono
dati di configurazione usati dai servizi del server, dettagliati nei
paragrafi seguenti, gestiti tramite octofuss. Ovviamente non devono
essere cancellati, pena il malfunzionamento dei servizi cui fanno
riferimento.
Nel file /etc/fuss-server/fuss-server.yaml si trova la
configurazione generale del Fuss Server. Il formato è un file di
variabili di ansible
ovvero un semplice dizionario chiave - valore in yaml, ad esempio:
chiave:valorealtra_chiave:nuovovalore
Deve contenere i valori predefiniti descritti in
Configurazione del server; contrariamente agli altri file può
essere cancellato, e in quel caso viene ricreato a partire da un esempio
vuoto.
Per modificare le impostazioni in tale file, si può anche lanciare:
# fuss-server configure -r
(l’opzione -r è necessaria, perché se le impostazioni sono presenti il
programma non le richiede).
Per applicare le modifiche lanciare:
# fuss-server upgrade
che farà la verifica di coerenza dei valori presenti nel file e li
applicherà al sistema.
Dato che il file può venire riscritto dal comando fuss-server, è
opportuno non usarlo per configurazioni aggiuntive, per le quali è
invece presente il file descritto nella sezione successiva.
Sotto /etc/fuss-server/ viene installato anche secondo file,
fuss-server-defaults.yaml, sempre in formato yaml, nel quale si
possono impostare altre variabili per personalizzare l’installazione.
Questo file può essere vuoto (la versione di default installata dal
pacchetto contiene solo commenti), ma non deve essere cancellato,
altrimenti fuss-server darà errore non trovandolo.
La tabella seguente descrive le variabili che possono essere definite in
questo file per controllare alcune caratteristiche assunte
dall’installazione.
Variabile
Significato
Contenuto
Default
dans_maxchild
Numero massimo di processi figli di e2guardian.
Intero
600
proxy_win_exclude
Configura Squid per escludere i client Windows.
Booleano
yes
dans_exclude_localnet
Esclude la rete locale dal filtraggio di e2guardian.
Booleano
yes
dhcp_default_lease_time
Durata di default di una lease dhcp.
Intero
86400
dhcp_max_lease_time
Durata massima di una lease dhcp.
Intero
172800
squid_filedescriptors
Massimo numero di filedescriptor per squid
Intero
10240
e2guardian_install
Se installare o meno e2guardian
Booleano
yes
e2_nofile
Limite di file aperti per e2guardian
Intero
8192
e2_workers
Limite di httpworker per e2guardian
Intero
1024
samba_logon_path
Valore di logonpath di samba
Stringa
(vuoto)
samba_logon_home
Valore di logonhome di samba
Stringa
(vuoto)
samba_logon_drive
Valore di logondrive di samba
Stringa
(vuoto)
samba_logon_script
Valore di logonscript di samba
Stringa
(vuoto)
squid_require_internet_group
Se appartenere al gruppo internet è richiesto per navigare
Booleano
yes
É possibile modificare questi valori di default, in modo che la relativa
configurazione non venga cambiata in caso di aggiornamento del fuss-server, ad
esempio se si vuole riabilitare l’accesso ad internet da parte di macchine
Windows si può cambiare il valore di proxy_win_exclude da yes a
no, o se si vuole riabilitare il filtro dei contenuti sulla rete locale
(non necessario nelle scuole del progetto per la presenza di un filtraggio a
monte) si può modificare dans_exclude_localnet da yes a no.
Tutte le volte che si effettua una modifica di una di queste variabili, perché
la relativa configurazione venga applicata, occorrerà eseguire fuss-serverupgrade. Dato che fuss-server-defaults.yaml è marcato come file di
configurazione, non verrà sovrascritto in caso di aggiornamento del
pacchetto e le modifiche fatte verranno mantenute.
Il file /etc/dhcp/dhcp-reservations contiene le assegnazioni
statiche degli indirizzi per il client , che viene incluso nella
configurazione ed installato vuoto in fase di creazione del fuss-server.
Il contenuto di questo file viene gestito tramite octofuss ed usa il
formato previsto da dhcp.conf per le «_reservation_», vale a dire una
serie di voci nella forma:
usando un IP fuori dal range del DHCP (che di default prende gli
indirizzi fra 1/4 e 3/4 della rete usata per la LAN). Se il file
/etc/dhcp/dhcp-reservations viene eliminato, il servizio non
viene avviato.
I file di configurazione per il firewall sono tutti nel formato:
valore:descrizione
con l’eccezione di quello che descrive macchine interne consentite e
servizi esterni raggiungibili, che è nella forma:
host:servizio:descrizione
Le righe che iniziano con un # sono considerate commenti e vengono
ignorate, inoltre quanto non compare all’interno del blocco marcato
ANSIBLEMANAGEDBLOCK non viene sovrascritto dalla riesecuzione del
comando di installazione del fuss-server.
Se si specifica un host questo deve essere o un nome a dominio o un
indirizzo IP, si tenga conto però del fatto che il firewall effettua la
risoluzione dell’indirizzo IP al suo avvio, pertanto usare un nome a
dominio è rischioso, specie quando ad esso possono corrispondere a
diversi indirizzi (ad esempio www.google.com) perché il firewall farà
riferimento soltanto a quello risolto in fase di avvio.
Quando si specifica un servizio invece questo deve essere nella forma
porta/protocollo (ad esempio 123/udp o 2628/tcp). Si raccomanda di usare
le minuscole ed i valori numerici.
La descrizione può essere omessa, verrà comunque inserita una
descrizione standard.
I file utilizzati sono i seguenti; vengono abilitati su firewall nella
sequenza in cui sono indicati nella tabella (questo significa che un
host nel primo file non potrà raggiungere comunque nessun servizio
esterno, neanche quelli resi accessibili con gli altri file):
File
Contenuto
Formato
/etc/fuss-server/firewall-denied-lan-hosts
Host che non possono raggiungere alcun servizio sulla rete
internet
IP-address
/etc/fuss-server/firewall-allowed-lan-hosts
Elenco di host che possono accedere ai servizi della rete internet
senza alcun filtro e/o limitazione
IP-address
/etc/fuss-server/firewall-allowed-wan-hosts
Elenco di host sulla rete internet che possono essere acceduti senza
alcun filtro e/o limitazione
IP-address
/etc/fuss-server/firewall-allowed-wan-services
Servizi sulla rete internet che possono essere raggiunti senza
limitazioni e/o controllo. Devono essere indicate le porte da
utilizzare per il servizio
Servizi sulla rete internet raggiungibili da specifici host della
rete interna senza alcun limite.
IP-address:porta/protocollo
/etc/fuss-server/firewall-custom-rules
Regole iptables custom.
iptables <options>
Si ricordi che dopo aver eseguito modifiche manuali sui suddetti file
occorre rilanciare il firewall perché esse diventino effettive, con:
/etc/init.d/firewallrestart
Nel caso si sia installato anche il Captive Portal il firewall usa
l’ulteriore file /etc/fuss-server/fuss-captive-portal.conf, per ottenere
la rete usata dallo stesso e abilitare gli accessi necessari. Detto file
non deve essere cancellato, pena la mancanza dei suddetti accessi ed il
conseguente non funzionamento del Captive Portal in caso di riavvio del
firewall.
Il file /etc/squid3/squid-added-repo.conf permette di aggiungere
siti web all’acl repositories ai quali l’accesso è sempre permesso
senza autenticazione.
I contenuti devono essere della forma:
aclrepositoriesurl_regexXXX
dove XXX è l’espressione regolare che rappresenta il sito che
vogliamo abilitare; esempi di sintassi sono presenti in squid.conf,
come:
Nel file /etc/fuss-server/content-filter-allowed-sites viene mantenuta una
lista dei siti cui viene comunque garantito accesso da e2guardian (successore
di Dansguardian). Questa lista può essere gestita anche dall’interfaccia web
di OctoNet dal menu Filtro web, che consente anche di configurare altri
file di configurazione sotto /etc/e2guardian/lists/.
Attenzione
il filtro contenuti richiede risorse significative sul server; nelle
scuole in cui è già presente una protezione a monte può convenire
escludere gli IP della rete locale dal filtraggio aggiungendo a tali
file i range dei PC da escludere o i singoli IP se tali PC hanno IP
statico.
Dalla versione 8.0 il funzionamento di fuss-server create è stato
cambiato ed è ora possibile lanciare più volte fuss-server create: le
modifiche già applicate rimangono costanti.
Gli aggiornamenti di sistema possono essere eseguiti manualmente con la
modalità ordinaria di Debian, vale a dire collegandosi al server come root ed
eseguendo i comandi:
# apt update# apt upgrade
rispondendo positivamente alla richiesta di installazione dei pacchetti
aggiornati.
fuss-serverupgrade ripristina i contenuti di molti file di
configurazione ai valori desiderati per il fuss-server.
Per alcuni servizi per i quali è più comune dover mantenere delle
modifiche locali sono presenti dei file apposta, inclusi dal file
generale e non toccati da fuss-server, ma questo non è vero in ogni
caso.
Tuttavia, quando un file di configurazione viene modificato ne viene
salvata una copia di backup nel formato <nomedelfile>.<unnumero>.YYYY-MM-DD@HH:MM:SS~; da questo file si possono recuperare
eventuali personalizzazioni da ripristinare.
Per trovare i file modificati subito dopo il lancio di fuss-server si
può usare il comando:
# find /etc -mmin -10
che trova tutti i file modificati negli ultimi 10 minuti.
Per trovare tutti i file di backup generati da fuss-serverupdate
nel 2020 si può invece usare:
# find /etc/ -name "*.*.2020-*@*~"
o, per essere più precisi e trovare ad esempio le modifiche di giugno
2020:
# find /etc/ -name "*.*.2020-06*@*~"
Avvertimento
Copiare semplicemente il vecchio file di configurazione su quello
nuovo è una pratica sconsigliata: generalmente gli aggiornamenti
introducono modifiche di tali file al fine di migliorare il
funzionamento del fuss-server o risolvere bug, e annullare tali
modifiche annulla tale vantaggio.
Piuttosto è opportuno verificare le modifiche tra le due versioni del
file, ad esempio con:
# diff <nome file> <nome file backup>
e riapplicare solo quanto effettivamente necessario per
l’installazione locale.
Il pacchetto fuss-backup installa un nuovo programma di backup basato su
borg che fornisce al contempo anche le
funzionalità di dump dei database (LDAP, eventuali MySQL e Postgres)
installati sul server. Per questi ultimi viene creato un dump sotto
/var/backups (rispettivamente nelle sottodirectory slapd, mysql,
pgsql) in cui vengono mantenute gli ultimi sette dump testuali per un
accesso immediato. La directory /var/backups è inserita di default nel
backup su disco esterno o NAS.
Per la pianificazione del backup viene installato dal pacchetto il file di
CRON /etc/cron.d/fuss-backup in cui è programmata l’esecuzione dello
script di backup ogni lunedì alle 13:15. Il backup può essere eseguito
manualmente (invocando il comando fuss-backup) in qualunque momento.
Il dispositivo esterno viene montato prima dell’esecuzione del backup e
smontato al suo completamento. Questo consente, in caso di dischi esterni, una
rimozione ed eventuale rotazione.
Per il funzionamento del backup è richiesta la presenza di una configurazione
valida in /etc/fuss-backup/fuss-backup.conf. In particolare deve essere
impostata la variabile START=yes e indicato nella variabile DISK il
dispositivo su cui viene eseguito lo stesso (maggiori dettagli in seguito).
Avvertimento
l’installazione del pacchetto installa un file di configurazione
che blocca l’esecuzione del backup (START=no e DISK
vuota), occorre pertanto effettuare la configurazione manualmente
in quanto non è noto a priori il nome del dispositivo esterno su
cui si fanno i backup.
La tabella seguente riporta le variabili presenti nel file di configurazione
ed il relativo significato. Nel file sono state commentate con ulteriori
dettagli.
Variabile
Significato
Default
START
se diversa da yes il backup non viene eseguito
no
DISK
il dispositivo su cui viene effettuato il backup
vuoto
PATHS
le directory di cui viene eseguito il backup (stringa separata da
spazi)
Per configurare ed attivare il backup modificando
/etc/fuss-backup/fuss-backup.conf sono pertanto sono indispensabili i
seguenti passi:
definire START=yes
definire un valore opportuno per DISK, se ad esempio si dispone di un
disco esterno se ne dovrà indicare il nome di dispositivo, ad esempio:
DISK=/dev/sdc1
se si dispone di un NAS occorrerà indicare l’indirizzo IP a cui è
raggiungibile e la directory che questo esporta in NFS con la sintassi
IP.DEL.NAS.LOCALE:/directory/esportata/dalnas, ad esempio nel caso del
NAS-QNAPTVS653 usato per le prove si avrà:
DISK="192.168.10.5:/share/CACHEDEV1_DATA/Public"
Per trovare la directory esportata sul NAS-QNAPTVS653 ci si può collegare allo
stesso con SSH ed esaminare il contenuto del file /etc/exports, il cui
contenuto riflette le directory definite nella sezione «Shared folders» del
pannello di controllo accessibile via WEB (nel caso illustrato quella
disponibile era Public).
Il formato del file /etc/exports prevede una directory esportata per
riga (se ne dovrà scegliere una qualora ne esistano diverse), con campi
separati da spazi; il primo campo è la directory da usare nella
variabile DISK (nel caso in esempio appunto
/share/CACHEDEV1_DATA/Public).
Come ulteriore configurazione si possono elencare le directory del server di
cui si vuole il backup modificando la variabile PATHS, da specificare nella
forma di un elenco separato da spazi, ad esempio:
È opportuno anche configurare un indirizzo di posta cui verranno inviate le
email con le notifiche del backup, sia predisponendo un opportuno alias per
l’utente root che indicando una lista di destinatari (sempre separata da
spazi) nella variabile MAILTO, ad esempio:
MAILTO="root localsysadmin@fuss.bz.it"
Infine qualora si voglia mantenere uno storico più consistente si può
aumentare il valore della variabile RETENTION che indica il numero minimo
di backup mantenuti (nel numero massimo di uno a giorno, nel caso in cui in
uno stesso giorno vengano eseguiti più backup verrà mantenuto solo il più
recente). Si tenga presente che borg supporta la deduplicazione, e che non
esiste il concetto di backup incrementale, ogni backup è sempre completo.
I file che corrispondono al file di esclusione fuss-backup.exclude
(installato di default per escludere MPT, AVI e immagini ISO) non vengono
inclusi nel backup. Se il file è assente il backup viene eseguito senza
escludere nulla.
Nella forma più elementare il formato del file di esclusione prevede un
pattern di shell (ex. *.iso) per riga, i file il cui pathname corrisponde
al pattern vengono esclusi. Per maggiori dettagli (ed esempi di pattern più
complessi con uso di espressioni regolari) si rimanda alla documentazione
ottenibile con il comando borghelppatterns.
Il default installato dal pacchetto prevede che vengano esclusi dai backup
alcune tipi di file (identificati per estensione, in particolare *.iso,
*.mp3 e *.avi, e tutte le directory .cache che contenendo una
grande quantità di file possono rendere molto lenta l’esecuzione del backup.
In caso di necessità il programma può essere interrotto, quanto salvato da
borgbackup fino all’ultimo checkpoint (di default sono ogni mezz’ora) non
verrà perso.
Il ripristino può essere effettuato manualmente montando il disco (o la
directory condivisa via NFS sul NAS) che contiene il repository dei backup, ed
usando il comando borg per recuperare direttamente i file da uno dei
salvataggi. Si legga la documentazione dei comandi borglist (per elencare
i backup disponibili) e borgextract (per estrarre i dati) con i relativi
esempi qualora si voglia usare questa strada.
Per semplificare le operazioni il comando fuss-backup può essere
utilizzato in forma interattiva con i comandi fuss-backupmount e
fuss-backupumount per montare e smontare i dati del backup in modo che
possano essere acceduti direttamente attraverso il filesystem.
Con fuss-backupmount viene montato il disco (o la directory NFS)
contenente il repository dei dati secondo quando configurato nella variabile
BASEDIR (il default è /mnt/backup) e poi viene reso disponibile via
FUSE il contenuto dei backup nella directory configurata dalla variabile
RECOVERDIR (il default è /mnt/recover).
In questo modo si può accedere direttamente ai file presenti nel backup resi
disponibili attraverso altrettante directory presenti sotto /mnt/recover
nella forma fuss-server-DATA-ORA (data e ora fanno riferimento al momento
di esecuzione del backup), ad esempio si potrà avere qualcosa del tipo:
root@fuss-server:~# ls /mnt/recover/ -ltotale0drwxr-xr-x1rootroot0gen2509:48fuss-server-2017-01-20T17:39:56drwxr-xr-x1rootroot0gen2509:48fuss-server-2017-01-25T09:40:51
per cui se si vogliono recuperare i file del backup del 20 Gennaio si dovranno
cercare i file sotto fuss-server-2017-01-20T17:39:56 mentre per quelli del
25 si dovrà cercare sotto fuss-server-2017-01-25T09:40:51.
Al di sotto di ciascuna directory apparirà poi l’albero delle directory
che si sono coperte con il backup secondo il valore della variabile
PATHS. L’albero delle directory viene riportato a partire dalla
radice per cui nel caso dei valori di default di PATHS illustrato in
precedenza, avremo sotto fuss-server-2017-01-25T09:40:51 le
directory etc, home e var. A questo punto si potranno
copiare/esaminare i file dal backup navigando il filesystem sotto
/mnt/recover con un qualunque strumento di gestione dei file.
Una volta completate le operazioni di recupero si deve procedere a smontare le
directory ed i dati, con il comando fuss-serverumount.
Avvertimento
ci si ricordi sempre di eseguire il comando fuss-backupumount, altrimenti l’esecuzione ordinaria dei backup fallirà.
Su un fuss-server configurato è possibile modificare la netmask della
rete interna: innanzitutto si deve cambiare la configurazione della rete
in /etc/network/interfaces o /etc/network/interfaces.d/,
impostando la nuova netmask, e ricaricare le nuove impostazioni ad
esempio riavviando il server.
Suggerimento
La configurazione di rete si può ricaricare anche tramite servicenetworkingrestart o con ifupdown2 (disponibile nei repository
debian ma non preinstallato sul fuss-server).
Quindi si può cambiare la configurazione in
/etc/fuss-server/fuss-server.yaml e lanciare fuss-servercreate
per riapplicare la configurazione di rete ovunque sia necessario.
Nota
Nel caso in cui gli indirizzi destinati al DHCP non siano compresi
nella netmask selezionata, fuss-server provvederà a chiedere un nuovo
range all’inizio della run.
Per cambiare la password di root del fuss-server non è necessaria nessuna
procedura particolare, basta eseguire semplicemente il comando passwd da
root.
Cambio password generale dei servizi (master password)
La situazione è più complessa qualora invece si voglia cambiare la «master
password» che si è usata in fase di creazione del server (quella che viene
mantenuta nella variabile pass del file
/etc/fuss-server/fuss-server.yaml).
In tal caso le operazioni da eseguire sono molte, in quanto essa viene usata
estensivamente nella configurazione di tutti i servizi, pertanto si è fornito
uno script di gestione apposito (mpwchange.sh, installato come gli altri
script in /usr/share/fuss-server/scripts) che consente di effettuarle in
una volta sola.
lo script controlla in /etc/fuss-server/fuss-server.yaml che la vecchia
password corrisponde e poi la cambia per i vari servizi (ed in
/etc/fuss-server/fuss-server.yaml stesso).
Qualora il comando desse un errore, si possono eseguire i singoli passi
manualmente come sotto indicato:
«Preparare» il seguente comando facendo attenzione a riempire
correttamente i seguenti 5 campi contenuti i dati di quella specifica
scuola e la nuova password:
Modificare il seguente file sostituendo la password:
vim/etc/octofuss/octofuss.conf
Riavviare il servizio:
serviceoctofussdrestart
Lanciare il seguente comando seguito dalla nuova password al posto
del campo _________
octofussd--reset-root-password___________
Verrà restituito un output come il seguente:
System check identified some issues:
WARNINGS:
?: (1_7.W001) MIDDLEWARE_CLASSES is not set.
HINT: Django 1.7 changed the global defaults for the MIDDLEWARE_CLASSES. django.contrib.sessions.middleware.SessionMiddleware, django.contrib.auth.middleware.AuthenticationMiddleware, and django.contrib.messages.middleware.MessageMiddleware were removed from the defaults. If your project needs these middleware then you should configure this setting.
Operations to perform:
Apply all migrations: data
Running migrations:
No migrations to apply.
Lanciare il seguente comando (ATTENZIONE: modalità «interattiva» di
kerberos!):
kadmin.local
ATTENZIONE: si entra in una modalità «interattiva» di kerberos e
verrà visualizzata la seguente riga:
kadmin.local:
dopo la quale bisognerà copiare il seguente comando:
cpwroot/admin
Alla fine sul terminale si dovrà visualizzare la seguente riga:
kadmin.local:cpwroot/admin
Premere il tasto INVIO: verrà chiesta 2 volte la nuova password:
* Enter password for principal ``root/admin@APPIANO.BLZ`` : ____________
* Re-enter password for principal ``root/admin@APPIANO.BLZ`` : ____________
a schermo poi si apre il seguente prompt:
kadmin.local:
Uscire da questa modalità interattiva digitando:
exit
Editare il seguente file per sostituire la MASTER-PASSWORD:
Lo script di backup del pacchetto fuss-backup (vedi
Backup con fuss-backup) si occupa di effettuare un dump dei dati
della directory LDAP, vedremo ora quale è la procedura per il suo
ripristino.
I dump del database LDAP vengono salvati da fuss-backup in
/var/backups/slapd ad ogni esecuzione (cancellando quelli più vecchi) in
file compressi con gzip nella forma slapd-$DATA.ldif.gz*, ma si
possono anche generare in qualunque momento con il comando slapcat>backup.ldif.
È preferibile ripristinare i dati del server a partire da un dump generato
con slapcat perché questo contiene tutte le informazioni presenti
nell’LDAP originale (compresi i metadati, quali ad esempio i timestamp delle
varie modifiche). La procedura di ripristino è la seguente:
Potrebbe a questo punto essere un problema di LDAP, o meglio di come è
stato creato/modificato l’utente su LDAP Se windows vi dice che l’utente
è disabilitato, probabilmente il record sambaAcctFlags non è
impostato correttamente. Il flag D indica che l’utente è disabilitato,
un utente normalmente dovrebbe riportare il flag U o al massimo i flag
UX
Per correggere la situazione si usi il comando:
smbldap-usermod-HUnomeutente
o si usi ldapvi
Nel caso in cui gli utenti da migrare siano molti si può creare un file
docenti.txt contenente l’elenco dei nomi utenti dei docenti, uno per
riga, e quindi usare il comando:
for utente in $(cat docenti.txt); do smbldap-usermod -H U $utente; done
Mancata risoluzione di macchine reinstallate con lo stesso nome
Il fuss-server utilizza il DNS dinamico per creare automaticamente delle voci
con i nomi delle macchine all’interno della zona locale della scuola, con la
direttiva ddns-update-stylestandard in /etc/dhcp/dhcpd.conf. Il
meccanismo prevede che ogni volta che un client ottiene un indirizzo dinamico
dal DHCP venga inserita una voce con il suo nome (che viene invitato dal
client stesso, e corrisponde al suo hostname) all’interno della zona locale e
della zona inversa del DNS in modo da potercisi riferire direttamente per
nome.
I dati vengono inseriti nel file /var/cache/bind/db.local che contiene i
dati della zona DNS usata per la rete interna della scuola (quelli della
risoluzione interna in /var/cache/bind/db.192.168.XX.YY che dipende dal
range di indirizzi assegnati), dove compariranno delle voci nella forma:
La voce è composta dall’IP assegnato e da un campo DHCID che è un hash
identificativo del client (in genere hostname e MAC address, ma dipende dal
client stesso) che serve ad evitare che un altra macchina possa tentare di
intrufolarsi nel DNS assumendo lo stesso nome e che due macchine cui si è
assegnato (erroneamente) lo stesso nome si sovrascrivano reciprocamente la
voce sul DNS.
Questi record vengono in genere cancellati automaticamente al rilascio dell’IP
da parte del client, ma può capitare, quando questo non avviene correttamente
(ad esempio perché viene spento senza shutdown), che restino nel file. Di
norma non costituiscono un problema fintanto che non si reinstalla un client
con lo stesso nome, che avrà un DHCID diverso per cui non sarà in grado di
riutilizzare il nome, né di rimuovere la voce.
Una soluzione di emergenza può essere quella di aggiungere a
/etc/dhcp/dhcpd.conf la direttiva update-conflict-detectionno
immediatamente sotto la precedente ddns-update-stylestandard, questo
consente la riscrittura, ma comporta che i controlli di conflitti non ci sono
più, e si potranno ottenere situazioni in cui i problemi, manifestandosi in
forma casuale, sono molto più difficili da diagnosticare e
riconoscere. Pertanto è una soluzione di emergenza da non usare mai per più
dello stretto tempo necessario a risolvere un problema immediato, la soluzione
corretta è quella di rimuovere i record che danno il problema, con la
procedura illustrata di seguito.
Per la rimozione occorre modificare manualmente i file di zona citati in
precedenza (/var/cache/bind/db.local e
/var/cache/bind/db.192.168.XX.00), ma dato che l’assegnazione è dinamica,
il contenuto di questi file non è detto sia aggiornato alla situazione
corrente (i dati temporanei sono mantenuti in forma binaria in corrispondenti
file .jnl), ed inoltre i dati potrebbero ulteriormente aggiornati durante
la modifica, per cui prima di iniziare occorre «congelare» la situazione con
il comando:
rndcfreeze
che salva tutti i dati temporanei e blocca gli aggiornamenti del DNS da parte
del DHCP.
Si potranno a quel punto cercare dentro /var/cache/bind/db.local le voci
dinamiche da rimuovere analoghe a quella illustrata. Si tenga presente che in
alcuni casi queste sono introdotte da una riga del tipo:
$TTL 3600 ; 1 hour
che indica il tempo di vita delle voci elencate di seguito (il valore indicato
può esser diverso a seconda delle impostazioni date al server DHCP). Questo
valore viene impostato, tutte le volte che varia, all’inizio di un blocco di
voci e si applica fino alla successiva reimpostazione, per questo può aiutare
a identificare le voci dinamiche rispetto a quelle statiche impostate in fase
di creazione del file con l’installazione del fuss server, che hanno un valore
di 604800.
Quando si rimuove una voce si abbia cura di toglierlo solo quando risulta
inutilmente replicato. Se si decide di fare una pulizia completa di tutte le
voci dinamiche va tolto evitando che vada ad applicarsi alle restanti voci
statiche. In generale cancellare tutte le voci relative ad assegnazioni
dinamiche non è un problema (verranno ricreate al rinnovo o alla richiesta
successiva) ma la risoluzione dei nomi cancellati ovviamente diventerà
indisponibile fino ad allora. Per questo si consiglia di cancellare solo le
voci che contengono i nomi che danno problemi.
Si faccia inoltre attenzione a non cancellare o modificare invece le voci
«fisse» del file, come i nomi ns, proxy, octofuss ecc. ed in
generale tutti quelli che si sono inseriti manualmente nel file per le
assegnazioni statiche.
Una volta rimosse le voci da /var/cache/bind/db.local si cancellino le
voci corrispondenti con la risoluzione inversa in
/var/cache/bind/db.192.168.XX.00, che nel caso dell’esempio precedente
saranno qualcosa del tipo:
57PTRtest-client.fusslab.blz.
Una volta completate le modifiche occorre aggiornare il seriale dei file di
zona (entrambi), per questo occorre cercare la riga identificata dal commento
;serial nel record SOA che è all’inizio del file, ed aumentare di uno
il valore in essa indicata; se ad esempio 811 era il valore in
/var/cache/bind/db.local precedente alle modifiche, si dovrà indicare al
suo posto 812, con qualcosa del tipo:
Fatto questo si potrà «scongelare» la zona con il comando:
rndcthaw
e l’aggiornamento dinamico riprenderà a funzionare.
Mancata risoluzione di macchine con assegnazione statica
Una delle funzionalità fornite dal fuss-server è quella di consentire delle
assegnazioni statiche (reservation) degli IP in base al MAC address delle
macchine. Queste vengono mantenute nel file
/etc/dhcp/dhcp-reservations e gestite tramite octonet.
Fino alla versione 10.0.13 octofussd si limita a gestire questa
assegnazione statica, le macchine elencate nel file non venivano inserite nel
DNS. Pertanto le macchine elencate ottengono un indirizzo IP (quello
selezionato dalla funzionalità) ma il loro nome resta assente dal DNS.
A partire dalla versione 10.0.14 è stato aggiunto il supporto per
l’inserimento (in fase di creazione) e la cancellazione (in fase di rimozione)
sul DNS delle macchine indicate per l’assegnazione statica. Non è ancora
disponibile il supporto per la modifica dei dati (pertanto in caso di
necessità si cancelli e si ricrei una voce).
Il supporto disponibile a partire dalla versione 10.0.14 riguarda però
soltanto le nuove voci, per quelle già presenti il DNS non viene
aggiornato. Per gestire questo caso (o se si sta mantenendo l’uso una versione
precedente la 10.0.14) le voci devono essere inserite o eliminate a mano.
L’operazione prevede la modifica manuale dei file di zona
(/var/cache/bind/db.local e /var/cache/bind/db.192.168.XX.00) che sono
gestiti in maniera dinamica; per questo (si riveda quanto già detto al
riguardo nella sezione precedente, prima di modificarli occorre «congelare» la
situazione con il comando:
rndcfreeze
a questo punto si potranno aggiungere i dati, in /var/cache/bind/db.local
va messa la risoluzione diretta, usando un TTL adeguato, con qualcosa del
tipo:
$TTL 604800 ; 1 week
static1 A 192.168.0.100
(avendo cura di usare il nome e l’indirizzo che ci sono in
/etc/dhcp/dhcp-reservations) dove la voce del TTL può essere omessa
se la riga viene inserita sotto un blocco di definizione che ha all’inizio la
stessa.
La modifica va fatta anche nella zona inversa (in
/var/cache/bind/db.192.168.XX.00) con qualcosa del tipo:
$TTL 604800 ; 1 week
100 PTR static1.fusslab.blz.
e vale lo stesso avviso relativamente al TTL, fatte le modifiche occorrerà di
nuovo aumentare il seriale (si rimanda a quanto detto nella sezione
precedente) e poi si potrà «scongelare» la zona con il comando:
rndcthaw
a questo punto le risoluzioni saranno disponibili.
A partire dal fuss-server 10.0.24 è disponibile lo script dnsreserv.py
(in /usr/share/fuss-server/scripts) che rilegge il contenuto di
/etc/dhcp/dhcp-reservations ed esegue un DDNS update per tutti i
nomi ivi contenuti, questo consente di evitare l’intervento manuale per
reinserirli, ma la eventuale cancellazione di nomi spuri non viene eseguita e
in tal caso si deve ricorrere alla precedente procedura manuale.
Può accadere che, se il programma viene interrotto in maniera inopportuna, il
repository che mantiene i dati del backup risulti corrotto. In tal caso si
potranno ottenere degli errori (riportati nella mail riassuntiva inviata al
completamento di ogni backup) del tipo:
In questo caso è necessario eseguire una verifica manuale, ed eventualmente
riparare il repository dei dati.
Per farlo è necessario montare il disco remoto su cui si fanno i backup,
questo si può fare (utilizzando i dati contenuti nella configurazione del
fuss-backup) con i comandi:
. /etc/fuss-backup/fuss-backup.conf
mount $DISK $BASEDIR
poi si potrà verificare lo stato del repository, con:
borg check $BASEDIR/$BACKUP_DIR
e se questo riporta degli errori si potranno sistemare con:
borg check --repair $BASEDIR/$BACKUP_DIR
accettando che si possano perdere dei dati (sono dati del backup, si possono
ripristinare facendone uno subito dopo la riparazione). Completata la
riparazione ci si ricordi di smontare il disco remoto con umount$BASEDIR.
Per configurare una macchina come FUSS Client è disponibile il comando
fuss-client, installato col pacchetto omonimo, che cura tutta la
configurazione della macchina, e l’eventuale collegamento della stessa al
Fuss Server, installando il software necessario ed effettuando le relative
configurazioni.
Il comando principale per la configurazione del client è fuss-client-a
che esegue il collegamento ad un Fuss Server rilevato automaticamente nella
rete in cui è stata inserita la macchina.
Se si dispone di una chiavetta con una chiave di autenticazione per il
Fuss Server questa deve essere inserita sulla macchina, e la procedura
sarà completamente automatizzata (per i dettagli vedi Accesso con
chiave al server per fuss-client), altrimenti una volta lanciato il
comando dovrà essere immessa per tre volte la password di root del Fuss
Server per consentire l’importazione delle credenziali necessarie.
Se non vi sono cluster definiti sul Fuss Serverè necessario
definirne preventivamente uno, se ne è definito soltanto uno non verrà
chiesto nient’altro e l’installazione proseguirà direttamente fino alla
fine, ottenendo sul terminale un risultato del tipo:
Se invece sul Fuss Server sono presenti più cluster all’inizio verrà chiesto
di scegliere in quale essere inseriti con una schermata del tipo:
This server has several workstation groups
Please choose the one desired for this machine:
0 - aula1
1 - aula2
Your choice? (enter the server number)
0
...
Il comando fuss-client supporta la installazione ed il collegamento
al server di una macchina con la contestuale impostazione del nome della
stessa. Questo risulta utile quando un pc viene installato utilizzando
una immagine creata con clonezilla, che ha ovviamente impostato
l’hostname del client da cui la si è creata.
Inoltre, il comando fuss-client effettua una normalizzazione dei
nomi delle macchine, infatti in alcuni casi veniva usato come hostname
della macchina l’hostname completo (FQDN) della stessa, cosa che crea
poi problemi nella risoluzione dei nomi ed inseriva gli stessi nel file
/etc/clusters del server. Questo cosa poi aveva portato ad usare
come hostname completo (impostato in /etc/hosts) un nome semplice
senza dominio (cosa che potrebbe causare problemi con eventuali servizi
installati successivamente).
Quando si esegue l’installazione ed il collegamento al server di un client, il
comando che permette l’impostazione contestuale dell’hostname della macchina
usando l’opzione -H nella forma:
fuss-server-a-Hclientname
dove clientname deve essere un nome a dominio alfanumerico che non deve
contenere nessun «.», ed essere indicato solo con lettere minuscole.
In tal caso il client, ottenuto il nome del dominio dal server, effettuerà la
corretta impostazione dei file /etc/hostname, inserendovi semplicemente il
nome indicato con un contenuto come:
clientname
mentre in /etc/hosts verrà inserito il corretto valore per la risoluzione
completa con un contenuto come:
A partire da FUSS Client 10.0.40, la configurazione di Veyon viene fatta
in maniera completamente automatica estraendo i dati sui client da
/etc/clusters sul server FUSS.
Potranno utilizzare Veyonmaster , da qualsiasi postazione di uno
stesso cluster, solo gli utenti appartenenti al gruppoveyon-master
(che andranno pertanto opportunamente scelti ed associati al gruppo).
Per ragioni di sicurezza sono stati implementati dei controlli che
facciano sì che non sia controllabile da qualcun altro attraverso Veyon
nessun utente membro di almeno uno dei seguenti gruppi
-docenti-insegnanti-veyon-master-tecnici
Qualora si volesse inibire ulteriori gruppi, sarà necessario creare il
file di testo /var/www/html/veyon/excluded_groups con, uno per
riga, i nomi dei gruppi.
Attenzione: questo file permette di fare l’override anche dei gruppi
pre-impostati, che andranno pertanto inseriti nel file
excluded_groups per evitare, ad esempio, il controllo sul gruppo
docenti.
Diverse funzionalità di Veyon tipo accensione e spegnimento dei PC,
condivisione dello schermo del docente o aggiornamento dei PC non sono
al momento fruibili e verranno nascoste dall’interfaccia con un prossimo
aggiornamento.
Nel caso ci siano aggiornamenti di minor version di fuss-client (10.0.x →
10.0.(x+1)) li si può applicare aggiornando il pacchetto:
# apt update# apt install fuss-client
e quindi lanciando:
# fuss-client -U
per applicare le nuove configurazioni.
Le informazioni presenti in /usr/share/doc/fuss-client/changelog.gz
(dopo l’installazione del pacchetto) possono essere utili per scoprire
se le modifiche sono utili per installazioni esistenti o se riguardano
solo le nuove installazioni.
Per collegare i client ad un fuss-server è necessario dare accesso ssh
al server a chi effettua il collegamento; è possibile limitare questo
accesso usando una chiave ssh apposita che da accesso come root al
server, limitato però ai soli comandi necessari per fuss-client.
Coi comandi fuss-servercreate o fuss-serverupgrade viene
creata una coppia di chiavi in
/etc/fuss-server/client_keys/client-rsa(.pub) e la stessa viene
abilitata per l’accesso al server da parte di fuss-client.
Sui client già configurati con fuss-client è disponibile uno script,
/usr/local/sbin/copy_server_key, che prepara una chiavetta USB
configurata per essere riconosciuta da fuss-client, il quale
provvede a montarla, usarla per l’identificazione e poi smontarla quando
non più necessaria, in modo da poter essere spostata sugli altri client.
In alternativa, è possibile trasferire la chiave privata sui client in
altro modo a piacere ed usare l’opzione -k</path/completo/della/chiave> per identificarsi senza password. In
questo caso è ovviamente cura dell’utente provvedere a mount e umount di
eventuali dispositivi rimovibili.
Nota
ssh impone che il file della chiave abbia permessi tali da
impedirne la lettura ad altri utenti; se tali file sono su
filesystem ext è opportuno assegnare i permessi 0600 al file
della chiave privata.
Se si usa invece un filesystem FAT, è necessario usare opzioni di
mount opportune per evitare che i file si presentino con permessi
0755, come avviene di default.
In entrambi i casi, i file presenti sulla chiavetta vengono usati
durante la fase iniziale di fuss-client; quando non sono più in uso
viene emesso un suono diverso a seconda se la chiavetta sia stata
smontata e la si possa rimuovere tranquillamente o ci siano stati
problemi nello smontaggio e quindi la si può smontare a mano e
rimuovere.
Nel caso in cui non si senta il suono, questo avviene poco prima del
momento in cui iniziano le scritte colorate di ansible.
È possibile abilitare nuove chiavi mettendo la coppia di chiavi
pubbliche e private in /etc/fuss-server/client_keys/ e lanciando
fuss-serverupgrade perché vengano abilitate all’accesso.
/etc/fuss-server/client_keys/client-rsa(.pub) deve esistere
(altrimenti ne viene creata una nuova) ed è la chiave di default usata
ad esempio dallo script copy_server_key, altre chiavi vanno gestite
manualmente.
Sui client già configurati, a partire dalla versione 9.0.16 di
fuss-client, è presente uno script, /usr/local/sbin/copy_server_key,
per creare chiavette USB contenenti le chiavi ssh da usare per
l’identificazione.
Lo script non dipende da altre componenti del fuss-client e può essere
copiato su altre macchine; in tal caso per usarlo è necessario aver
installato il pacchetto python3-pyudev (dipendenza di fuss-client).
Per usarlo, collegare una chiavetta USB vuota al computer e lanciare il
comando:
# copy_server_key /dev/sdXn
dove /dev/sdXn è il device corrispondente alla partizione della
chiavetta dove si desiderano salvare le chiavi.
Avvertimento
La partizione specificata verrà riformattata, perdendo
tutti i dati eventualmente presenti sulla chiavetta.
Di default viene copiata la chiave presente sul server raggiungibile
all’indirizzo proxy; in alternativa si può specificare l’indirizzo
del server tramite l’opzione -s<indirizzo.del.server>.
Avvertimento
Nella versione di mkfs.ext4 presente in Debian Buster, e
quindi sui vecchi fuss-client, è presente un bug nella localizzazione
italiana, #907034, che
stampa le richieste di conferma in inglese, ma si aspetta risposta in
italiano.
Se viene stampata una richiesta tipo:
mke2fs 1.43.4 (31-Jan-2017)
/dev/sdb1 contiene un file system ext4 con etichetta "portachiavi"
last mounted on /mnt/portachiavi on Mon Aug 13 09:40:52 2018
Proceed anyway? (y,N)
è necessario premere s per continuare; y non viene
riconosciuto e viene trattato come il default, n, che quindi
causa l’uscita immediata dal programma.
Per poter lavorare in modo sicuro, fuss-client senza opzione -k
richiede che le chiavi ssh siano salvate su una chiavetta USB
configurata in modo ben preciso, come generata dallo script
copy_server_key.
La chiavetta USB deve contenere una partizione formattata ext con
etichetta portachiave, all’interno della quale è presente una
directory server_key contenente il file client-rsa con permessi
rispettivamente 0700 e 0600, entrambi appartenenti all’utente
root.
Per poter risolvere eventuali problemi di installazione di un client durante
l’esecuzione di fuss-client è essenziale poter disporre del log completo
delle operazioni effettuate da ansible durante l’esecuzione, riportare solo
le righe finali del risultato non è sufficiente.
Per questo nel caso si presentino problemi è opportuno rilanciare il comando
seguendo le indicazioni per registrare la sessione illustrate in
Bug reporting.
Fuss Client può essere installato su una Debian 12 (bookworm) standard; in
tal caso è necessario effettuare alcune configurazioni, sempre lavorando
come root.
Installare Debian 12 (bookworm) recuperando una delle seguenti ISO (a
seconda dell’occorrenza):
Architettura
ISO xfce-desktop UFFICIALE
ISO xfce-desktop NON UFFICIALE (con firmware proprietari)
fuss-client supporta anche una modalità di installazione standalone
che non effettua il collegamento ad un fuss-server, ma si limita a
configurare un’installazione di debian con i programmi e le
personalizzazione del sistema fuss.
Per usarla, a partire da un’installazione pulita di Debian, è
sufficiente aggiungere i repository fuss in
/etc/apt/source.list.d/archive_fuss_bz_it.list:
Configurazione di chroot per la generazione di iso
Nel caso in cui si stia configurando con --standalone non una
macchina reale ma una chroot, si può aggiungere l’opzione --iso per
evitare che siano configurati grub e i locale, per evitare fallimenti.
L’opzione --light permette di fare installazioni più leggere
evitando di installare gli inter metapacchetti fuss-kids,
fuss-children e fuss-education. Ovviamente una selezione di
pacchetti educational più limitata può essere installata manualmente in
un secondo tempo.
Per il funzionamento di determinato hardware è necessario l’uso di
firmware proprietari, disponibili nella sezione non-free-firmware
dei repository.
L’opzione --unofficial di fuss-client aggiunge l’installazione
di tali firmware; per usarla è necessario abilitare le sezioni
contrib, non-free-firmware e non-free per i repository
debian in /etc/apt/sources.list.
Avvertimento
Come dice il nome, questa opzione è da considerarsi non
ufficiale, ed in particolare l’installazione di software da
non-free diverso dai firmware necessari per il supporto hardware
non è supportata.
Per cambiare l’hostname di un fuss-client si può lanciare il comando:
fuss-client-H<nuovo_hostname>
questo aggiorna anche la chiave kerberos con il nuovo hostname.
L’opzione è pensata per essere usata su macchine appena ripristinate da
un’immagine pulita per assegnare un hostname unico alla stessa subito
prima di configurarla con fuss-client.
L’uso di questa opzione su macchine già configurate con fuss-client è
adeguato nel caso in cui si sia fatto un errore nell’assegnazione
dell’hostname, ma è sconsigliato farne uso sistematico, e in particolare
nel caso di cambiamento del server è consigliabile effettuare un restore
da immagine pulita.
Nel caso si usi questa opzione su un client che è già stato collegato ad
un fuss-server è inoltre opportuno usare, sul server, il comando:
per rimuovere le tracce della registrazione con l’hostname precedente.
Rimozione completa della configurazione dei client
Premessa
Fino a fuss11 fuss-client permetteva di togliere parte della configurazione di un FUSS Client in modo da poterlo spostare da un server in dismissione ad un nuovo server senza reinstallarlo.
Si otteneva lanciando il comando:
# fuss-client -r -p
quindi spostando il client sulla rete del nuovo server e lanciando fuss-client regolarmente come indicato sopra.
Configurazione attuale
A partire da fuss12, una volta che una macchina è stato configurata non è possibile rimuovere in modo affidabile la sua configurazione;
per cambiare totalmente caso d’uso di un PC (ad esempio da client a standalone) è necessario ripristinare la sua installazione da un’immagine pulita
tramite fuss-fucc (o effettuarne una nuova installazione, a seconda di cosa risulti più comodo o veloce).
Mantenendo lo stesso caso d’uso (ridenominazione di un client nella stessa rete o spostamento di un client da una rete ad un’altra), generalmente è sufficiente una riconfigurazione con l’opzione -H documentata sopra:
fuss-client-Hclient_name
Per rimuovere il client latoserver è necessario invece lanciare sul server il comando:
Nel caso vi sia la necessità di rimuovere un certo numero di client dal server,
è vantaggioso creare ad esempio nella cartella /root del server una lista di hostname da rimuovere
chiamandola client-forget.csv e uno script forget-clients come il seguente:
#!/bin/sh
systemctl stop octofussd
for HOSTNAME in $(cat client-forget.csv)
do
echo $HOSTNAME
DOMAINNAME=$(dnsdomainname)
FQDN="$HOSTNAME.$DOMAINNAME"
sed -r -i "s/ +$HOSTNAME( +|$)/\1/g" /etc/clusters
kadmin.local ktremove nfs/$FQDN all
kadmin.local delprinc nfs/$FQDN
done
systemctl start octofussd
Lanciando questo script, tutti i client elencati vengono rimossidaljoin e cancellati da /etc/clusters.
Per poter utilizzare l’interfaccia di gestione di OctoNet, occorre che
sia attiva tutta l’infrastruttura di gestione Octofuss) fornita del
Fuss Server, che prevede la presenza dei seguenti tre servizi (gestiti
con systemd e lanciati all’avvio del server):
octofussd: demone di gestione dell’infrastruttura di gestione
Octofuss (verificabile con systemctlstatusoctofussd);
octonet: servizio che fornisce l’interfaccia web di OctoNet
(verificabile con systemctlstatusoctonet);
octofuss-client: demone di controllo della macchina locale, da
installare anche sul server (verificabile con systemctlstatusoctofuss-client).
Il Fuss Server fornisce l’interfaccia di gestione via web OctoNet, cui si
accede tramite browser.
Sul server stesso si può accedere usando l’indirizzo
http://localhost:13402; dato che l’accesso è fornito senza
cifratura non è sicuro collegarvisi direttamente da altre macchine, ma
si può usare un tunnel SSH: su un terminale da un qualunque client della
rete interna eseguire:
$ ssh sshuser@proxy -L 13402:localhost:13402
dove sshuser è un qualunque utente con accesso SSH sul server (cioè
facente parte del gruppo sshaccess).
Per abilitare l’accesso anche alla nuova piattaforma Fuss Manager
occorre collegare anche la porta 1232:
Una volta collegati in console, si potrà accedere all’interfaccia web
usando un browser sul client puntandolo all’indirizzo
http://localhost:13402, dove si otterrà la seguente schermata di
accesso:
Con l’installazione del Fuss Server viene creato un accesso di default
con username root e password uguale alla master password impostata
durante l’esecuzione del comando fuss-servercreate (l’utenza creata
è interna al servizio octofussd e non ha nulla a che fare con
l’utenza root di sistema). Una volta effettuato l’accesso si otterrà
una pagina come la seguente:
Nella pagina è disponibile, nella colonna sulla sinistra, il menu delle
diverse funzionalità di gestione fornite da OctoNet. Si tenga presente che il
menu è dinamico e mostra le diverse funzionalità solo quando queste sono
disponibili (se ad esempio non sono state abilitate le quote disco, la
relativa voce non sarà presente).
La barra in alto riporta a destra un menù utente che consente di scollegarsi,
ed alla sua sinistra un menu di scelta della lingua (sono disponibili inglese,
italiano e tedesco). Nel seguito faremo riferimento alla versione in italiano.
L’infrastruttura di Octofuss mette a disposizione un tool a riga di comando,
octofussctl, che consente di effettuare le operazioni di gestione in forma
scriptabile.
Il comando richiede le stesse credenziali di accesso utilizzate per OctoNet,
e fornisce sia una linea di comando interattiva, che la possibilità di
eseguire operazioni in batch (scrivendo i relativi comandi all’interno di un
file di testo da passare al comando con l’opzione -b).
Per l’accesso occorre indicare la URL che identifica il server, nella forma:
octofussctlhttp://localhost:13400/conf
si può indicare l’utente con l’opzione -u (o con la variabile di ambiente
OCTOFUSS_USER) mentre la password, se non indicata nella variabile di
ambiente OCTOFUSS_PASSWORD, viene richiesta sul terminale. Le credenziali
sono le stesse che si usano per OctoNet (e si applica quanto detto in
precedenza).
I comandi disponibili all’interno della shell di octofussctl sono elencati
dal comando help, ed il relativo funzionamento con helpcomando.
Con octofussctl diventa possibile automatizzare alcune operazioni che
diventerebbero molto macchinose da eseguire attraverso l’interfaccia web; ad
esempio qualora si volessero cancellare tutti gli utenti di un gruppo
(l’interfaccia web consente di rimuoverli da un gruppo, ma non di
cancellarli), si potrebbe usare il comando delete in un ciclo come:
export OCTOFUSS_PASSWORD=password
export OCTOFUSS_USER=root
for i in $(members gruppo); do
octofussctl http://localhost:13400/conf delete /users/users/$i
done
Si può accedere alla gestione utenti di OctoNet attraverso la voce Utenti e
Gruppi che abilita sulla barra superiore (sulla sinistra) un menu omonimo da
cui accedere alle altre pagine.
Una volta selezionata la gestione utenti si viene portati sulla pagina di
gestione degli utenti (corrispondente alla voce Tutti gli utenti del
suddetto menu).
La pagina visualizza una tabella con tutti gli utenti creati sul server (solo
quelli gestiti in maniera centralizzata attraverso il servizio LDAP), due di
questi, admin e nobody sono utenti di servizio sempre presenti che non
devono essere modificati (sono disabilitati, e per questo contraddistinti da
una crocetta rossa).
Si può cambiare il numero di utenti visualizzati selezionando una delle
possibilità nel menu a tendina Visualizza sulla sinistra o eseguire una
ricerca sul nome utente inserendo una stringa nel campo Cerca.
Cliccando sul link con il nome utente in seconda colonna o sul pulsante
modifica sulla riga dello stesso, è possibile accedere alla pagina di gestione
dell’utente stesso:
Si tenga conto che prima di creare un utente, se si vuole che questo sia
assegnato ad un qualche gruppo specifico, occorre che quest’ultimo esista.
L’elenco dei gruppi di ottiene dal menu Utenti e Gruppi -> Tutti i gruppi,
alcuni di questi sono automaticamente definiti (ad uso di Samba)
all’installazione del Fuss Server, e sono quelli mostrati nella pagina
seguente:
Da questa pagina si può aggiungere un nuovo gruppo con il pulsante Crea nuovo
gruppo o selezionando la stessa funzionalità dal menu Utenti e Gruppi, si
otterrà la pagina di creazione:
in cui occorre inserire il nome del gruppo (che deve essere indicato usando
solo lettere minuscole e numeri, senza spazi o altri caratteri di
interpunzione). Una volta creato il gruppo si verrà riportati nella pagina
dello stesso, che ne elenca i membri (all’inizio nessuno):
É opportuno creare un gruppo per ogni classe che si vuole definire, ed
eventuali altri gruppo per tipologia di utenti (tecnici, segreteria, docenti,
ecc.). Ma si tenga conto che il gruppo docenti (o qualunque gruppo il cui nome
inizi per docent) ha un ruolo speciale per la gestione della scadenza
delle password secondo le normative della privacy, ed è riservato alle utenze
degli insegnanti.
Una volta che si sia creato un gruppo questo potrà essere usato nelle pagine
di gestione o creazione degli utenti, e questi vi potranno essere inseriti o
tolti. Inoltre premendo sul pulsante Modifica in alto a destra si passerà
alla pagina di gestione del gruppo:
I membri presenti sono presenti sono illustrati nella casella di testo
Membri come pulsanti, e possono essere tolti dal gruppo cliccando sulla
crocetta nel pulsante, cliccando invece nell’area vuota verrà presentato un
menu a tendina con gli utenti disponibile con cui è possibile aggiungere nuovi
membri al gruppo. Una volta completate le modifiche si dovranno salvare con il
pulsante Salva.
Ulteriori operazioni sono possibili con i pulsanti a destra, in tal caso
l’applicazione è immediata ed una volta effettuata l’operazione si viene
riportati nella pagina del gruppo; le operazioni sono:
con Aggiungi gruppo è possibile aggiungere tutti gli utenti del gruppo
corrente ad un altro gruppo, selezionato dal menu a tendina sovrastante;
è possibile rimuovere in un colpo solo tutti gli utenti dal gruppo con il
pulsante Rimuovi tutti gli utenti;
è possibile aggiungere in blocco dei Permessi a tutti gli utenti del gruppo
con il pulsante Aggiungi permesso, selezionando quale permesso dal menu a
tendina soprastante;
analogamente con il pulsante Aggiungi permesso si potrà rimuovere un
permesso, sempre da selezionare dal menu a tendina soprastante, a tutti gli
utenti del gruppo.
Una volta che si sono creati i gruppi necessari per creare un utente occorre
selezionare la voce Utenti e Gruppi -> Crea utente dal menu di gestione
Utenti e Gruppi che porta nella pagina di creazione illustrata di seguito:
In questo caso occorrerà specificare anzitutto un nome utente, di nuovo
occorre indicare lo stesso utilizzando solo lettere minuscole e numeri, senza
spazi o altri caratteri di interpunzione, nello scriverlo verrà avvalorato
automaticamente il campo della Directory Home con il default (che è sempre
/home/nomeutente). Se l’utente è uno studente è opportuno indicare come
Gruppo Primario quello corrispondente alla sua classe, ed indicarne il nome
completo (qui si possono usare maiuscole e spazi) nel campo omonimo.
I campi Shell predefinita, Gruppo Controllore e Directory Home si
possono lasciare al default; eventualmente si può modificare quest’ultima se
si è deciso di suddividere le home degli studenti per classe, usando un
percorso del tipo /home/studenti/nomeclasse/nomestudente.
La password deve esser immessa due volte (uguale nei campi Password e
Conferma). Eventuali ulteriori gruppi di cui si vuole l’utente faccia parte
vanno indicati nel campo Gruppi (cliccando all’interno vengono mostrati in
una tendina quelli che corrispondono al testo immesso).
Il campo Permessi serve a controllare i permessi che verranno assegnati
all’utente perché questo possa utilizzare le relative funzionalità quando si
collega su un client. Questi corrispondono ad altrettanti gruppi locali dei
client nel quale l’utente verrà automaticamente inserito (si tenga conto però
che questo non è immediato, occorre che il client sia acceso e si sincronizzi
con il server, per cui possono, nella peggiore delle ipotesi, passare anche 5
minuti perché questo avvenga).
Inoltre, perché venga abilitata la navigazione su internet è necessario
che venga rinnovata la cache di nscd: per forzare un aggiornamento
si può usare la voce Propaga i permessi di accesso alla rete nel menù
Utenti e Gruppi.
Il default propone i permessi per l’accesso alla scheda sonora, ai dispositivi
rimuovibili, allo scanner, ad internet ed al CDROM, secondo l’elenco in
tabella.
Permesso
Significato
plugdev
Può utilizzare dispositivi rimuovibili (chiavette USB, ecc.)
cdrom
Ha accesso a CD e DVD
audio
Può utilizzare i dispositivi audio (scheda sonora)
video
Può usare dispositivi di registrazione video (ex. webcam)
internet
Può navigare il web attraverso il proxy
scanner
Può utilizzare uno scanner
lpadmin
Può amministrare le stampanti
bluetooth
Può comunicare con il servizio bluetooth attraverso dbus
netdev
Può amministrare le interfacce di rete via Network Manager
Cliccando sulla crocetta essi possono essere rimossi, cliccando nel campo
viene mostrato un menu a tendina che mostra quelli disponibili, con quelli
presenti in grigio, ed è possibile aggiungerne altri. Una volta premuto il
pulsante Salva l’utente verrà creato e si verrà portati sulla relativa
pagina di gestione:
Si noti come l’utente, non essendo stato classificato come docente, riporti
nella riga Unità il valore studente. Come accennato questo parametro viene
gestito in modalità automatica sulla base del gruppo principale dell’utente, e
determina le modalità con cui viene gestita la scadenza delle password, che
non c’è per uno studente (che non tratta dati personali) mentre viene
applicata per i docenti secondo i requisiti della normativa sulla privacy.
Nel caso si voglia creare un utente per un docente occorrerà allora utilizzare
come gruppo principale (attenzione, gruppo principale, nella voce Gruppo
primario e non in uno dei gruppi ausiliari indicati nella voce Gruppi) un
gruppo il cui nome inizi con la stringa docent (è così possibile creare
più gruppi per i docenti, per differenziare eventuali diritti di accesso, ad
esempio per il Gruppo Controllore).
Un esempio è nella pagina seguente, dove oltre ad usare il gruppo docenti
si assegna all’utente anche il privilegio lpadmin che consente di
effettuare la gestione delle stampanti.
con l’utilizzo del gruppo docenti come gruppo principale il nuovo utente
verrà classificato nella riga Unità come docente:
Una volta creato l’utente si potrà modificarne le impostazioni, disabilitarlo
o eliminarlo cliccando sul pulsante Modifica della sua pagina di gestione:
Da questa pagina, oltre a cambiare le proprietà inserite in fase di creazione
(tutte tranne il nome utente, che non può essere cambiato via OctoNet, se lo
si è sbagliato si deve cancellare e creare da capo), sono possibili alcune
ulteriori operazioni:
si possono (quando sono state configurate ed abilitate) inserire le quote
disco (nella sezione Modifica Quote) dell’utente
si può cancellare l’utente con il pulsante Elimina utente; l’utente verrà
cancellato e per non perdere eventuali suoi dati verrà creato un archivio
username.tar.gz con il contenuto della sua home directory nella
directory sotto cui questa si trovava
si può disabilitare l’utente con il pulsante Disabilita utente, nel qual
caso l’accesso dell’utente verrà disabilitato, l’utente verrà marcato come
disabilitato nella lista degli utenti e nella sua pagina, ma il suo account
resterà attivo e potrà essere riabilitato
si può riabilitare un utente precedentemente disabilitato con il pulsante
Abilita utente che compare al posto di quello Disabilita utente nella
pagina di modifica quando l’utente è disabilitato.
Il modo migliore per gestire utenti è usare l’apposita interfaccia di octofuss
che automatizza l’intera procedura minimizzando il rischio di errori, inoltre
è l’unico che consente la gestione dei permessi degli utenti. Questi appunti
sono utili nel caso sia invece necessario intervenire direttamente tramite gli
smbldap-tools. Si da per assunto che siano invocati come root sul server.
È importante notare che per il corretto funzionamento della home sul
fuss-server è necessario non solo gestire un utente LDAP/Samba, ma anche il
relativo principal Kerberos, con la stessa password.
La creazione di un utente può essere realizzata con il comando:
smbldap-useradd-a-mnomeutente
a cui deve seguire l’impostazione di una password con il comando:
smbldap-passwdnomeutente
È quindi necessario impostare un principal Kerberos con la stessa password,
tramite il comando @kadmin.local@:
Si tenga presente che con questi comandi non viene impostato il valore
dell’attributo ou dell’utente che indica se questi è uno studente o un
docente. Lo si può impostare manualmente usando il comando:
ldapvi'(uid=username)'
che apre un editor con il contenuto in formato LDIF dei dati dell’utente;
aggiungendo la riga:
ou:studenti
agli attributi mostrati nell’editor si classificherà l’utente come studente.
Per cambiare la password dell’utente si può usare il comando visto sopra:
smbldap-passwdnomeutente
e successivamente aggiornare anche la password del principal Kerberos con
kadmin.local:
kadmin.local<<EOFcpwuser@DOMINIO.LANnewpwnewpwEOF
Per la creazione di un gruppo di utenti si può utilizzare il comando:
smbldap-groupadd-anomegruppo
per aggiungere un utente ad un gruppo si può utilizzare il comando:
smbldap-groupmod-mnomeutentenomegruppo
mentre per toglierlo:
smbldap-groupmod-xnomeutentenomegruppo
Per disabilitare temporaneamente un utente si può usare il comando:
Nella creazione di un utente la sua home sarà creata con permessi 0700
(cioè accessibile soltanto a lui) assegnando all’utente la proprietà della
stessa, mentre per il gruppo proprietario verrà usato il gruppo preimpostato
DomainUsers, si avrà cioè nel caso dell’esempio precedente:
root@fussserver:~# ls -ld /home/studente1drwx------2studente1DomainUsers4096lug2318:22/home/studente1
è possibile però fornire accesso al contenuto della home agli utenti facenti
parte di un gruppo (detto per questo Gruppo controllore) da specificare nel
campo omonimo della pagina di gestione dell’utente (ad esempio il gruppo
docenti) cliccando sul quale si ottiene un menu a tendina sui gruppi
disponibile (sui quali viene effettuata automaticamente una ricerca su quanto
si scrive nel campo) da cui scegliere:
ed una volta impostato un gruppo controllore questo comparirà nella pagina
dell’utente:
ed i permessi della sua home verranno cambiati in 2770:
root@fussserver:~# ls -ld /home/studente1drwxrws---2studente1docenti4096lug2318:22/home/studente1
in questo modo il gruppo docenti avrà accesso in lettura e scrittura dei
contenuti, ed i nuovi file e le directory saranno assegnati al gruppo stesso
come gruppo proprietario.
La funzionalità, prevalentemente fornita a scopo di test e per creare blocchi
di utenti temporanei (ad esempio per accessi da fornire a esterni in una prova
di esame) è accessibile dalla voce Creazione in massa del menu Utenti e
gruppi e richiede di immettere un prefisso ed un numero di utenti da creare:
gli utenti vengono creati ed automaticamente viene fatto scaricare un file
(mass-created-users-AAAA-MM-GG.csv) in cui viene fornito l’elenco degli
stessi e delle rispettive password che sono assegnata automaticamente.
Non esiste una funzionalità di cancellazione in massa, ma questa può essere
realizzata in maniera relativamente veloce usando octofussctl da riga di
comando con:
che a differenza della cancellazione manuale con altri tool di gestione
utenti, effettua la cancellazione come se la si fosse fatta da OctoNet,
creando gli archivi con i file degli utenti.
Una seconda funzionalità per creare in massa liste di utenti è quella
dell’importazione da file CSV, che consente di preparare una lista in un file
.csv.
Il formato CSV ha moltissime varianti, delle quali viene supportato un
limitato sottoinsieme, per questo alcune precauzioni nella creazione del file
CSV da usare per l’importazione, che deve avere queste caratteristiche:
Encoding: l’encoding del file deve essere ASCII o UTF-8 senza BOM. Il
BOM (Byte Order Mark)
abbiamo visto creare problemi. Si può verificare che l’encoding sia
corretto eseguendo il comando:
e si potrà poi verificare che nuovofile.csv avrà il corretto encoding:
nuovofile.csv:ASCIItext,withCRLFlineterminators
Campi testuali: i campi devono essere in formato alfanumerico evitando
caratteri di controllo come virgolette o apici, questo è necessario per
nomi di utenti e gruppi, ma si applica anche per i nomi e per le password,
per cui occorre limitare i caratteri di punteggiatura ed interpunzione.
Coerenza del numero di colonne: Nel file tutte le righe dovranno avere
lo stesso numero di campi. Ad esempio qui si vede la prima riga che
contiene 4 campi, e la seconda 5:
e anche questo non andrà bene; si tenga conto anche che una riga vuota,
anche se messa in coda al file, viene considerata come con 0 campi (l’a
capo sull’ultima riga non conta, ma non ve ne devono essere altri) per cui
un file che ne contenga una non andrà bene per questo motivo).
Formato del file: Il file non dovrebbe avere la prima riga di
intestazione, ma tutte le righe dovrebbero essere relative agli utenti. Ad
esempio un file che inizia così:
non va bene, e bisognerà cancellare la prima riga in modo che il file inizi
direttamente con le righe relative agli utenti. In questo caso il requisito
non è stringente, in quanto l’interfaccia di importazione consente di
escludere una eventuale riga di intestazione.
Dato che se il file da importare è molto grande esaminare la correttezza (in
particolare per il terzo requisito) non è banale, dal menu Utenti e gruppi ->
Verifica file CSV si può effettuare un controllo preventivo:
Dove viene richiesto di scegliere il file da controllare (si aprirà il
selettore di file del desktop) e la riga in cui si è inserito l’username
(verrà verificato che non vi siano doppioni), se ad esempio partiamo da un
con una riga vuota file come:
mentre se il file è corretto (mettendo studente6 nell’ultima riga)
otterremo:
venendo rediretti automaticamente nella pagina di importazione dei file CSV.
Questo controllo è importante perché l’importazione inserisce un utente alla
volta e si ferma in caso di errore, dopo di che non è immediato ricominciare
da dove ci si era fermati.
Il controllo su Utenti e gruppi -> Verifica file CSV effettua solo un
controllo di base di coerenza del contenuto del file, perché l’importazione
finale abbia successo sono necessari una serie di ulteriori requisiti:
Eventuali gruppi primari o gruppi controllore indicati nel file dovranno già
essere presenti nel sistema (bisognerà crearli prima sempre tramite
OctoNet). In caso ne mancassero, il sistema darà un messaggio di errore
senza importare nulla, per evitare import parziali. Questo non vale per i
gruppi secondari, che invece vengono creati nell’importazione.
Nessun utente elencato nel file CSV dovrà esistere sul sistema.
Nessuna directory home di quelle che si dovrebbero creare durante
l’importazione dovrà essere presente.
Si ricorda che per i professori, il gruppo primario a cui aggiungerli è
docenti, non insegnanti o professori o altro. Quindi questo dovrà
essere il gruppo primario indicato, per i professori, nel file CSV. Il nome è
fondamentale perché è sulla base del nome che il sistema capisce che si sta
trattando un docente e non uno studente.
Il file può contenere i seguenti campi (il nome campo fa riferimento al nome
usato nella interfaccia di importazione):
Nome campo
Formato
Nome
Nome (una parola)
Cognome
Cognome (una parola)
Nome completo
Nome e Cognome
Password
password (evitare virgole e caratteri CSV)
Nome utente
username (solo minuscole, eventuali numeri in coda)
Per l’importazione degli utenti da un file CSV si deve usare la pagina Utenti
e gruppi -> Importa da CSV, che consente di selezionare un file dalla propria
macchina col pulsante Scegli file, si otterrà una visualizzazione della
tabella come la seguente:
A questo punto bisognerà selezionare le colonne che si desidera importare
semplicemente trascinando le celle di intestazione nella colonna desiderata
(dalle altre colonne o dalla lista di quelle non assegnate in fondo alla
tabella); se una colonna non si vuole o non si deve importare, si trascini la
relativa intestazione fuori dalla tabella e l’intestazione resterà
deselezionata.
L’interfaccia consente anche l’eliminazione delle prime righe del file
importato (solo a partire dall’inizio del file). Questo può risultare utile se
il CSV ha una riga di intestazione (come quello che si può ottenere dalla
conversione di un file .ldif). Per farlo occorre cliccare sulla riga
corrispondente che verrà barrata, un esempio è riportato nella seguente
immagine:
cliccando sulla riga successiva potrà essere esclusa anche quella, ricliccando
si rimuoverà l’esclusione (di nuovo funziona solo sull’ultima delle righe
escluse, la funzionalità di esclusione si applica solo all’inizio del file).
Il campo Nome completo non si può importare se viene usato in coincidenza
con Nome o Cognome, se si usano questi due campi viene creato
automaticamente unendoli.
È sempre obbligatorio selezionare la colonna Nome utente, se non lo si fa
l’importazione riporta un errore e non va avanti.
Se la colonna password non viene impostata gli utenti verranno creati senza
password (e non potranno accedere fintanto che non gli se ne imposta una). Una
volta finito si dovrà avere una situazione del tipo:
Una volta impostate le colonne si potrà premere Carica file e se tutto è
inizialmente corretto si dovrebbe vedere un popup che dice di non chiudere la
finestra e di attendere la fine del processo. Questo potrebbe durare diversi
minuti, o se si tratta di migliaia di utenti, anche ore (è un limite
intrinseco di LDAP).
Se tutto è stato importato correttamente, alla fine comparirà un bottone per
redirigere alla lista utenti, in cui si potrà verificare l’avvenuta
importazione.
Qualora si disponga dell’elenco utenti in formato LDIF (che può essere
ottenuto da un backup degli stessi, disponibile sotto /var/backups/slapd
se si è installato e configurato fuss-backup) è possibile eseguire una
conversione dello stesso usando il pulsante Converti file LDIF in alto a
destra. Si può comunque ottenere un file LDIF dall’istanza corrente con il
comando slapcat, con:
slapcat-v-lnome_del_file.ldif
In questo caso si dovrà scegliere un file .ldif con il pulsante Scegli
file e poi fargli generare il CSV premendo sul pulsante Genera file CSV,
questo verrà generato e fatto scaricare al browser, e si potrà andare sulla
pagina di importazione cliccando sul nuovo pulsante Importa il file
generato.
Si tenga presente che il file così generato conterrà delle password casuali
create da OctoNet, ed ha una riga di intestazione che deve essere rimossa
prima dell’importazione.
La gestione delle quote disco può essere eseguita per il singolo utente dalla
sua pagina di gestione, o utilizzando direttamente l’interfaccia di gestione
che compare nel menu alla voce Quote disco sulla colonna di destra di
OctoNet. Cliccando sulla stessa si verrà portati su una pagina che elenca i
filesystem disponibili:
Si tenga conto che la funzionalità è presente soltanto se le quote disco sono
attive e configurate. Nella installazione ordinaria del Fuss Server questo
viene fatto per la directory /home solo se questa è montata su un
filesystem separato.
Le quote disco infatti sono applicabili solo a livello di filesystem e non per
le singole directory. Questo significa anche, se i dati sono distribuiti su
più filesystem, che non possono essere applicate in forma «globale» per un
totale generico ma possono essere impostate solo per ciascuno filesystem in
maniera del tutto indipendente.
La pagina prima elenca i filesystem disponibili indicando rispettivi mount
point e la relativa occupazione di spazio disco, e ripete in fondo quelli per
i quali sono abilitate le quote disco. La scelta di Fuss Server è abilitarle
solo per le home, dato che è solo li che han senso, applicandosi ai dati
degli utenti. Si tenga presente che se si è installato il Fuss Server
usando solo il filesystem radice, esse non saranno attive.
Benché sia possibile cliccare su tutti i filesystem si otterrà una lista delle
quote solo per quelli su cui queste sono abilitate, nel caso precedente
home, per cui si otterrà:
Le quote disponibili sono di due tipi, le quote utente (che valgono per il
singolo utente) e le quote gruppo (applicate ai file di un gruppo), ed hanno
due limiti, soft ed hard. Il primo può essere superato per un periodo di
tempo limitato (il grace time, che di default vale una settimana) passato il
quale verrà applicato, il secondo viene applicato immediatamente. Le quote
utente e quelle gruppo sono indipendenti.
Inoltre le quote sono suddivise per spazio disco (Quota disco) e per numero
di file (Quota file), ed anche queste sono indipendenti l’una dall’altra, si
può cioè superare la quota sia perché si è finito lo spazio disco, o perché si
è esaurito il numero di file (per cui non si potranno creare nuovi file, ma si
potranno allargare quelli esistenti).
La pagina presenta di default le quote utente, si può passare a quelle gruppo
cliccando sulla linguetta corrispondente. Vengono visualizzati un numero fisso
di utenti o gruppi selezionabili con il menu a tendina Visualizza e si può
effettuare la ricerca di un utente/gruppo specifico con Cerca.
Per modificare uno dei valori delle quote si faccia un doppio click sulla
stessa, e comparirà una finestra di immissione, si dovrà specificare una
dimensione in kilobytes per le Quota disco ed un numero per le Quota file
e poi salvarlo; si tenga conto che occorre sempre indicare per le quote soft
un valore inferiore che per le hard.
Come accennato si possono impostare anche le quote nella pagina di gestione
del singolo utente, nella sezione finale della pagina di modifica dello
stesso:
Il Fuss Server è in grado di gestire in maniera centralizzata i client
facenti parte di una rete scolastica, utilizzando le funzionalità presenti
nella sezione Hosts del menu sulla colonna di destra.
Si può accedere alle pagine di gestione del DHCP dalla voce Leases DHCP che
porta automaticamente sulla pagina che elenca lo stato attuale dei leases
(vale a dire delle assegnazioni MAC Address/Indirizzo IP) presenti sul server,
e fa comparire nella barra in alto il menu Leases DHCP sulla sinistra.
alla stessa pagina si può tornare da una qualunque delle altre della sezione
usando il link Leases DHCP serviti dal menu Leases DHCP.
Si ricordi che in fase di installazione del Fuss Server una delle richieste
effettuate da fuss-servercreate è quella dell’indicazione dell’intervallo
di indirizzi IP da assegnare dinamicamente, che viene memorizzato nel file di
configurazione fuss-server.yaml, nella variabile dhcp_range; lo si
potrà pertanto ottenere con il comando:
grepdhcp_range/etc/fuss-server/fuss-server.yaml
La pagina illustrata è solo informativa e ci dice quali assegnazioni dinamiche
sono state effettuate; è possibile però impostare anche delle assegnazioni
statiche (le cosiddette «reservation») usando dal menù la voce Crea
assegnazione statica, che porta sulla relativa pagina di immissione:
ed in questo modo si possono controllare gli indirizzi assegnati alle singole
macchine attraverso il DHCP (la cosa può essere utile ad esempio per assegnare
IP fissi ad apparati di rete come le stampanti in modo da poterne gestire
l’accesso in maniera centralizzata). In genere non è opportuno utilizzare
questa assegnazione per i client, che vengono gestiti direttamente dal server,
ma solo per macchine ed apparati esterni.
La pagina richieda che si immetta un nome che identifichi l’apparato, il MAC
address della sua scheda di rete e l’indirizzo IP che si vuole gli venga
assegnato. É opportuno che quest’ultimo sia fuori dall’intervallo di IP
dinamici identificato in precedenza. L’impostazione verrà salvata nel file
/etc/dhcp/dhcp-reservations.
Si tenga conto che se l’apparato è impostato per ricevere l’indirizzo in DHCP,
questo verrà assegnato dinamicamente una volta accesso, ed anche se poi si
effettua una assegnazione statica, questa non verrà effettuata fintanto che il
precedente lease non scade. Per questo per rendere effettiva l’assegnazione
statica occorre in genere riavviare l’apparato (o forzare la nuova richiesta
di un indirizzo IP, se esiste una funzionalità per farlo).
Eseguita l’assegnazione si verrà portati nella pagina che elenca le
assegnazioni effettuate, a cui si può accedere anche direttamente dal menu
Leases DHCP con la voce Assegnazione statica DHCP:
da questa pagina si potranno gestire anche le assegnazione presenti
cancellandole col pulsante Elimina (verrà chiesto conferma in una finestra di
pop-up) o modificandole con il pulsante Modifica, nel qual caso si verrà
riportati nella pagine di impostazione dell’assegnazione statica, potendo però
modificare solo i campi relativi al MAC address ed all’indirizzo IP (per la
modifica del nome è necessario fare una cancellazione ed una creazione da
capo).
Il Fuss Server consente una gestione più dettagliata di tutti i client che
vengono registrati sul server con una join, quando su di essi si esegue
fuss-client -a. In quella fase si può chiedere di inserire il client in un
cluster, che consente di raggruppare gruppi di client.
L’elenco dei computer gestiti dal Fuss Server si ottiene selezionando la
voce Computer gestiti dal menu della colonna di destra, che porta sulla
pagina degli host gestiti, e rende inoltre disponibile il menu Computer
gestiti nella barra superiore.
La pagina mostra l’elenco dei client registrati sul Fuss Server (ed è
inizialmente vuota) in una tabella dove viene mostrato un eventuale utente
collegato sulla macchina e lo stato della stessa (se accesa o spenta) e dello
schermo (se bloccato o sbloccato).
Si tenga presente che l’elenco fa riferimento a tutti i computer che sono
stati registrati, anche se questi non sono più presenti. Si potrà tornare
sulla lista selezionato dal menu Computer gestiti la voce Tutti gli host.
É anche possibile ottenere una lista di computer che sono stati osservati
sulla rete (grazie al servizio Avahi) usando la voce del menu Nuovi
computer ma si tenga conto che questa pagine contiene una lista di tutti i
computer osservati, non solo quelli presenti sulla rete interna su cui sono
posizionati i client.
Come accennato quando si esegue fuss-client-a su un client questo viene
agganciato al server, se sul server è presente un cluster, questo verrà
automaticamente selezionato, e se ne sono presenti più di uno verrà richiesta
la scelta di quale cluster utilizzare. Se non ne è presente nessuno verrà
usato come default None ed un cluster con questo nome verrà
automaticamente creato.
Pertanto è in genere opportuno creare i cluster sul server prima di eseguire
la join dei client, in modo che questo possa selezionare in quale essere
incluso all’esecuzione di fuss-client-a, per farlo si deve selezionare
dal menu Computer gestiti nella barra superiore la voce Crea nuovo cluster
che porterà nella pagina di creazione:
dove si potrà creare un cluster immettendo il nome nella casella Nome
cluster, si tenga conto che il nome non deve contenere spazi ed per
semplicità utilizzare solo lettere minuscole e numeri. Una volta creato si
verrà rediretti automaticamente nella pagina di gestione del cluster:
e lo stesso apparirà nel menu Computer gestiti nella barra superiore, e lo
si potrà selezionare per arrivare alla relativa pagina:
ottenendo:
Premendo sul pulsante Dettagli cluster si può poi passare alla pagina di
gestione delle macchine del cluster, da cui si possono effettuare diverse
operazioni sulle macchine che ne fanno parte.
Da questa con il pulsante Shutdown now si possono spegnere tutte le macchine
del cluster, con il pulsante Disable internet si blocca l’accesso ad
Internet delle stesse (viene creata una opportuna regola di firewall) e con il
pulsante Lock screen si blocca lo schermo degli utenti collegati. È inoltre
possibile inviare un messaggio agli utenti collegati (da inserire nel campo
Message to send) con il pulsante Send a message e indicare un pacchetto da
installare (da inserire nel campo Package to install) con il pulsante
Install software.
Infine si può inserire nel cluster un nuovo client usando il pulsante Create
new computer, scrivendone il nome nel campo Name of the new computer.
I dati dei cluster sono mantenuti sul Fuss Server nel file /etc/clusters
il cui formato è nella forma di una riga per cluster di macchine, con campi
separati da spaziature, in cui il primo campo, quello ad inizio riga, indica
il nome del cluster, ed i successivi i nomi dei client che ne fanno parte.
Si tenga presente che nel collegamento ordinario al server i client vengono
identificati solo per hostname (con il nome singolo, non l’FQDN completo), ma
questo avviene con le versioni più recenti del client, che hanno introdotto il
supporto per la normalizzazione dei nomi e la capacità di cambiare al volo
l’hostname di una macchina prima di effettuare il collegamento.
Se si deve intervenire manualmente su questo file occorre avere alcune
accortezze, infatti il suo contenuto viene letto da octofussd all’avvio,
ed aggiornato coerentemente fintanto che si usa OctoNet o si aggiungono i
client con fuss-client, ma se si opera manualmente su /etc/clusters
occorre forzare la rilettura con serviceoctofussdrestart.
Qualora si voglia creare manualmente il file si possono utilizzare i dati
raccolti grazie al servizio DHCP, per questo però è necessario che tutti i pc
che devono essere inseriti nel cluster siano accesi. In tal caso è possibile
visualizzare a schermo tutte le macchine accese con il comando:
host -l “nome dominio.local”
e da questa lista si può creare il file /etc/clusters eseguendo (sempre
dalla console del server) il comando:
In alternativa possiamo estrarre, piuttosto che i nomi dei client, gli IP
consegnati dal server DHCP (utile quando sulle postazioni clienti non è ancora
installato fuss-client che configura dhclient per far si che i nomi
dei clienti siano presenti sul DNS) in questo modo:
Oltre alla gestione generale dei client che fanno parte di un cluster, si
possono pianificare operazioni per le singole macchine. Si può accedere a
queste operazioni cliccando sul link di una macchina dalla pagine Tutti gli
host (o da quella di un cluster di cui la macchina fa parte), che porta sulla
pagina dell’host richiesto:
Nella pagina vengono riportate le Azioni possibili sulla parte destra;
alcune di queste (Shutdown now, Disable internet, Lock desktop, Send a
message, Install software) sono le stesse già viste per le macchine di un
cluster in Gestione cluster; a queste si aggiungono la possibilità di
inserire la macchina in un cluster (da selezionare dal menu a tendina Add to
cluster) con il pulsante Add to cluster e quella di rimuoverla da un
cluster con (da selezionare dal menu a tendina Remove from cluster) con il
pulsante Remove from cluster.
Infine è possibile aggiungere la macchina ad un aggiornamento pianificato (che
deve essere creato in precedenza, vedi Gestione aggiornamenti) selezionando
lo stesso dal dal menu a tendina Add to upgrade con il pulsante Add to
upgrade, o pianificare l’esecuzione di uno degli script di gestione inseriti
sulla piattaforma (anche questo deve essere creato in precedenza, vedi
Gestione script) di nuovo da selezionare dal tendina Add to script run
con il pulsante Add to script run.
Per la gestione degli aggiornamenti delle macchine collegate al Fuss Server
si possono impostare dei job di aggiornamento usando la voce Gestione
Aggiornamenti dal menu delle operazioni di destra.
Questo porta nella pagina che elenca i lavori impostati, da cui è possibile
impostare un nuovo aggiornamento nella sezione Crea nuovo aggiornamento,
indicandone un nome nella casella di testo e cliccando sull’adiacente pulsante
Crea, che ci porterà nella pagina di impostazione dello stesso.
Dalla pagina si potrà selezionare il tipo di aggiornamento dalla casella Tipo
aggiornamento (con le due possibilità Aggiornamento pacchetti e
Aggiornamento distribuzione che corrispondono all’esecuzione di apt-getupgrade e apt-getdist-upgrade) e selezionare le macchine da inserire
nell’aggiornamento o singolarmente dalla casella Aggiungi host o per cluster
dalla casella Aggiungi gruppo.
Finanto che non si inserisce almeno una macchina nell’aggiornamento non
compare il pulsante verde Programma che consente di programmare
l’operazione, che invece può essere cancellata in qualunque momento con il
pulsante rosso Elimina. Una volta inserita una macchina nell’aggiornamento
questa apparirà nella lista sulla destra, affiancata da un pulsante Rimuovi
che consente di toglierla dall’aggiornamento.
Quando si è finito di inserire le macchine volute nell’aggiornamento lo si
potrà programmare con il pulsante Programma, da quel momento non sarà più
modificabile.
Dalla pagina principale di Octonet si clicchi in basso a destra
sulla voce GestoreScript .
Ci si trova nella pagina con la Listadegliscripts .
Si clicchi sul pulsante Programma posto a destra dello script prescelto.
Dopo aver assegnato un Nome si clicchi sul pulsante Creaunanuovaesecuzione .
Si clicchi sul nome dell’Esecuzione appena creata.
A questo punto si devono aggiungere gli hosts o i gruppi (cluster)
inserendoli negli appositi campi e cliccando volta per volta sul
pulsante Conferma .
Infine si lanci lo script cliccando sul pulsante nero Programma . Si
tenga presente che che lo script non viene lanciato istantaneamente ma
in genere passano alcuni minuti.
Terminata l’esecuzione, essa può essere eliminata cliccando sul tasto
rosso Elimina.
Tramite la voce Rete → Filtro Web nella barra laterale si accede
alla pagina di gestione dei filtri sui contenuti per la navigazione,
abilitandone il relativo menù nella barra superiore.
Le voci di menù presenti corrispondono ai file di configurazione del
programma che gestisce le regole di navigazione, documentati in
dettaglio nell’apposita sezione e2guardian (filtro contenuti)
della guida.
Le varie pagine contengono un elenco di voci, per ciascuna delle quali è
disponibile il campo Descrizione tramite il quale fornire dei commenti
sulla voce e sul motivo per cui è stata inserita.
La prima voce del menù, allowed_sites permette di gestire l’elenco di
domini ai quali è sempre consentito accedere, indipendentemente da divieti
imposti.
Il file corrispondente è /etc/fuss-server/content-filter-allowed-sites.
banned_extensions è un elenco di estensioni di file ai quali è
proibito l’accesso.
Il file corrispondente è /etc/dansguardian/lists/bannedextensionlist.
banned_sites è un’elenco di domini ai quali l’accesso è sempre proibito.
Il file corrispondente è /etc/dansguardian/lists/bannedsitelist.
Ed infine, config permette di modificare la configurazione di
dansguardian stesso; in questo caso il campo Descrizione contiene il
valore del parametro di configurazione corrispondente.
Il file corrispondente è /etc/dansguardian/dansguardianf1.conf.
I campi delle pagine appena viste sono modificabili, oppure svuotabili
premendo il tasto x rosso corrispondente; nuove voci possono essere
aggiunte nelle cinque righe vuote presenti in fondo alla pagina.
Perché le modifiche vengano scritte sui file di configurazione è poi
necessario premere il tasto Salva, e alla fine riavviare il servizio
dalla pagina principale di questa sezione perché diventino attive.
Tramite la voce Rete → Firewall nella barra laterale si accede alla
pagina di gestione del firewall, abilitandone il relativo menù nella
barra superiore.
Le voci di menù presenti corrispondono ai file di configurazione del
programma che gestisce le regole di navigazione, documentati in
dettaglio nell’apposita sezione Firewall
della guida.
Le varie pagine contengono un elenco di voci, per ciascuna delle quali è
disponibile il campo Descrizione tramite il quale fornire dei commenti
sulla voce e sul motivo per cui è stata inserita.
Host senza accesso corrisponde al file
/etc/fuss-server/firewall-denied-lan-hosts
Host con accesso completo corrisponde al file
/etc/fuss-server/firewall-allowed-lan-hosts
Destinazioni consentite corrisponde al file
/etc/fuss-server/firewall-allowed-wan-hosts
Servizi consentiti corrisponde al file
/etc/fuss-server/firewall-allowed-wan-services
Servizi offerti all’esterno corrisponde al file
/etc/fuss-server/firewall-external-services
Host/servizi consentiti corrisponde al file
/etc/fuss-server/firewall-allowed-wan-host-services
Nota
Eventuali regole iptables custom non possono essere configurate da
OctoNet ma solo modificando sul server il file
/etc/fuss-server/firewall-custom-rules (con le dovute
attenzioni) riavviando subito dopo il firewall (si faccia
riferimento alla sezione Firewall).
I campi delle pagine appena viste sono modificabili, oppure svuotabili
premendo il tasto x rosso corrispondente; nuove voci possono essere
aggiunte nelle due righe vuote presenti in fondo alla pagina.
Perché le modifiche vengano scritte sui file di configurazione è poi
necessario premere il tasto Salva, e alla fine riavviare il servizio
dalla pagina principale di questa sezione perché diventino attive.
La sezione Rete → Stampanti di rete permette di gestire le stampanti
condivise.
La pagina principale della sezione presenta l’elenco delle stampanti
disponibili (ovvero «code di stampa»), con link alla relativa pagina di
configurazione, ed un pulsante che permette di raggiungere la pagina di
configurazione di CUPS, il servizio di gestione delle stampanti.
L’accesso a CUPS è consentito a root, oppure agli utenti del gruppo
lpadmin.
Avvertimento
Se si sta accedendo ad OctoNet da un computer diverso dal server,
tramite tunnel SSH, il link Configura stampanti e code punterà
all’interfaccia CUPS della macchina da cui si sta accedendo (se
installato) e non del server.
Per accedere all’interfaccia CUPS del server si può creare un secondo
tunnel ssh col comando:
sshsshuser@proxy-L13631:localhost:631
e dopo aver aperto Configura stampanti e code correggere
manualmente l’indirizzo perché punti a http://localhost:13631/
Nella pagina di modifica di una coda di stampa si trova l’elenco degli
host della rete locale abilitati ad accedere, con la possibilità di
rimuovere host individuali dall’elenco, aggiungerne (Aggiungi host alla
coda) oppure aggiungere con un click solo tutti gli host facenti parte
di un cluster (Aggiungi gruppo di host alla coda).
Per aggiungere una nuova stampante è innanzitutto necessario
configurarla su CUPS: dall’interfaccia relativa selezionare CUPS for
Administrators → Adding Printers and Classes:
Quindi premere il tasto Add Printer nella sezione Printers,
autenticandosi con un utente che sia nel gruppo lpadmin sul server.
Si otterrà una pagina con la scelta di che tipo di stampante
aggiungere; nel caso siano già state trovate stampanti locali o di rete
queste verranno presentate in Local Printers o Discovered Network
Printers rispettivamente:
Selezionando una stampante che sia stata già riconosciuta, verranno
richieste un nome (che non può contenere i caratteri /, # né
spazio), una descrizione ed una posizione fisica da visualizzare agli
utenti; inoltre viene richiesto se condividere la stampante (Share This
Printer):
Premendo su Continue si raggiunge la schermata successiva, in cui si
seleziona il driver da usare per la stampante indicando dapprima il
produttore:
e, dopo aver premuto Continue il modello:
Premendo Add Printer la stampante viene aggiunta e si viene portati ad
una pagina dove è possibile cambiare le sue impostazioni di default:
A questo punto si può ricaricare la pagina delle stampanti di rete di
octonet, dove sarà apparsa la stampante appena aggiunta:
E tramite Modifica Host si possono abilitare host ad usarla,
completando così la configurazione della nuova stampante:
Ad esempio, con smbclient da riga di comando, installato su un
fuss-client, si possono elencare le share disponibili sul server (e
visibili all’utente in uso) con:
$ smbclient -L proxy
e ci si può collegare con:
$ smbclient \\\\proxy\\<nome della share>
usare ls per vedere i file presenti, quit per uscire, help
per vedere gli altri comandi disponibili.
Per una gestione ordinata delle home si consiglia di organizzare
l’albero delle home separando secondo la gerarchia:
plesso o ordine di scuola;
docenti o alunni;
classe (solo per gli alunni).
Ad esempio le home dei docenti di una scuola media potranno essere in:
/home/media/docenti/
Gli alunni di una classe della primaria (poniamo 2c) saranno invece ad
esempio in:
/home/primaria/alunni/classe-2c-ele
Per facilitare la gestione delle classi, come ad esempio eliminare
agevolmente le classi in uscita, si raccomanda di attribuire un gruppo
secondario corrispondente. Nel caso precedente gli alunni
apparterrebbero quindi al gruppo 2c-ele.
Naturalmente si possono scegliere denominazioni di classi e gruppi
diversi, purchè siano coerenti ed omogenee nello stesso plesso.
L’esecuzione dello script prevede che, come auspicabile, tutti gli
alunni di uno stesso plesso appartengano allo stesso gruppo
primario. Diversamente bisognerà adattarlo alla situazione specifica o
lanciarlo, ad esempio, per gruppi più piccoli.
L’anno successivo chiaramente le classi ed i gruppi cambieranno (ad
esempio la classe classe-2c-ele diventerà classe-3c-ele ed il
gruppo 2c-ele diventerà 3c-ele.
La procedura di spostamento viene affidata ad uno script e richiede solo
una particolare attenzione nel predisporre i due file csv letti dallo
script stesso.
Ovviamente si raccomanda di analizzare bene lo script per capire
esattamente quello che esegue. In caso di dubbi rivolgersi a
info@fuss.bz.it:
#! /bin/bash
# Creiamo innanzitutto una copia di ldap
# LDAP save
slapcat -l ldap-dump.ldif
### LDAP restore in caso di problemi
#systemctl stop slapd
#echo "Restoring LDAP"
#rm -rf /var/lib/ldap/*
#slapadd < $BASE/ldap-dump.ldif
#chown openldap:openldap /var/lib/ldap/*
#systemctl start slapd
# Decommentare le seguenti due righe e si commenti la successiva se
# si intende procedere in modo interattivo
#echo "Qual è il gruppo primario degli utenti da spostare?"
#read GRUPPO_PRIMARIO
#Sostituire ad alunni-ele il gruppo primario degli alunni delle
# classi da spostare
GRUPPO_PRIMARIO=alunni-ele
echo "Gruppo primario: $GRUPPO_PRIMARIO"
MEMBRI=`members -p $GRUPPO_PRIMARIO`
echo "Membri: $MEMBRI"
# Nella seguente parte dello script viene letto il file csv con il
# nome vecchio e quello nuovo della classe. Le classi in uscita
# vengono spostate in classi inesistenti (ad esempio IV media, VI
# elementare o superiore)
# Viene effettuato un controllo per evitare che una classe
# sovrascriva l'altra se il csv è stato elaborato male, ma si rischia
# di spostare solo una parte delle classi.
# In questo caso è preferibile ripristinare la situazione iniziale,
# sistemare il file csv e riclanciare lo script.
while IFS=, read -r OLDHOME NEWHOME
do
if [ ! -d "$NEWHOME" ]
then
echo $NEWHOME
mv $OLDHOME $NEWHOME
else
echo "Controlla l'ordine delle classi nel csv!"
exit
fi
done < classi_mapping.csv
# Con il codice seguente si effettua lo stesso spostamento delle
# classi nell'albero ldap; in caso di errori si esegua il restore di
# ldap commentato ad inizio script
declare -A classi; while IFS=, read -r OLDHOME NEWHOME ; do classi[$OLDHOME]=$NEWHOME ; done < classi_mapping.csv
for i in `members -p $GRUPPO_PRIMARIO`
do
home=`smbldap-usershow $i |grep homeDirectory|awk '{print $2}'`
echo $home
home_tr=${home/"/"$i/}
echo $home_tr
home_mod=${classi[$home_tr]}
echo $home_mod
smbldap-usermod -d $home_mod"/"$i $i
done
# Infine, se esistono gruppi_classe, col seguente comando è possibile
# aggiornarli da un anno all'altro leggendo i dati da un csv.
# !!! Attenzione!!! Per rinominare un gruppo è necessario che il
# nuovo gruppo non esista già, per cui il file csv va eventualmente
# preparato con numeri decrescenti dall'alto in basso!
while IFS=, read -r OLDGROUP NEWGROUP ; do smbldap-groupmod -n $NEWGROUP $OLDGROUP; done < group_mapping.csv
Ecco un esempio di csv (classi_mapping.csv) per lo spostamento delle
classi.
Come si può vedere il csv è formato da due colonne separate da una virgola:
la colonna di sinistra contiene le classi «vecchie» e quella di destra
le classi «nuove»;
si noti che le classi sono in ordine decrescente dal basso all’alto;
si presti particolare cura nella preparazione del csv:
Il seguente file (group_mapping.csv) è un esempio di csv per lo
spostamento degli alunni delle classi da un gruppo a quello successivo.
Viene letto nella stessa maniera di quello precedente. Se il gruppo
nuovo esiste già, lo spostamento non avviene, per cui si deve sempre
procedere in ordine decrescente dall’alto al basso, accertandosi che i
gruppi più alti (nel nostro caso classe-6…) non esistano, ed
eventualmente eliminarli.
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.
Si tratteranno in questa sezione una serie di casi speciali per
l’installazione del Fuss Server, non coperti dall’installazione ordinaria
vista nella sezione Installazione di FUSS server tradizionale
A volte è possibile che nell’installazione non venga riconosciuto il
controller RAID del server (o che questo sia in realtà un fake raid) e che quindi sia
necessario usare i dischi come singoli senza la configurazione RAID del
BIOS. Questo ad esempio è quanto successo con un server Fujitsu PRIMERGY TX1320
M1 con 2 hard disk da 1 Tb ciascuno in RAID1 (mirroring).
Occorre in questo caso fare in modo tramite il BIOS del controller RAID che
gli HD siano semplicemente nello stato «READY» ed eventualmente nel BIOS del
server (se possibile) disattivare il Controller_RAID.
Occorre pertanto, nel caso del Fujitsu PRIMERGY TX1320 M1, entrare nel BIOS
all’avvio con F2, dopo di che dal BIOS eseguire i seguenti passi:
Selezionare Advanced
Selezionare SATA Configuration
Selezionare SATA Mode [AHCI MODE]
Premere F4 (Save and Exit) oppure selezionare da menù «Save and Exit»
Una volta avviata la macchina con il CD/DVD/Chiavetta USB di
installazione di Debian Buster (si prenda l’ultima versione
disponibile) ed arrivati alla schermata di
«Partizionamento dei dischi» si proceda selezionando «Manuale».
Comparirà l’elenco dei dischi (in genere sda e sdb), e al di sotto di
ciascuno di essi, se sono presenti, quella delle eventuali partizioni.
Che le partizioni siano presenti o meno occorrerà comunque posizionarsi sulla
riga che elenca il disco e selezionarlo con invio, cosa che porterà alla
richiesta di creare una nuova tabella delle partizioni, cui occorre rispondere
di si (se vi sono partizioni preesistenti saranno cancellate).
A questo punto selezionando la voce «SPAZIO LIBERO» che comparirà sotto al
disco si potrà procedere al partizionamento premendo invio, e scegliendo «Crea
una nuova partizione».
Verrà poi chiesta la dimensione della stessa. La prima partizione servirà per
installarvi il RAID1 che ospiterà /boot e le sue dimensioni possono essere
fra i 512 Mb ed 1Gb, per cui inseriremo ad esempio «1 Gb», verranno poi
chiesti: il tipo della partizione e va scelto «Primaria», la posizione della
nuova partizione e va scelto «Inizio», ed infine le modalità di uso.
Qui premendo invio sul valore di default (in genere «File system ext4
con Journaling») occorre selezionare nel menu seguente «Volume fisico
per il RAID», e ottenuta la scelta posizonarsi in fondo alla schermata
su «Impostazione della partizione completata» e premere invio.
La sequenza per la prima partizione pertanto è:
Posizionarsi sul disco (es: sda )
Creare una nuova tabella delle partizioni vuota su questo dispositivo? <Si>
Posizionarsi sullo spazio libero
Creare una nuova partizione
1 GB
Primaria;
Inizio;
Usare come: Volume fisico per il RAID
Impostazioni della Partizione completata
L’operazione va ripetuta in maniera analoga per creare una seconda
partizione sullo spazio libero restante, lo si dovrà di nuovo
selezionare sulla riga successiva, e ripetere le stesse operazioni della
volta precedente accettando stavolta la dimensione proposta per la
partizione (e riselezionando la nuova partizione come primaria, rispetto
al default presentato di logica), si avrà pertanto la sequenza:
Posizionarsi sullo spazio libero
Creare una nuova partizione
999 GB (accettare quanto proposto)
Primaria;
Inizio;
Usare come: Volume fisico per il RAID
Impostazioni della Partizione completata
Una volta completato il partizionamento del primo disco le operazioni
dovranno essere ripetute sul secondo disco (ad esempio sdb), avendo cura
di indicare esattamente le stesse dimensioni: è sufficiente indicare le
stesse per la prima partizione, la seconda con il default prende tutto
il resto del disco e sarà uguale in caso di dischi identici (eventuali
piccole differenze in caso di dischi diversi lasceranno inutilizzata la
parte eccedente di quello più grande).
Una volta completato il partizionamento, come illustrato nella figura
seguente, si potrà passare alla configurazione del RAID software
selezionando la seconda voce del menu.
Verrà richiesto di scrivere i cambiamenti sui dischi, e poi si potrà passare
alla configurazione del raid scegliendo «Creare un device multidisk», e poi il
tipo di raid, che deve essere RAID1.
Verranno poi chiesti il numero di device attivi (accettare il default di 2) e
quello dei device di riserva (spare, accettare il default di 0), dopo di che
si potranno selezionare i dispositivi che compongono il RAID scegliendo la
prima partizione di entrambi i dischi:
Si avrà pertanto la sequenza:
Alla richiesta «Scrivere i cambiamenti sui dispositivi di memorizzazione e
configurare il RAID?» selezionare «Si»
Selezionare «Creare un device multidisk (MD)»
Selezionare RAID1 dal menu seguente
Alla richiesta «Numero device attivi per l’array RAID1:» lasciare il default
di 2
Alla richiesta «Numero dei device spare per l’array RAID1:» lasciare il
default di 0
Alla richiesta Device attivi per l’array RAID1 selezionare /dev/sda1 e
/dev/sdb1
Si dovrà poi ripetere la sequenza per creare il secondo RAID1 che sarà usato
per LVM, ripetendo le scelte precedenti e selezionando alla fine le due
partizioni restanti.
La seconda sequenza sarà pertanto:
Selezionare «Creare un device multidisk (MD)»
Selezionare RAID1 dal menu seguente
Alla richiesta «Numero device attivi per l’array RAID1:» lasciare il default
di 2
Alla richiesta «Numero dei device spare per l’array RAID1:» lasciare il
default di 0
Alla richiesta Device attivi per l’array RAID1 selezionare /dev/sda2 e
/dev/sdb2
Una volta fatto questo l’impostazione del RAID1 è completa e la si potrà
terminare selezionando la relativa opzione:
Una volta finita la configurazione del RAID dovrà essere configurato LVM per
usare il device md1 su cui abbiamo concentrato la gran parte dello spazio
disco, dalla schermata principale che a questo punto sarà la seguente si dovrà
scegliere «Configurare il Logical Volume Manager» e accettare di mantenere
l’attuale partizionamento:
A questo punto di avrà accesso al menu di configurazione di LVM, il primo
passo è creare un gruppo di volumi, scegliendo la relativa opzione, ed
inserire il relativo nome(ad esempio vg):
infine occorrerà scegliere il dipositivo (il volume fisico) su cui appoggiarsi
per i dati, che nel nostro caso è /dev/md1 (si deve selezionare solo
questo):
La sequenza di azione è pertanto
Scegliere dal menu «Creare nuovo gruppo di volumi»
Impostare il nome del gruppo di volumi (es. vg)
Selezionare il dispositivo /dev/md1
A questo punto si potrà passare alla creazione dei Volumi Logici, ne
serviranno 2, uno per la swap ed uno per la radice, che chiameremo
rispettivamente root e swap. Dal menu di configurazione di LVM si
dovrà pertanto scegliere «Creare volume logico»:
verrà presentata la scelta di quale Volume Group usare, bloccato sull’unico
disponibile, vg, creato in precedenza, proseguendo si potrà inserire il
nome del volume logico e la relativa dimensione. Le dimensioni consigliate
sono una dimensione pari ad un quarto della RAM (ma senza andare oltre i 4G)
per swap, ed una dimensione fra i 30 ed i 50G per root.
I passi sono pertanto i seguenti, da ripetere due volte, prima per la swap e
poi per radice:
Scegliere dal menu «Creare volume logico»
Accettare il default per il gruppo di volumi
Alla richiesta «Nome del volume logico» inserire il nome (prima swap, poi
root)
Inserire le dimensioni scelte (es. prima 4G, poi 50G)
Completate le richieste si avrà la schermata del menù analoga alla seguente
(con un volume fisico, un gruppo di volumi e due volumi logici) da cui si
potrà chiudere la configurazione scegliendo «Termina», o verificare le scelte
scegliendo «Mostra i dettagli di configurazione».
Completare il partizionamento e la formattazione del disco
Terminata la configurazione di LVM si dovrà completare la configurazione dei
dischi indicando come formattare i due volumi logici appena creati, e come
formattare il primo RAID1 (/dev/md0) che verrà usato per /boot.
Nel caso della swap si dovrà configurare la stessa selezionando il relativo
volume logico come nell’immagine seguente:
una volta scelto il volume si tornerà al menu che ci richiede come usare lo
stesso, e stavolta occorrerà scegliere «area di swap». Nel caso della swap,
che non deve essere montata, questo è tutto.
L’operazione va ripetuta per formattare il filesystem della radice, di nuovo
va scelto il relativo volume logico:
e stavolta nel «Come usare» occorrerà selezionare «File system ext4 con
journaling», a questo punto ci verrà presentata anche la scelta del «Punto di
mount» e si dovrà scegliere la radice:
La stessa operazione deve essere ripetuta selezionando il dispositivo «RAID1
dispositivo n° 0» (vedi immagine seguente) e poi scegliendo ancora di usare
come «File system ext4 con journaling» ma selezionando /boot nel «Punto di
mount».
Riepilogando i passi sono:
Selezionare il volume logico LV swap
In «Usare come:» scegliere «area di swap»
Concludere su «Impostazioni della partizione completata»
Selezionare il volume logico LV root
In «Usare come:» scegliere «File system ext4 con journaling»
In «Punto di Mount:» scegliere «/ - il file system root»
Concludere su «Impostazioni della partizione completata»
Selezionare il RAID1 dispositivo n° 0
In «Usare come:» scegliere «File system ext4 con journaling»
In «Punto di Mount:» scegliere «/boot - file del boot loader»
Concludere su «Impostazioni della partizione completata»
Una volta completati questi passi si dovrebbe avere una configurazione analoga
a quella illustrata nella immagine seguente:
e si potrà proseguire scegliendo «Terminare il partizionamento e scrivere le
modifiche sul disco» e confermando sulla successiva schermata:
A questo punto si potrà proseguire con il resto dell’installazione.
La schermata finale richiede l’installazione di Grub, si scelga di installare
sul primo disco, come illustrato nella figura seguente:
Terminata la procedura e l’installazione del server, si deve riavviare senza
CD per verificare la ripartenza della macchina. A questo punto occorre poi
assicurarsi che Grub sia installato su tutte e due i dischi, cosa da fare con
i comandi:
grub-install/dev/sdagrub-install/dev/sdb
(è importante che Grub sia installato su entrambi i dischi, altrimenti in caso
di rottura del primo la macchina non ripartirà).
Da terminale si può controllare lo stato del RAID con il comando seguente, che
se eseguito poco dopo l’installazione mostrerà il progressivo della
sincronizzazione dei dischi:
local-utente@appiano:~$ cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda2[0] sdb2[1]
976130880 blocks super 1.2 [2/2] [UU]
[==========>..........] resync = 53.3% (520999104/976130880) finish=140.1min speed=54122K/sec
md0 : active raid1 sda1[0] sdb1[1]
498368 blocks super 1.2 [2/2] [UU]
una volta completata la sincronizzazione si avrà qualcosa del tipo:
local-utente@appiano:~$ cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda2[0] sdb2[1]
976130880 blocks super 1.2 [2/2] [UU]
md0 : active raid1 sda1[0] sdb1[1]
498368 blocks super 1.2 [2/2] [UU]
Questa procedura si applicava alle macchine per le quali non viene
riconosciuto il controller RAID (ad esempio i server Fujitsu PRIMERGY
TX1320 M1). Dato che l’installer di Proxmox non supporta il RAID
software occorrerà usare quello di Debian, e poi passare a Proxmox una
volta installata Debian. Per gli altri casi si applica la procedura
illustrata nella sezione Installazione diretta di Proxmox.
Viene descritta nel dettaglio l’installazione della versione 6.x di
proxmox basata su Debian Buster; sulle macchine nuove non dovrebbe più
servire, ma nel caso può essere utile consultare anche
https://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_11_Bullseye
per verificare eventuali aggiustamenti per la versione attuale.
L’installazione è quella ordinaria di un sistema base Debian, ma ci sono delle
accortezze da seguire per quanto riguarda la configurazione della rete ed il
partizionamento dei dischi.
La rete deve essere configurata con IP statico (dovrà comunque essere
riconfigurata in seguito da dentro Proxmox). Se si dispone di un solo IP
pubblico e si è dietro un NAT (si presuppone che l’accesso ad internet in tal
caso sia gestito da un router) l’IP della rete interna su cui vengono
reindirizzati i pacchetti provenienti dall’esterno deve essere lasciato al
fuss-server (se si vuole la raggiungibilità dello stesso da remoto). Si usi
pertanto un altro IP nella rete interna usata dal router.
Se per esempio il router ha IP interno 192.168.112.1 ed usa la rete
192.168.112.0/24 e redirige tutto il traffico dall’esterno sull’IP
192.168.112.2, quest’ultimo dovrà essere usato sulla macchina virtuale del
Fuss Server, e non si potrà usare per l’installazione. Pertanto, assumendo che
si sia messo sullo stesso tratto di rete la prima interfaccia del server (si
assume sia eth0) nell’installazione si potrà usare un qualunque altro IP
libero della rete, ad esempio 192.168.112.102.
Per il partizionamento dei dischi occorre installare sul RAID software
usando LVM, per potersi trovare nella stessa situazione in cui ci si
troverebbe con l’installazione di Proxmox su un RAID hardware. Questa
parte della procedura è descritta in dettaglio nella sezione
Installazione di Debian su RAID software a cui si rimanda.
La procedura prevede l’installazione con una /boot separata (installata
direttamente sul primo RAID1, posto su /dev/md0) con tutto il resto su un
volume LVM (installato sul secondo RAID1, posto su /dev/md1). Le
dimensioni delle varie partizioni e volumi logici pertanto sono le seguenti,
illustrate anche nella pagina citata:
un primo disco RAID1 per /boot dell’ordine di 1Gb
un secondo disco RAID1 come volume fisico di LVM con tutto il resto dello
spazio disco
un volume logico di swap dell’ordine di un quarto della RAM (ma non superare
i 4G)
un volume logico per /root dell’ordine di 30/50G a seconda che si
preveda o meno di installare anche l’interfaccia grafica.
nessun altro volume logico in fase di installazione (verranno creati dopo)
Con una installazione ordinaria si dovrebbe ottenere una configurazione già
funzionante, e potete passare direttamente alla sezione Preparazione
all’installazione di Proxmox, ma alcuni possibili interventi di correzione
post-installazione di Debian sono i seguenti:
Cambiare le password di root e dell’utente locale creato durante
l’installazione (es.local-fuss):
passwdrootpasswdlocal-fuss
Installare i firmware aggiuntivi, solo se necessario; copiare i firmware
(*.deb) nella cartella /opt ed installarli con:
cd/optdpkg-i*.deb
Modificare il file di configurazione delle schede di rete, questo passo è
da eseguire solo se la configurazione della rete eseguita in fase di
installazione all’interno dell’installer di Debian non ha funzionato
correttamente, per modificarlo si apra il file /etc/network/interfaces
con un editor qualunque, ad esempio eseguendo vim/etc/network/interfaces; un esempio del file è il seguente:
# This file describes the network interfaces available on your system# and how to activate them. For more information, see interfaces(5).# The loopback network interfaceautoloifaceloinetloopback# The primary network interface -- WANautoeth0ifaceeth0inetstaticaddress192.168.112.102netmask255.255.255.0network192.168.112.0broadcast192.168.112.255gateway192.168.112.1# dns-* options are implemented by the resolvconf package, if installed# dns-nameservers 208.67.222.222 208.67.220.220 8.8.8.8
verificare che il nome della scheda di rete (eth0 nell’esempio)
corrisponda alla scheda di rete rilevata sulla macchina dal comando
ipa.
se si è modificato il file di configurazione delle interfacce si esegua il
restart dei servizi di rete con:
servicenetworkingrestart
Modifiche del file dei repository (/etc/apt/sources.list); questo passo
è da eseguire solo se occorre inserire dei repository aggiuntivi o fare
correzioni rispetto a quelli installati di default dall’installer di Debian,
si apra il file con vim/etc/apt/sources.list un esempio del file è:
Modifiche alla impostazione dei DNS; questo passo è da eseguire solo se la
configurazione della rete eseguita in fase di installazione all’interno
dell’installer di Debian non ha funzionato correttamente, si apra il file
con vim/etc/resolv.conf, un possibile esempio (usando il server
di Cloudfare) è:
# Generated by NetworkManagernameserver1.1.1.1
e se ne può verificare subito il funzionamento ad esempio tramite ping ad
un server noto:
Una volta completata l’installazione base di Debian come descritto nella
sezione Installazione di base. ci sono una serie di passi preliminari da
effettuare prima di passare ad installare la piattaforma di Proxmox.
L’uso di network-manager interferisce con la configurazione delle
interfacce, deve essere sempre rimosso, e si verifichi che non venga
eventualmente reinstallato come dipendenza nel caso si installi una
interfaccia grafica.
Il pacchetto os-prober è inutile e potenzialmente pericoloso per qualunque
server, perché cerca di controllare il contenuto di tutti i dischi per
identificare quali sono i sistemi operativi da far partire in fase di boot,
compresi eventuali dischi di macchine virtuali, magari attivi o montati, per
cui può causare anche corruzioni pesanti dei filesystem.
Prima di passare all’installazione della piattaforma occorre assicurarsi che
l’indirizzo IP assegnato alla macchina sia risolto correttamente nell’hostname
della stessa, altrimenti il servizio di pve-manager non si avvierà,
bloccando l’installazione. Per questo occorre modificare il file
/etc/hosts installato di default da Debian con:
Nella seconda riga sostituire l’IP 127.0.1.1 con l’IP assegnato al
server, nel nostro caso 192.168.112.102
Nella seconda riga aggiungere alla fine il nome aggiuntivo pvelocalhost
un esempio del file, per la macchina server102 nel dominio dom102.bzn
è il seguente:
127.0.0.1localhost.localdomainlocalhost192.168.112.102server102.dom102.bznserver102pvelocalhost# The following lines are desirable for IPv6 capable hosts::1localhostip6-localhostip6-loopbackff02::1ip6-allnodesff02::2ip6-allrouters
Una volta fatto la modifica va verificata la risoluzione del nome locale; per
la verifica della risoluzione diretta occorre eseguire il comando:
getenthostsIP.DEL.MIO.SERVER
ad esempio con la configurazione precedente si deve avere:
Il kernel Debian non serve più, ma quando si fanno gli aggiornamenti scarica
anche quello, per cui si può rimuovere con (si verifichi quale versione è
effettivamente quella installata):
Una volta fatti i passi precedenti si può riavviare, per sicurezza si può
comunque eseguire un update-grub verificando che nella lista dei kernel
compaia quello di Proxmox (che ha il suffisso pve). Nel caso si sia
installato Debian su RAID1 software, si verifichi che grub sia installato
nel su entrambi i dischi, si può verificare la cosa (ed eventualmente
correggere l’installazione) eseguendo dpkg-reconfiguregrub-pc
selezionando i dispositivi dei due dischi.
Una volta riavviato il server ci si potrà collegare all’interfaccia web di
gestione con l’indirizzo:
si otterrà una finestra di accesso come la seguente:
deve essere selezionato come «Realm», come in figura, «Linux PAM standard
authentication» e ci si potrà collegare usando le credenziali dell’utente
root (inserendo root come username e la relativa password nel campo
«Password»).
Apparirà la seguente finestra di assenza di sottoscrizione, a cui si può dare
OK senza nessun problema.
Il passaggio da Debian a Proxmox lascia alcune configurazioni da sistemare
rispetto alla installazione diretta di quest’ultima. Questi i passi per
effettuare gli aggiustamenti necessari.
Riconfigurare l’interfaccia di rete principale per l’uso del bridge
Ci si colleghi dall’interfaccia web e si acceda alla sezione di configurazione
della rete con le seguenti azioni:
Cliccare sul Nodo (es.»server102») nel primo pannello
Cliccare su «Network» nel secondo pannello
ottenendo la schermata seguente:
Dalla sezione di configurazione della rete dovremo eliminare la configurazione
di eth0, che verrà poi sostituita da quella di vmbr0, con le seguenti
azioni:
Doppio click su eth0
Eliminare tutti i campi contenuti e premere su «OK»
la finestra dovrà risultare come la seguente:
salvando la configurazione della rete risulterà la seguente:
A questo punto possiamo passare a creare il bridge vmbr0, si prema sul
pulsante «Create» e dal menu si selezioni «Linux Bridge», verrà proposta una
interfaccia di configurazione in cui occorrerà riempire i campi:
IP address: mettere lo stesso indirizzo che si era usato per eth0
Subnet mask: mettere la stessa che si era usata per eth0
Gateway: mettere lo stesso indirizzo che si era usato per eth0
(quello del router)
Bridge ports: mettere eth0
un esempio di configurazione è riportato nella immagine seguente:
per attivare le nuove configurazioni occorre riavviare il server, lo si può
fare direttamente dal pulsante «Restart».
Creare il Logical Volume del pool di dati per lo storage thin-lvm (local-lvm)
Il primo passo è verificare con vgdisplay quanto spazio disco libero è
presente sul volume group di LVM (vg se si sono seguite le istruzioni
precedenti):
Verificato lo spazio disponibile si crei il volume logico data per il pool;
è prudente lasciarsi un polmone di spazio disco libero per eventuali
estensioni per cui non prenderemo tutto lo spazio disponibile. Nel caso il
comando:
lvcreate-L715G-ndatavg
creerà un volume da 715 Gb, a questo punto si potrà marcare il nuovo volume
come pool per il thin provisioning con il comando:
lvconvert--typethin-poolvg/data
Avvertimento
data è il nome del logical volume per il pool, si può usare
un nome qualunque ma questo è quello usato di default
dall’installer di Proxmox. Invece vg è del volume group
che si è usato negli esempi illustrati nella sezione
Installazione di Debian su RAID software , nel caso dell’installer di
Proxmox questo è in genere pve.
Predisposto il volume logico per il thin provisioning dall’interfaccia di
Proxmox (Datacenter->Storage->Add->LVM-Thin) si aggiunga un nuovo storage,
verranno richiesti in una finestra:
ID (usare local-lvm per coerenza con il default dell’installer di Proxmox)
Volume group: selezionare dal menù a tendina (o scrivere direttamente quello
usato, ad esempio vg
Thin pool: scrivere data o selezionarlo dal menù a tendina (comparirà
dopo aver impostato il volume group)
Non è necessario per il funzionamento, ma si può installare un Ambiente
Desktop (xfce4) con un Display Manager (lightdm) e Terminali più evoluti di
quelli di serie con il comando:
Per i server dove viene riconosciuto il controller RAID si può
installare direttamente la piattaforma Proxmox, si può scaricare una
immagine ISO scrivibile anche su chiavetta. L’immagine è disponibile a
partire dalla pagina:
1. Scelta della ripartizione dello spazio disco sull’installer
In fase di installazione di Proxmox dall’immagine ISO occorre scegliere
la ripartizione dello spazio disco. Questo viene fatto nella schermata
Target Harddisk (la seconda, subito dopo aver accettato la licenza); si
selezionino come valori:
swapsize 4 (4G swap)
maxroot 30 (30G di radice, contiene solo il sistema)
maxvz - (in questo modo tutto il resto del disco sarà inserito
nel thin-pool di LVM)
minfree 50 (lasciamo un polmone di 50G)
Attenzione
con questa scelta lo storage locale (marcato local,
associato alla directory /var/lib/vz) avrà a disposizione solo lo
spazio disco della radice, che è sufficiente per tenere le immagini iso
dei CD per le installazioni, tutto lo spazio non assegnato
esplicitamente viene lasciato per l’installazione di macchine virtuali.
Se si vogliono eseguire dei dump delle macchine virtuali sul disco
locale (i dump potrebbero essere eseguiti su NAS via NFS, ovviamente con
prestazioni nettamente inferiori), occorre invece aumentare il valore
del precedente parametro minfree, per poter poi creare un ulteriore
volume logico su cui creare un filesystem da dedicare i dump (le
dimensioni dovranno corrispondere allo spazio che si prevede di usare
per le macchine virtali).
La configurazione della rete che viene effettuata dall’installer di
Proxomox sulla immagine ISO è comunque statica, anche quando l’indirizzo
IP viene ottenuto da un server DHCP, in tal caso occorre sincerarsi che
l’IP che si va ad usare sia fuori dal range di un eventuale DHCP, si
verifichi per non creare possibili futuri conflitti di IP. E’
preferibile effettuare una impostazione manuale, ma la configurazione si
può comunque cambiare in un secondo momento.
Per la scelta dell’IP vale quanto detto anche al riguardo
dell’installazione di Debian; se si dispone di un solo IP pubblico e si
è dietro un NAT (si presuppone che l’accesso ad internet in tal caso sia
gestito da un router) l’IP della rete interna su cui vengono
reindirizzati i pacchetti provenienti dall’esterno deve essere lasciato
al Fuss Server (se si vuole la raggiungibilità dello stesso da remoto).
Si usi pertanto un altro IP nella rete interna.
L’installazione diretta di Proxmox configura in
/etc/apt/sources.list.d/pve-enterprise.list il repository
“enterprise” che richiede una sottoscrizione al loro contratto di
supporto. Questa non ci serve pertanto si può cancellare questo file,
oppure commentarne il contenuto (basta apporre un # all’unica riga
che contiene).
Occorrerà poi aggiungere il repository “community” eseguendo il
comando:
In questa pagina si dettagliano tutti i passi da far per installare il
Fuss Server su Proxmox, che sono indipendenti dal modo con cui è
installato quest’ultimo, che lo si sia fatto con l’installer, o che lo
si sia fatto installando prima Debian e passando poi a Proxmox.
Indicazioni generali sul collegamento all’interfaccia web
Tutte le volte che si deve fare una operazione dall’interfaccia di
gestione via web di Proxmox ci si dovrà collegare all’indirizzo:
e si otterrà una finestra di accesso come la seguente:
deve essere selezionato come “Realm” dal menu “Linux PAM standard
authentication” e ci si potrà collegare usando le credenziali
dell’utente root, inserendo root nel campo “Username” e la
relativa password nel campo “Password”.
Una volta autenticati apparirà la seguente finestra di avviso per
l’assenza di sottoscrizione, a cui si può dare OK senza nessun problema.
Su Proxmox 4.4 la sincronizzazione del tempo viene eseguita da
systemd-timesyncd, la cui configurazione è mantenuta in
/etc/systemd/timesyncd.conf, che di default è vuoto per cui vengono
utilizzati i server NTP del pool Debian.
Se la macchina ha accesso ad Internet non è necessario nessun intervento
ulteriore, altrimenti occorrerà modificare il file per indicare a quale
server NTP rivolgersi (ad esempio ad un server NTP sulla rete interna,
che potrebbe essere fornito ad esempio dal router).
In tal caso occorrerà inserire nel file suddetto un contenuto del tipo:
[Time]Servers=IP.DEL.SERVER.NTP
Alternativamente si può installare direttamente il servizio NTP sulla
macchina con:
apt-getinstallntp
Di nuovo per una sincronizzazione corretta occorre impostare l’accesso
ad un server NTP di riferimento, per farlo si deve:
aprire il file di configurazione di ntp (/etc/ntp.conf) ad
esempio con vim/etc/ntp.conf
commentare le voci server esistenti e aggiungere l’indirizzo IP del
server che si può raggiungere per sincronizzare data e ora
Un esempio del contenuto che si può modificare è il seguente:
Se la sincronizzazione di default con systemd-timesyncd non sta
funzionando si deve intervenire manualmente. Per verificare che
l’orologio sia sincronizzato (e verificare al contempo che il server NTP
indicato sia raggiungibile) si possono eseguire i seguenti comandi:
servicentpstopntpdatetempo.ien.it# sincronizza orologio al clock dell'hwhwclock--systohcservicentpstartdate
Nell’installazione di Proxmox (o in quella di Debian) viene configurata
soltanto la prima interfaccia di rete. Il Fuss Server ne usa almeno una
seconda per la rete locale (supporremo sia eth1) ed eventualmente
una terza per il captive portal (supporremo sia eth2).
L’installazione le lascia non configurate e assumeremo questo come punto
di partenza.
Per poterle utilizzare dalle macchine virtuali occorre configurare un
corrispondente bridge (sarà rispettivamente vmbr1 e vmbr2. Per
farlo ci si colleghi all’interfaccia web, e si acceda alla sezione di
configurazione della rete con le seguenti azioni:
Cliccare sul Nodo (es.“server102”) nel primo pannello
Cliccare su “Network” nel secondo pannello
A questo punti si prema sul pulsante “Create” e dal menu si selezioni
“Linux Bridge”, verrà proposta una finestra di configurazione in cui il
solo campo che occorre impostare è “Bridge ports” in cui inserire il
nome della relativa interfaccia (ad esempio per vmbr1 si metterà
eth1 per la rete interna, per vmbr2 si metterà eth2 per il
captive portal).
Nel caso della configurazione dell’interfaccia del captive portal non è
opportuno configurare un indirizzo, ma si è rivelata necessaria una ulteriore
configurazione specifica dell’interfaccia ethernet ad esso dedicata, per
evitare rallentamenti in upload che si manifestano con alcune interfacce. Per
questo motivo occorre disabilitare nell’interfaccia di rete le funzionalità di
«generic segmentation offload» e «TCP segmentation offload». Questo si fa
manualmente con il comando:
ethtool-Keth2gsooffgroofftsooff
continuando a supporre che l’interfaccia dedicata al Captive Portal sia la
eth2; si noti che la configurazione si applica all’interfaccia, non al
bridge. Per rendere permanente la configurazione il comando può essere
impostato aggiungendo sotto /etc/network/if-up.d/ uno script cp-iface
che lo esegua, con un contenuto del tipo:
#!/bin/sh
# disable GRO, GSO and TSO from captive portal interface,
# to avoid upload slowdown
ETHTOOL=/sbin/ethtool
test -x $ETHTOOL || exit 0
[ "$IFACE" != "eth2" ] || exit 0
$ETHTOOL -K eth2 gso off gro off tso off
Per la configurazione dell’interfaccia della rete interna se si vuole
raggiungere la macchina Proxmox dalla stessa occorrerà dare un indirizzo
IP anche al bridge, avendo cura di inserirlo al di fuori del range che
poi si utilizzerà per il DHCP del Fuss Server (ed ovviamente diverso da
quello che assegneremo al Fuss Server stesso). In tal caso i campi da
riempire sono:
IP address : mettere l’indirizzo desiderato
Subnet mask : mettere la subnet mask che si userà sulla rete interna
Gateway : deve essere lasciato vuoto
Bridge ports : mettere eth1
Un esempio è riportato in figura, la configurazione si finalizza
premendo “Create”.
Per applicare la nuova configurazione della rete la macchina deve essere
riavviata (si può farlo direttamente usando il pulsante “Restart”
dell’interfaccia web).
Caricare sul server le immagini ISO per l’installazione delle macchine virtuali
Il caricamento può essere fatto attraverso un download diretto sul
server (ad esempio con wget) o con la copia diretta del file nella
directory /var/lib/vz/template/iso. I file in questa directory
devono essere immagini ISO di CD/DVD di installazione.
Nel caso del Fuss Server si deve usare la più aggiornata che si scarica
dal seguente indirizzo:
(ad esempio “fuss-server-jessie-amd64-201705221525.iso”)
Qualora si abbia l’immagine sul proprio PC la si potrà caricare
direttamente dall’interfaccia web, sullo storage “local”. Per farlo si
eseguano i seguenti passi:
dal menù di sinistra, cliccare su “local (server)”
dal menù laterale selezionare “Content”
dal menù centrale, cliccare su “Upload”
si otterrà la seguente schermata:
a questo punto cliccare “Select file” e scegliere la ISO scaricata (si
può anche caricare direttamente da un device esterno) ed una volta
selezionata si otterrà:
a questo punto si potrà cliccare su “Upload”, a caricamento terminato,
si visualizzerà la ISO caricata come in figura:
Creazione della macchina virtuale per il Fuss Server
La creazione si attiva cliccando sul tasto “Create VM” di colore azzurro
posto in alto a sinistra, cosa che farà comparire una finestra come
quella in figura:
che prevede l’esecuzione di una serie di impostazioni di valori divise
in sezioni, seguendo una successione di schermate navigabili avanti ed
indietro con i pulsanti “Next” e “Back”, ed identificate da una
etichetta in alto.
Sezione: “General”, inserire soltanto
VM ID: (si può accettare il default, 100)
Name: un nome identificativo (ad esempio fuss-server-01; si
consiglia l’uso dello stesso nome del fuss-server)
Sezione: “OS”
selezionare “Linux 4.X/3.X/2.6 Kernel”
Sezione: “CD/DVD”
espandere tendina “ISO image:”
Selezionare la ISO precedentemente caricata (ad esempio:
“fuss-server-jessie-amd64-201705221525.iso”)
Sezione: “Hard Disk”
Bus/Device = VirtIO
Storage = local-lvm
Disk size (GB)= dimensione del disco in GB, vedi istruzioni al punto
4.2
Format = Raw disk image (raw) (NON MODIFICABILE)
Cache = Default (No cache)
Sezione: “CPU”
Socket: pari al numero di processori della macchina, vedi istruzioni
al punto 4.2
Cores: 1
Sezione: “Memory”
Memory (MB) : RAM della macchina, scegliere in base alle
indicazioni del punto 4.2
Per il dimensionamento della memoria gli sviluppatori di Proxmox
suggeriscono di lasciare almeno 1G della RAM totale della macchina per
il sistema, si può allocare il rimanente per le macchine virtuali, per
il fuss-server le esigenze effettive possono variare a seconda del
numero di utenti che lo useranno.
La scelta della quantità di RAM dipende anche dall’eventuale uso della
macchina fisica per ospitare altre macchine virtuali. Una buona scelta
di partenza è impiegare dalla metà ai tre quarti del totale, lasciandosi
un polmone di risorse per aumentare la RAM in un secondo tempo (basterà
modificare il valore dall’interfaccia web e riavviare la macchina).
Per il dimensionamento della CPU si verifichi il numero di processori
della macchina e si lo si indichi come numero di cores (l’uso di socket
e cores è indifferente per le prestazioni, conta il totale prodotto dei
due valori, la possibilità di variarli è a favore di chi ha licenze
software per numero di socket, che non ci interessa).
Suggerimento
Per scoprire il numero di processori della macchina si può usare il
comando top, premere 1 per visualizzare le statistiche separate
per CPU e contare le righe relative presenti.
Per il dimensionamento del disco, occorre scegliere una dimensione
totale assegnata alle macchine virtuali compatibile con la dimensione
massima disponibile sul pool di spazio disco del volume logico data.
La situazione corrente si ottiene con il comando lvs; ad esempio:
In questo esempio la dimensione assegnata al pool (logical volume
data) è di 514,06 G, ed alla macchina virtuale 101 sono stati
assegnati 100G. Lo spazio è aumentabile a piacere (dall’interfaccia), ma
per evitare alla radice la possibilità di esaurire lo spazio su data
non si superi mai una assegnazione pari al 95% della dimensione del pool
(volume logico data).
Avvertimento
le percentuali Data% e Meta% fanno riferimento all’uso
effettivo, sicuramente inferiore a quello massimo teorico (nel caso
100/514 ~ 20%). L’uso del pool consente il cosidetto overcommit,
cioè allocare più spazio disco di quanto effettivamente disponibile,
una situazione da evitare assolutamente. Infatti allocando per le
macchine virtuali più spazio disco di quello disponibile, se poi
questo viene esaurito, si ottiene una disastrosa perdita di dati.
Pertanto quando si crea il fuss-server, posto che non si preveda di
creare nessun’altra macchina virtuale in seguito, sarà sufficiente usare
un valore inferiore ai 95% della dimensione (nel caso precedente
514,06g) disponibili su data. Si ricordi che ridurre lo spazio disco
allocato in eccesso all’inizio ad una macchina è sempre più complicato
che non estenderlo quando risulti essere poco. Se nel volume group è
ancora disponibile spazio disco (lo sarà se lo si è lasciato in fase di
installazione tenendosi un “polmone” come consigliato) è comunque
possibile allargare data con il comando:
lvextend-L+XXg/dev/pve/data
e poi eventualmente utilizzare lo spazio in più ottenuto.
Una volta create la macchina virtuale, comparirà nel panello a destra,
per avviarla, ed avere al contempo l’accesso alla console, si possono
seguire i seguenti passi:
Selezionare la VM, ad esempio “100(fuss-server-01)”
Selezionare in alto a destra il tasto “>__Console”
La gran parte delle opzioni di installazione del fuss-server sono già
preimpostate nell’immagine ISO, la sola scelta significativa da fare in
fase di installazione è il partizionamento del disco (virtuale)
assegnato allo stesso.
Nella scelta predefinita dopo aver selezionato il disco viene proposto
direttamente il suo partizionamento. La scelta più sicura, per evitare
problemi di riempimento della radice, è usare filesystem separati per
/home, /var, /tmp. Questo però con il partizionamento
diretto rende meno flessibile la eventuale riallocazione dello spazio
disco.
Si tenga presente infatti che anche avendo disponibile spazio disco nel
virtualizzatore per poter allargare il disco della macchina virtuale,
l’allargamento avverrebbe sul “fondo” pertanto sarebbe facile
ridimensionare soltanto l’ultima partizione (nel caso la /home, che
pur essendo quella più probabile, non è detto sia davvero quella che ha
bisogno dello spazio disco aggiuntivo).
Per questo si suggerisce, per avere maggiore flessibilità, al costo di
una leggera perdita di prestazioni in I/O, di installare usando LVM.
Questo però significa che una volta eseguita la scelta precedente,
occorrerà “tornare indietro” riselezionando “partizionamento guidato”:
e poi selezionando “guidato, usa l’intero disco e imposta LVM”:
ed a questo punto di dovrà ripetere la scelta del disco e dell’uso dei
filesystem separati, e confermare la configurazione di LVM:
ed infine confermare prima le modifiche del disco:
e poi la formattazione finale:
A questo dopo un eventuale allargamento del disco della macchina
virtuale sarà sufficiente allargare la partizione finale (che sarà
/dev/vda5, logica) che ospita il volume fisico di LVM, estendere
quest’ultimo con pvresize, ed estendere poi il filesystem che si
preferisce con resize2fs (se si è usato il default di ext4).
Proxmox fornisce anche un suo sistema di gestione dei firewall per
l’host per le macchine virtuali, ma il fuss-server ha già la sua
gestione del firewall interna, pertanto il firewall di Proxmox non deve
essere abilitato, perché andrebbe ad interferire.
Per proteggere il sistema della macchina fisica è sufficiente installare
un semplice script di firewall che limiti gli accessi dalla rete interna
alle porte 22 e 8006. In ogni caso questa non deve essere visibile
direttamente da internet (l’indirizzo IP pubblico va reinoltrato, se
necessario, sul fuss-server), per cui la necessità di un firewall è meno
impellente.
Per le macchine che hanno controller RAID hardware si suggerisce di
installare alcuni tool esterni rispetto a Debian (si verifichino i
problemi di licenza) per monitorare lo stato degli stessi. Un sito che
contiene vari di questi programmi, in particolare per i controller meno
recenti e meno supportati, è http://hwraid.le-vert.net/. Occorrerà
comunque (i programmi citati comunicano via email) definire chi riceverà
le relative notifiche.
Si suggerisce inoltre di installare alcuni pacchetti ausiliari di
controllo ed utilità come:
Le immagini verranno salvate nella directory /var/clonezilla tramite
ssh, usando l’utente clonezilla con la password che si trova sul
server in /root/clonezilla_cred.txt (vedi Gestione utente/password
clonezilla)
Innanzitutto è necessario configurare i vari computer per fare boot da
rete (PXE): come fare dipende dai diversi BIOS presenti sui computer, ma
generalmente è sufficiente premere un tasto per ottenere il menù di boot
e selezionare una voce che nomini network, netboot o PXE.
A quel punto si otterrà il menù con le immagini disponibili sul server
FUSS: scegliere Clonezilla Live:
Selezionare l’opzione per creare l’immagine di un disco (notare che se
questa è la prima volta che si usa clonezilla verranno presentate solo
le due prime scelte, “savedisk” e “saveparts”: tutte le altre voci del
menù vengono abilitate quando sono già presenti delle immagini salvate):
Scegliere il nome da dare all’immagine (il default, oppure qualcosa di
comodo da ricordarsi)
Scegliere il disco da clonare; di solito l’unico presente:
Se la macchina è stata spenta correttamente, e se contiene partizioni
windows, scegliere di non effettuare un check del filesystem; può essere
utile invece fare tale check se la macchina contiene solo partizioni
linux ed un precedente tentativo di clone è fallito:
Selezionare di controllare che l’immagine salvata sia ripristinabile
(default):
Selezionare di non crittare l’immagine; non necessario dato che viene
salvata sul fuss-server:
Selezionare di riavviare il computer alla fine della copia:
Clonezilla mostrerà ora la riga di comando completa che verrà eseguita;
premere invio per continuare:
Viene chiesta conferma di procedere, scrivere y per continuare:
Clonezilla procederà alla creazione di un’immagine e al suo salvataggio
Fino ad annunciare di essere pronto al riavvio:
Infine, premere invio per permettere il riavvio (dato che clonezilla è
stato avviato via rete non è necessario rimuovere nessun disco):
L’utente clonezilla viene creato da fuss-servercreate che
genera una password casuale e la salva in /root/clonezilla_cred.txt
e lo aggiunge al gruppo sshaccess.
Con fuss-serverupgrade viene verificata (e nel caso ripristinata)
la presenza dell’utente e la sua appartenenza al gruppo. Per la
password, se il file /root/clonezilla_cred.txt non è presente ne
viene generata ed impostata una nuova.
Se si vuole cambiare password per l’utente clonezilla si può usare
semplicemente passwd, ma è cura di chi lo fa aggiornare
/root/clonezilla_cred.txt con la nuova password.
Installazioni nelle scuole della Provincia Autonoma di Bolzano
annotarsi il nome delle schede di rete, specialmente WAN;
dare un nome host alla macchina seguendo gli standard stabiliti (ad
esempio galilei-prox);
seguire gli standard anche per scegliere il nome di dominio (ad
esempio galilei.blz);
scegliere un nome utente locale (ad esempio local-fuss, con
password local-fuss);
inserire i server DNS 208.67.222.222 e 208.67.220.220;
eliminare eventuali partizioni pre-esistenti.
Per il partizionamento dei dischi si possono presentare due casi: se il
RAID nativo del server non viene riconosciuto (come avviene ad esempio
con Server Fujitsu TX 1320 M1 o 2 e HP Proliant Microserver Gen8) è
necessario seguire la procedura per l”Installazione di Debian su RAID software; in
caso contrario si può procedere direttamente con la guida
all”Installazione di Proxmox su Debian, usando il seguente schema di
partizionamento:
Una volta completata l’installazione e la configurazione di rete è un
buon momento per installare alcuni programmi aggiuntivi utili.
Se si vuole installare il pacchetto dei microcode per i processori intel
è necessario abilitare i repository non-free-firmware in
/etc/apt/sources.list:
debhttp://ftp.it.debian.org/debian/bookwormmaincontribnon-free-firmwaredeb-srchttp://ftp.it.debian.org/debian/bookwormmaincontribnon-free-firmwaredebhttp://security.debian.org/debian-securitybookworm/updatesmaincontribnon-free-firmwaredeb-srchttp://security.debian.org/debian-securitybookworm/updatesmaincontribnon-free-firmware# bookworm-updates, previously known as 'volatile'debhttp://ftp.it.debian.org/debian/bookworm-updatesmaincontribnon-free-firmwaredeb-srchttp://ftp.it.debian.org/debian/bookworm-updatesmaincontribnon-free-firmware
Se si presentano problemi all’avvio con il kernel proxmox installato
sopra (cosa che può succedere ad esempio con kernel 4.15.18.1) riavviare
il sistema e, nella schermata di GRUB, selezionare la modalità
Advanced / Avanzato per poi partire con un kernel più vecchio.
A questo punto si può cercare quale sia il kernel corrispondente alla
ISO proxmox più recente, su https://www.proxmox.com/en/downloads seguire
il link alle informazioni sull’iso e quindi quello alle release notes.
istruzioni da completare dopo aggiornamento allo stato attuale del
supporto per il server in questione
Con alcuni server HP ed alcuni controller RAID (HWRaid HP P222 P222i P420 o
P420i) si manifestano delle corruzioni dei dati quando viene attivata la
IOMMU, cosa che avviene di default per i kernel successivi alla versione
5.15-23. Si può controllare che controller sono presenti con il comando:
lspci|grep-iraid
sono indicati come possibilmente problematici quelli citati e lo Smart Array
Gen8.
Per rimediare al problema si deve disabilitare la funzionalità passando come
opzione di avvio del kernel intel_iommu=off; per questo occorre modificare
/etc/default/grub, aggiungendo la suddetta opzione alla definizione della
variabile GRUB_CMDLINE_LINUX_DEFAULT con:
Nel caso in cui sia necessario effettuare l’aggiornamento di Proxmox ad
una versione successiva, si possono seguire le guide del progetto,
scegliendo quella adeguata al proprio caso in
https://pve.proxmox.com/wiki/Category:Upgrade
Quando si effettua l’installazione del fuss-server, l’obiettivo è la
creazione di una VM che possa essere trasportata in un altro host
Proxmox, e quindi essere compatibile con le caratteristiche hardware del
server più piccolo presente nell’intero parco macchine.
Ospita il software e le immagini di Clonezilla
Calibrare la dimensione in base al numero e
dimensione delle immagini che si vogliono usare
/home
rimanente
Ricordando di usare LVM e che allargare le partizioni è più semplice che
non restringerle, per cui se si lascia dello spazio libero è meglio
sottostimare le dimensioni necessarie ed eventualmente allargarle in
futuro.
Prima di configurare il fuss-server con fuss-servercreate si può
creare un dump completo della VM, trasportabile su altri host Proxmox.
In questo modo per creare il FUSS server di altre scuole si può partire
da una macchina quasi ultimata sulla quale si possono sistemare le
caratteristiche specifiche per rete/utenza e completare la
configurazione.
Il device su cui si fa il dump non deve contenere dump preesistenti
di una VM con lo stesso ID di quella su cui stiamo operando.
Se così fosse, si possono raggruppare le directory relative al dump
preesistente (dump, images, private, templates) in
una nuova directory, ad esempio old_dumps.
Montare uno storage esterno
Collegare l’HD esterno al server (possibilmente ad una porta USB 3) e
assicurarsi che Proxmox monti il device (basta cliccarlo in Gestione
dei File).
Verificarne il punto di mount, che sarà tipo
/media/<nome_utente_loggato>/<etichetta_hd_esterno>.
Scollegare la ISO di fuss-server dal DVD della macchina virtuale
Cliccare sulla VM, su Hardaware, doppio click su CD/DVD Drive e
scegliere «Do not use any media»; confermare.
Aggiungere il disco esterno agli storage disponibili.
Cliccare su Datacenter, poi su Storage e poi su Add.
Scegliere Directory
Dare un nome (ID:) allo storage, ad esempio BACKUPSERVER.
Inserire nel campo Directory il punto di mount del disco esterno.
Effetuare il dump.
Assicurarsi che la macchina virtuale sia spenta.
Espandere il menù a tendina Content, cliccare su VZDump backup file
e poi sul tasto azzurro Add.
Cliccare sulla VM, su Backup e poi su Backup now.
Nel menù Storage selezionare quello appena aggiunto.
Nel menù Mode selezionare snapshot.
Lasciare selezionato il tipo di compressione LZO (fast).
Cliccare sul tasto azzurro Backup.
Il processo creerà un file denominato vzdump-quemu..........lzo
nella directory dump del disco esterno.
Scollegare il disco esterno.
Cliccare su Datacenter, Storage, sulla riga corrispondente al disco
esterno, quindi su Remove e confermare con Yes.
Quando qualcosa va storto, può essere necessario segnalare un bug
(Segnalazione) sul progetto opportuno di
https://work.fuss.bz.it/; prima di farlo è importante raccogliere
tutte le informazioni rilevanti per aiutare la diagnosi del problema.
Piuttosto che indicare «aggiornato alla data X», meglio indicare i
numeri di versione precisi del pacchetto (o pacchetti) che si sospetta
possano essere coinvolti nel problema, ottenendoli ad esempio con:
Per la diagnosi è importante registrare tutti i messaggi forniti da
ansible durante l’installazione, pertanto si riporti tutto quanto
stampato dal comando fin dall’inizio.
Se si è in console (fisica o di una macchina virtuale) si può salvare
tutto l’output del comando usando preventivamente il comando script, ad
esempio:
script<comando>...exit# da dare quando il comando finisce
dove <comando> sarà di volta in volta fuss-servercreate,
fuss-client-a o le loro varie varianti; questo salva tutto l’output
sul file typescript nella directory corrente.
Con la versione 7.x del fuss-server sono state introdotti dei criteri di
gestione delle credenziali di autenticazione per essere conformi ai
requisiti correnti dettati dalla normativa sulla privacy, in particolare
per quanto riguarda la complessità e la scadenza delle password.
Sono soggetti a tali requisiti soltanto i docenti (in quanto gli studenti non
trattano dati altrui). Pertanto si è utilizzato un valore specifico
dell’attributo multivalore unità operativa, ou (assegnabile ad ogni
utente) per distinguere studenti e docenti. In particolare questo dovrè essere
impostato secondo la seguente tabella:
Docenti
ou=docenti
Studenti
ou=studenti
Il sistema di gestione delle password coi comandi di sistema è stato
impostato usando la seguente riga di in /etc/pam.d/common-password:
che implica lunghezza minima di otto caratteri, non ripetizione di più
di tre caratteri nel cambio password, presenza di almeno tre fra le
quattro classi di caratteri: maiuscole, minuscole, numeri,
punteggiatura.
L’applicativo web per il cambio password consente di evitare queste
restrizioni ma si applica solo agli utenti che hanno attributo
ou=studenti.
Per la scadenza delle password questa viene impostata in fase di creazione di
un utente LDAP impostando un valore in giorni nell’attributo ShadowMax
dello stesso, lo stesso valore viene applicato. I default impostati dalla
configurazione del FUSS server non prevedono la scadenza delle password, in
quanto questa non è necessaria per la maggior parte degli utenti (che sono gli
studenti). In particolare questa non viene impostata se si usano i comandi del
pacchetto smbldap-tools. Qualora si debba intervenire manualmente
occorre usare lo script chage.py installato come gli altri sotto
/usr/share/fuss-server/scripts/, specificando un valore in giorni con
l’opzione -M.
Octofuss imposta automaticamente il valore della ou= corrispondente
ad un utente, sulla base dei gruppi cui questo appartiene. Se l’utente
viene messo in un gruppo secondario chiamato “docente” o
“docenti”, ottiene la ou=docenti. Se non si trova in questi
gruppi, allora ottiene la ou=studenti.
Allo stesso tempo per i docenti viene automaticamente impostato un valore di
scadenza della password di 90 giorni, come previsto dalla normativa della
privacy. Per gli studenti invece viene usato un default di 99999 giorni, che
implica la non scadenza della stessa.
Le politiche di accesso ad internet impostate da fuss-server sono:
Gli utenti non autenticati non possono navigare, con l’eccezione dei vari
repository di software che sono autorizzati per semplicità di installazione,
elencati nella ACL repository dentro /etc/squid3/squid.conf, più
quelli eventualmente aggiunti (funzionalità disponibile dalla versione
8.0.38 del fuss server) in /etc/squid3/squid-added-repo.conf.
Gli utenti autenticati escono solo se fanno parte del gruppo internet
(locale) del fuss-server (permesso internet dentro Octonet).
Nella configurazione del proxy è possibile restringere l’accesso alla rete
Internet in orario ristretto da lunedì a venerdì dalle 7.00 alle 22.00 ed il
sabato dalle 7.00 alle 14.00, per ottenere questa restrizione occorre
modificare la configurazione di Squid, sostituendo in
/etc/squid3/squid.conf la riga:
http_accessallowpasswordinternet
con la riga:
http_accessallowpasswordinternetorario
Gli accessi ai siti internet vengono registrati nei file di log del sistema.
La navigazione su Internet viene svolta in modalità protetta (usando il
filtro sui contenuti di Dansguardian/E2guardian). A partire dalla versione
8.0.38 del fuss-server questa restrizione viene disabilitata di default
sulla rete locale in quanto esiste già un filtro a monte della rete delle
scuole, si può riabilitare l’uso del filtro modificando la variabile
dans_exclude_localnet in fuss-server-defaults.yaml (vedi File dei
default del Fuss Server).
L’accesso ad internet è di default bloccata per le macchine Windows, lo
si può riabilitare modificando
la variabile proxy_win_exclude in fuss-server-defaults.yaml
(vedi file-default-fuss-server).
È importante eseguire tutte le verifiche indicate per essere sicuri che
il proxy funzioni veramente.
provare a navigare con un utente autorizzato (cioè inserito nel gruppo
internet) indicando correttamente username e password;
provare a navigare con un utente autorizzato indicando correttamente
username ma sbagliando la password;
provare a navigare con un utente non autorizzato (cioè non inserito nel
gruppo internet) indicando correttamente username e password;
provare a navigare con un utente autorizzato utilizzando le sue
credenziali corrette, poi provare a toglierlo dal gruppo internet e
verificare se il proxy lo blocca.
Si tenga presente che la rimozione o l’aggiunta al gruppo internet non
hanno effetto immediato. Se questa viene effettuate tramite Octonet o
octofussctl infatti il permesso deve essere propagato da
octofuss-client che può richiedere fino a 5 minuti, inoltre gli helpers
di Squid devono vedere i nuovi permessi (finché non terminano viene visto il
valore precedente) e occorre che la cache di nscd sia rinnovata.
Pertanto se si vuole essere sicuri che il permesso sia propagato subito
occorre (a partire dalla versione 8.0.42 di fuss-server) fare
restart del servizio propagate-net-perm (disponibile anche tra i
servizi riavviabili dall’interfaccia di Octonet).
Per le versioni precedenti i comandi equivalenti sono:
A partire dalla versione 8.0.48 e 10.0.28 del fuss-server sono stati
predisposti gli strumenti necessari ed una procedura che consente di
eseguire il dump di un server FUSS 8 e ripristinarlo su di un server
FUSS 10, per poter consentire il passaggio da FUSS 8 a FUSS 10
mantenendo la gran parte dei dati presenti sul server di partenza. Lo
stesso vale per il passaggio da FUSS 10 a FUSS 12.
Operazioni di dump sul server originario (FUSS 10)
La procedura prevede che si effettui un backup completo delle home degli
utenti sul server (che deve comprendere oltre a /home qualunque altra
directory in cui queste possono essere state inserite), da cui poi
ripristinare i dati. Si darà per scontato che questo sia stato fatto con il
programma fuss-backup e che il ripristino delle /home avvenga con
questo programma (il ripristino dei dati delle home può essere fatto in un
secondo tempo).
Il primo passo della procedura è eseguire lo script
/usr/share/fuss-server/scripts/fuss-dump.sh sul server di partenza (si
assume che sia un FUSS 8), questo creerà un file
fuss-server-dump-$DATA.tgz nella directory corrente con i dati necessari
al ripristino, che dovrà essere copiato a destinazione sul nuovo server (i
dati dell’archivio restano comunque salvati anche nel server originale sotto
/var/backups/fuss-dump).
Occorrerà poi installare il sistema operativo sul nuovo server, e configurarne
la rete; è opportuno usare lo stesso hostname del server precedente; cambiarlo
potrebbe infatti dare luogo ad inconvenienti relativi a nomi rimasti in cache
sui client, quindi è meglio mantenere sempre lo stesso hostname. Inoltre se
sul vecchio server si stanno usando le quote disco, occorrerà che queste siano
abilitate anche sul nuovo.
Avvertimento
La procedura di dump e quella di restore assume che le quote siano attive
al massimo su un solo filesystem, come normale su un fuss-server, questo
viene ricavato da /etc/fstab cercando le opzioni di montaggio
usrquota e grpquota, che devono essere attive su un solo filesystem
(non è necessario sia lo stesso fra macchina originale e nuova macchina).
Per poter utilizzare il ripristino occorre installare il nuovo server FUSS10
normalmente, con fuss-servercreate, mantenendo però identici il dominio,
la master password ed il workgroup. É opportuno mantenere anche la stessa rete
interna ed il range del DHCP, dato che alcuni dati (in particolare le
impostazioni del firewall e le reservation statiche) possono dipendere da
queste impostazioni.
Pertanto prima dell’esecuzione di fuss-servercreate è opportuno copiarsi
i dati della configurazione del server di partenza (il file
/etc/fuss-server/fuss-server.yaml, che viene comunque anche incluso
nell’archivo prodotto dallo script di dump come fuss-server.yaml.old) e
modificare soltanto le voci external_ifaces: e internal_ifaces: che
possono essere cambiate (come avviene nel passaggio da Jessie a Buster),
adattandole al nuovo server nel caso sia necessario.
Si possono comunque estrarre i dati dal dump che è un semplice tar compresso
con:
tar -xvzf fuss-server-dump-$DATA.tgz
ed il file di configurazione del fuss server precedente sarà in
fuss-dump/fuss-server.yaml.old.
Una volta completata la configurazione di base del fuss-server occorrerà
copiarvi il file con il dump dei dati, ed eseguire lo script di restore con:
lo script una volta scompattato l’archivio nella sottodirectory
fuss-dump (sovrascriverà eventuali file omonimi contenuti) fermerà tutti
i servizi, reimporterà i dati, e poi li riavvierà.
Dato che i dati di NFS/Kerberos possono risentire di caching da parte del
server (che gira nel kernel) può essere opportuno riavviare il server dopo
aver eseguito il restore.
A questo punto gli utenti e le configurazioni dei servizi saranno stati
reimportati, ma resterà da ripristinare il contenuto delle home degli utenti,
operazione da fare con le istruzioni date per l’uso di fuss-backup.
Avvertimento
Il nuovo server, essendo stato reinstallato, avrà delle chiavi SSH diverse
dal vecchio, pertanto collegandosi dai client si potranno avere degli
errori di mancato riconoscimento delle fingerprint SSH del server dovuti a
questo cambiamento. Occorrerà cancellare le vecchie chiavi ed accettare le
fingerprint delle nuove chiavi (si abbia cura di segnarsele in fase di
reinstallazione).
Come ultima nota, a partire dalla versione 8.0.50 (e 10.0.34) del fuss-server
il file con i default di configurazione
(/etc/fuss-server/fuss-server-defaults.yaml) non verrà inserito nel dump,
ma semplicemente copiato a fianco di fuss-server.yaml.old (come
fuss-server-defaults.yaml.old) nella directory fuss-dump, questo
perché nello sviluppo di FUSS 10 sono stati aggiunte alcune
ulteriori variabili di configurazioni non presenti con Fuss 8, la cui mancanza
causerebbe il fallimento di fuss-server ad una esecuzione successiva al
ripristino. Per questo motivo il file viene comunque salvato in modo da poter
verificare, e riapplicare, eventuali modifiche effettuate rispetto al default
installato dal pacchetto.
Avvertimento
Si tenga presente che la rimozione di fuss-server-defaults.yaml dai
file ripristinati totalmente avviene soltanto se si esegue fuss-dump.sh
nella versione installata con un fuss-server posteriore la 8.0.50, questo
dovrebbe essere sempre vero se si sono tenute aggiornate le macchine come
buona pratica, se questo non è avvenuto, il file sarà ancora presente e
sovrascriverà quello nuovo installato con fuss-servercreate. Se non si
è sicuri si salvi il file prima di eseguire il restore.
Aggiornare il server fuss e lanciare fuss-server upgrade:
aptupdateaptdist-upgradefuss-serverupgrade
Fare il dump della macchina Proxmox.
Se la scuola è dotata di rete WiFi con Captive Portal, scollegare la
scheda di rete o impostare una password al SSID dal controller. Dal
momento che dalla versione 12 l’autenticazione è gestita dagli AP,
se la rete viene lasciata aperta gli utenti possono navigare non
autenticati durante la procedura di upgrade.
Effettuare il restore dell’immagine cloud-init (da local) in Proxmox
Creare disco cloud-init: Hardware-->Add:
Parametri cloud-init: fare copy-paste dei parametri dalla VM del vecchio server FUSS.
Avviare la nuova VM.
Collegarsi via ssh:
sshroot@IP-FUSS-SERVER
Nota
La password di root della nuova immagine cloudinit è fuss; va cambiata subito.
Aggiornare i pacchetti:
aptupdate&&aptdist-upgrade
Copiare da Proxmox il file fuss-server-dump-yyyy-mm-dd.tgz e
scompattarlo in /root per poter accedere ai parametri di
fuss-server.yaml da inserire dopo aver lanciato fuss-servercreate:
Per avere i parametri fuss-server del vecchio server sotto mano:
catfuss-server.yaml.old
Lanciare la configurazione del fuss-server:
fuss-servercreate
Può darsi che /var/lib/dpkg/info/cups.postinst rallenti il task misc di ansible
(Install package cups, foomatic-db-compressed-ppds by apt). In tal caso stoppare il server cups:
systemctlstopcups
Fare il restore della configurazione del vecchio server FUSS:
Se invece le /home sono su di un disco separato rispetto alla
root /, potete riassegnare quel disco alla nuova VM sempre
usando DiskActions e ricordandovi di andare a riprendere dal
backup la riga per il mount della /home dal file /etc/fstab.
Non dimenticare di mantenere aggiornata la macchina Proxmox
assicurandosi sempre di avere il dump delle VM. Portarla almeno
alla versione 7 di Proxmox VE. Seguite le semplici istruzioni sul
wiki di Proxmox:
Dopo aver portato anche i client a FUSS 12, ricordare di resettare
le impostazioni di Xfce4 agli utenti usando lo script
/usr/share/fuss-server/scripts/home-cleanup. Editare lo script
aggiungendo alla variabile CLEAN_LIST il path
.config/xfce4/
Eseguire lo script una volta e rimuovere poi il path aggiunto al
file home-cleanup.
Prima di installare un’immagine di FUSS mediante Clonezilla (via PXE
boot o con chiavetta USB) è necessario accedere al menu di setup del
notebook con F2. Nella scheda Security impostare come prima cosa la
password di Supervisor premendo Enter su Set Supervisor Password.
Disabilitare poi la voce Secure Boot nella scheda Boot come mostrato
nella seguente immagine:
Dopo aver clonato l’immagine di FUSS e riavviato il notebook, si entri
nuovamente in setup con F2 riabilitando il Secure Boot.
Selezionare la voce Select an UEFI file as trusted for executing
percorrendo le cartelle del disco HDD1: <EFI>-><debian>.
Si scelga il file shimx64.efi premendo Enter ed inserendo nel
pop-up la descrizione di questa opzione di boot, p.es. fuss10
confermando con Yes.
Al termine salvare le modifiche premendo Exit Saving Changes nella
scheda Exit o semplicemente premendo F10 confermando al termine.
I portatili (HP ProBook 450 G5) presentano come unica risoluzione il
valore 1920x1080.
Il seguente codice aggiunge le risoluzioni del proiettore (o di un altro
dispositivo di output video) al portatile (interfaccia eDP-1 ) e
rende quindi possibile la specchiatura degli schermi .
for i in $(xrandr | awk '{print $1}' | grep "x")
do
if [ "$i" != "1920x1080" ]; then
xrandr --addmode eDP-1 $i
fi
done
Il codice va aggiunto allo script
/etc/fuss-client/display-setup-script/setDisplayResolution che
diventerà pertanto:
#!/bin/sh
for i in $(xrandr | awk '{print $1}' | grep "x")
do
if [ "$i" != "1920x1080" ]; then
xrandr --addmode eDP-1 $i
fi
done
HOSTNAME=$(/usr/bin/hostname)
autorandr --load $HOSTNAME || autorandr common || true
Una volta aggiunte le risoluzioni del proiettore, la seconda parte dello
script consente la specchiatura automatica dei due dispositivi già nella
finestra di login.
Gli scripts inseriti in /etc/fuss-client/display-setup-script
vengono infatti lanciati all’avvio di lightdm.
In alcuni modelli HP recenti, bootabili solo con UEFI, dopo
l’installazione dell’immagine Fuss10 il boot non va a buon fine ed
all’avvio appare un messaggio del tipo:
NOBOOTABLEDEVICE
Il problema è dovuto al fatto che UEFI non riesce a trovare il file EFI
automaticamente. Una soluzione può essere la seguente:
Riavviare la macchina e premere il tasto per il boot manuale (in genere F9)
Scegliere Bootfromfile e poi:
> PciRoot … > EFI > debian > grubx64.efi # se il Secure
Boot è disabilitato
> PciRoot … > EFI > debian > shimx64.efi # se il Secure
Boot è abilitato
Dopo l’avvio del sistema aprire una sessione terminale e lanciare:
efibootmgr
Il comando precedente elenca le opzioni di avvio disponibili e
l’ordine di avvio, come nell’esempio seguente
Tale notebook non è dotato di presa RJ45, pertanto per la connessione
alla rete è necessario dotarsi di un adattatore USB-RJ45. Tale
adattatore non viene riconosciuto dal BIOS per permettere un network
boot e consentire l’avvio di un’immagine di Clonezilla da un server
FUSS. E” necessario dotarsi di una chiavetta USB sulla quale va copiata
preventivamente un’immagine di Clonezilla.
Innanzitutto si rende necessario modificare le impostazioni del BIOS.
Dopo aver acceso il notebook, premere il tasto F2 per accedere al BIOS
(Phoenix SecureCore Technology Setup). Sotto la voce Security
accertarsi che Secure Boot sia Disabled. Sotto la voce Boot
cambiare Boot Mode in Legacy Support. Uscire salvando le modifiche
con F10. Il notebook verrà riavviato.
Dopo aver inserito una chiavetta USB avviabile con un’immagine di
Clonezilla (la versione usata per questa
guida è la 2.5.6-22), per la scelta del dispositivo di boot, premere
F12 e selezionare la voce USB HDD.
Dopo l’avvio, Clonezilla vi chiederà di selezionare la lingua
dell’interfaccia ed eventualmente di cambiare il layout della tastiera
da quello di default. Dopo questa prima impostazione verrà mostrata la
finestra Start Clonezilla nella quale va selezionata la voce omonima.
A seguire l’opzione device-image, ssh_server e dhcp. Il notebook
riceverà un indirizzo IP dal server FUSS e subito dopo si dovrà inserire
l’indirizzo IP del server (p.es. 192.168.0.1), la porta (tipicamente
22), l’account dell’utente (clonezilla), la cartella sul server
ove Clonezilla dovrà leggere l’immagine (tipicamente
/srv/clonezilla) e la password dell’utente clonezilla.
Dopo aver inserito la password, Clonezilla chiederà la modalità di
esecuzione: scegliere Beginner e poi restoredisk; verranno mostrate
le immagini disponibili sul server. Scegliere un’immagine di FUSS 9 a
64bit (di dimensione inferiore a 64 GB) che avrete preventivamente
caricato sul server FUSS nella cartella /srv/clonezilla. Confermare
il disco di destinazione sul notebook (mmcblk1) premendo Invio.
Scegliere se fare o meno un check dell’immagine prima del restore ed
infine scegliere l’azione da eseguire al termine (choose, reboot o
poweroff). Premere Invio e confermare con y due volte. Clonezilla
provvederà a copiare l’immagine indicando il tempo necessario per
concludere l’operazione.
Il microfono della webcam Logitech C920e è disattivato per impostazione predefinita e può essere attivato solo utilizzando il software proprietario Logi Tune (Windows, Mac OS).
Tuttavia uno script di Python scaricabile dal seguente link :
Le stampanti di una rete FUSS vengono gestite tramite OctoNet, come
descritto nella sezione Stampanti di rete della guida relativa.
Questa sezione descrive le procedure di installazione di alcuni modelli
di stampanti di recente produzione e per le quali la procedura di
installazione prevede passi aggiuntivi.
La versione di hplip presente sul server FUSS (Debian 8 «Jessie») è
la 3.14.16 che non prevede questo modello di stampante. Pertanto è
necessario installare hplip nella versione 3.16.11 presente nel
repository jessie-backports che va prima incluso nel file
/etc/apt/sources.list:
Aggiornare i pacchetti del server ed installare hplip da jessie-backports:
aptupdateapt-tjessie-backportsinstallhplip
Dopo esserci collegati al server via ssh in modalità X11 Forwarding con
ssh-XNOMESERVER), apriamo firefox connettendoci all’URL
http://localhost:631 al quale risponde l’interfaccia web di CUPS.
Si scelga Amministrazione - Aggiungi una stampante, seguendo i passi
come mostrato nei seguenti screenshot.
Si scelga innanzitutto l’opzione AppSocket/HP JetDirect premendo poi il
bottone Continua.
Indicare nel campo connessione socket://IP_DELLA_STAMPANTE:9100 dopo
aver assegnato alla stampante un IP statico.
Inserire nella schermata successiva Nome, Descrizione e Posizione
della stampante ed aggiungendo il flag di condivisione.
Scegliere la marca della stampante (Make)
ed a seguire il modello. Si scelga HP Officejet Pro 251dw che è il
nome del modello compatibile suggerito da HPLIP.
Verificare che il Media size sia correttamente impostato sul formato A4
ed infine, selezionando la voce Opzioni installate, indicare che il
Vassoio 2 è installato e premere il bottone Imposta le opzioni
predefinite.
Ora la stampante è correttamente configurata. Resta l’ultimo passo che è
quello di abilitare i client alla stampa, operazione che va fatta in
OctoNet come descritto nella sezione dedicata.
Dopo esserci collegati al server via ssh in modalità X11 Forwarding con
ssh-XNOMESERVER), apriamo firefox connettendoci all’URL
http://localhost:631 al quale risponde l’interfaccia web di CUPS.
In alternativa ci colleghiamo via ssh con il server aprendo un tunnel
con sshroot@NOMESERVER-L13631:localhost:631 e apriamo firefox
in sessione utente connettendoci all’URL http://localhost:13631 .
Si segue poi una procedura di installazione simile a quella della
stampante HP PageWide Pro 452dw
Si scelga Amministrazione-Aggiungiunastampante.
Si scelga innanzitutto l’opzione AppSocket/HPJetDirect premendo poi
il bottone Continua.
Indicare nel campo connessione socket://IP_DELLA_STAMPANTE:9100 dopo
aver assegnato alla stampante un IP statico.
Inserire nella schermata successiva Nome, Descrizione e Posizione
della stampante ed aggiungendo il flag di condivisione.
Scegliere la marca della stampante (Brother).
ed a seguire il modello: BrotherMFCL6900DWforCUPS .
Quindi selezionare la voce Opzioniinstallate e confermare cliccando
sul bottone Impostaleopzionipredefinite.
Infine abilitare i client alla stampa, operazione che va fatta in
OctoNet come descritto nella sezione dedicata.
Innanzitutto, è necessario installare SANE (che sta per Scanner Access
Now Easy, un popolare back-end per scanner Linux che consente di
utilizzare tutti i tipi di scanner diversi con tutti i tipi di app di
scansione. Puoi installarlo con il seguente comando:
sudoapt-getinstallsane
Crea una directory chiamata snapscan in /usr/share/sane
Testato con Olivetti dCOPIA 5000MF E Kyocera TASKALFA 4053ci
Il seguente tutorial permette di configurare i PC affinché si possa
stampare verso le stampanti in cui è stato configurato il Job accounting
(contabilità processi).
Il Job Accounting è una funzione offerta dai due modelli di cui sopra e
si attiva manualmente, tramite la tastiera della stampante oppure dalla
LAN, oppure tramite l’interfaccia Web della stampante, dopo averla
configurata con indirizzo IP.
Una volta attivata la funzione, vanno inseriti gli account (uno per
ciascun utente/reparto), costituiti ciascuno da un nome utente e da un
ID (numerico).
Questa operazione può eventualmente essere eseguita con un import di
massa, tramite file csv (link al file contenente le istruzioni
specifiche).
ATTENZIONE: durante l’installazione installate tutti i pacchetti,
soprattutto la contabilità.
Nel menù principale troverete tutte le stampanti presenti in rete,
anche di marche differenti.
Come mostrato qui sotto, cliccate col tasto destro del mouse sulla
stampante desiderata, poi su “Impostazioni di comunicazione” e
inserite username: Admin ; password: Admin
Inserimanto account (ID, cognome e quota di stampa) tramite fie csv
(vedi in fondo al presente tutorial come si crea il file csv)
Posizionate il mouse nella sezione contabilità e attivate la stampante
desiderata con tasto destro, verificando che il bollino
corrispondente, da rosso, diventi verde.
Cliccate col tasto destro del mouse sulla stampante desiderata e
selezionate “Imposta più dispositivi account”.
Dopo aver scelto il modello di stampante, selezionate Impostazioniaccount, Creadafile e infine cliccate su Sfoglia per
indirizzare il programma sul file *.csv .
Selezione file *.csv
Nella fotocopiatrice verranno creati gli account con le restrizioni scelte
Bisogna partire da una tabella di Libreoffice Calc, corrispondente al
modello che vedete sopra. La tabella dovrà contenere gli stessi 13
campi, con i rispettivi nomi, inseriti nella stessa posizione. Il file
*.csv deve essere prodotto scegliendo il formato DOS, con i
separatori , . (punto e virgola).
Configurazione per poter stampare dai client con job accounting locale impostato
Per permettere di stampare da PC con il JobAccountinglocaleimpostatosuOn è necessario «rimappare» l’utente sconosciuto su un utente locale.
La procedura è la seguente (per confermare le modifiche cliccare su Invia):
Si accede, anche da remoto, con l’utente amministratore, in genere Admin
Nella finestra di scorrimento a sinistra si selezione Impostazionidigestione
Innanzitutto si crea l’utente locale da associare a quello di rete sconosciuto,ad esempio con ID9999. Per semplicità gli possiamo attribuire lo stesso Nome utente: 9999
Si clicca su Impostazioni
Si clicca su Impostazioniautenticazione
Si spunta la voce Autorizza e poi si clicca su Impostazioniutentesconosciuto
Si clicca su Elencoaccount , si scorre fino a trovare l’utente 9999 e lo si spunta
A questo punto sarà possibile agli utenti stampare dai client, ma le stampe non verranno (per il momento) conteggiate, mentre verranno conteggiate le copie fatte direttamente sulla fotocopiatrice.
L’attuale distribuzione FUSS incorpora già i pacchetti necessari per il
funzionamento del lettore della tessera sanitaria o CPS/CNS (Carta
Nazionale/Provinciale dei Servizi) fornito dalla Provincia Autonoma di
Bolzano. Tali pacchetti, a titolo informativo, sono:
pcscdlibccidopenscpcsc-tools
Per autenticarsi nei siti Web per mezzo della tessera sanitaria bisogna
impostare (una sola volta) Firefox per l’utilizzo della libreria OpenSC
secondo la seguente procedura.
Aprire Firefox e andare in Menu -> Preferenze -> Privacy e
Sicurezza; in fondo alla pagina, sotto la voce Certificati
cliccare il bottone Dispositivi di sicurezza;
Cliccare il pulsante Carica;
Fornire nel campo Nome Modulo una descrizione, ad esempio «Carta
Nazionale dei Servizi»;
Per finire impostare il Nome file modulo cliccando su Sfoglia,
cercando e selezionando la libreria opensc-pkcs11.so nei seguenti
percorsi:
per le distribuzioni a 64 bit:
/usr/lib/x86_64-linux-gnu/opensc-pkcs11.so;
per le distribuzioni a 32 bit:
/usr/lib/i386-linux-gnu/opensc-pkcs11.so.
Installazione di lettore Carta d’identità elettronica
Il lettore NFC USB utilizzato per redigere la presente guida è il
modello ACR122UUSBNFC Reader dell’azienda Advanced Card Systems
Ltd (https://www.acs.com.hk/en/products/3/acr122u-usb-nfc-reader/)
ed è compatibile con i principali sistemi operativi (Linux, MacOS,
Windows, Android) con un costo che si aggira attorno ai 40 €.
Usare un pc standalone con il sistema operativo uguale o superiore a Fuss 10 (buster)
aggiornato e che esca diretto dal proxy; verificare che siano installati i pacchetti pcscd e pcsc-tools .
Nel caso si operi su un pc joinato alla rete fuss utilizzare un utentelocale (è sempre disponibile l’utente
local-fuss-user con password local-fuss-user)
Disattivare il modulo del kernel pn533_usb (che a cascata disabilita «nfc» e «pn533») creando il file /etc/modprobe.d/cie.conf contenente la riga:
blacklistpn533_usb
Scaricare il middleware del Ministero dell’Interno cliccando sul seguente link:
Avviare Firefox e accedere alla sezione Impostazioni del browser:
Selezionare la scheda PrivacyeSicurezza
Cliccare su Dispositividisicurezza
Cliccare su Carica e inserire le seguenti informazioni:
Nome modulo: CIE PKI
Nome file modulo: /usr/local/lib/libcie-pkcs11.so
Nota
Per fare in modo che il lettore venga letto correttamente, è
necessario che il lettore sia collegato prima dell’avvio di Firefox
(in caso contrario non viene avviato il servizio pcscd).
Questa modifica ha senso soltanto se lo storage per i dischi è di tipo
LVM-thin, qualora si stia usando uno storage di tipo LVM semplice la procedura
è inutile.
Se si è installato il FUSS server o una qualunque altra macchina virtuale
indicando come tipologia dell’hardware del disco VirtIO o VirtIO block
(dispositivo a blocchi virtuale) non sarà possibile possibile utilizzare il
comando fstrim per liberare l’occupazione di spazio disco da LVM. Questa
infatti è realizzata soltanto se disponibile il comando SCSI discard, che è
supportato solo dalla tipologia di disco VirtIO SCSI che è il default con
Proxmox 5.
Per effettuare il cambiamento occorre spegnere la macchina, se il suo
identificativo è 100 questo si fa a riga di comando con qmshutdown100
dopo di che si dovrà modificare manualmente il relativo file di
configurazione che è /etc/pve/qemu-server/100.conf. L’operazione deve
essere effettuata a macchina spenta.
Nel caso si sia configurata la macchina inizialmente con VirtIO block il
contenuto del file avrà come configurazione per l’identificazione del disco
qualcosa del tipo:
e comparirà nell’interfaccia web (selezionando la macchina e poi il menù
hardware) indicato come in figura:
Per poter riconfigurare la macchina per l’uso di VirtIO SCSI occorre
anzitutto sostituire virtio0 con scsi0 (si sta facendo l’ipotesi di un
solo disco virtuale, se sono più di uno l’operazione andrà ripetuta per tutti,
indicando con bootdisk quale deve essere usato come disco di avvio);
inoltre deve essere indicato il tipo di supporto SCSI con scsihw (se non
presente).
In sostanza il file di configurazione dovrà essere modificato per contenere
qualcosa del tipo:
Per precauzione comunque si tenga una copia dell’originale, in questo modo si
potrà tornare indietro in qualunque momento semplicemente ricopiando indietro
la copia e ripristinando il contenuto precedente.
Una volta eseguite le modifiche nell’interfaccia web il disco verrà mostrato
nella sezione hardware della macchina virtuale come:
e selezionandolo si potrà attivare l’uso del comando discard, con:
questa ultima operazione comunque si può effettuare anche direttamente in fase
di modifica, utilizzando come specificazione del disco:
scsi0:local-lvm:vm-100-disk-0,discard=on,size=32G
invece del valore precedente. A questo punto una volta riavviato il server si
potrà utilizzare fstrim.
Attualmente in varie scuole sono collegati ai server vari UPS di questo
tipo, senza un setup che permetta lo spegnimento automatico in caso di
una prolungata assenza di corrente elettrica.
Il setup è stato testato con collegamento USB su sistema operativo
Debian Stretch (9.4 – ProxMox 5.x).
I modelli di UPS utilizzati per il test sono i seguenti:
Il nome RIELLO è una scelta come un’altra. Per i Raptor si puo
mettere RAPTOR o qualsiasi altro nome.
Nota
Il parametro override.battery.charge.low=20 è quello su cui si
agisce per determinare a che stato di carica far eseguire lo
shutdown al sistema operativo. Se non indicato come nell’esempio il
default è il 10% ( si potrebbe aumentare il valore per garantire uno
shutdown sicuro).
Nota
Per RAPTOR il driver da mettere è usbhid-ups anziché riello_usb
Per BRAGA MORO il driver (compatibile) è blazer_usb
Con il comando upsc seguito dal nome dato all’UPS (nel file
ups.conf) possiamo monitorare lo stato dell’apparecchio. Ad esempio:
# upsc RIELLO
Possiamo per esempio vedere se l’UPS è alimentato dalla rete elettrica
(ups.status:OL) oppure sta prendendo energia dalla batteria
(ups.status:OBDISCHRG).
Creazione di un utente di monitoring (file /etc/nut/upsd.users)
Al termine della configurazione di ciascun modello, eseguire
all’occorrenza una calibrazione come indicato nella sezione omonima.
Riguardo all’utilizzo delle stesse, per una questione di uniformità
nelle diverse scuole, si conviene di utilizzare il software OpenBoard e
non prodotti proprietari forniti in dotazione con le stesse LIM.
ridenominare il file /usr/share/X11/xorg.conf.d/10-evdev.conf
aumentando il prefisso numerico in modo tale che sia superiore a
40 (quello del file 40-libinput.conf):
Se il computer collegato alla LIM è un notebook, nel file
/usr/share/X11/xorg.conf.d/90-evdev.conf commentare la sezione
«touchpad» lasciandola gestire a libinput.
riavviare l’X server:
systemctlrestartlightdm
Se necessario, procedere alla calibrazione della lavagna come illustrato
di seguito.
Non richiedono software aggiuntivo per la gestione dell’input. Deve
essere configurato correttamente il proiettore dal suo Menu.
I proiettori interattivi EpsonEB595Wi ed EB695Wi permettono
l’interattività attraverso:
apposite penne in dotazione (pen) basate su tecnologia a infrarossi
tocco con le dita (finger touch) basato su tecnologia laser
Per attivare la funzionalità pennainterattiva bisogna selezionare:
Selezionare l’impostazione ModoFunzion.Penna e premere il tasto
[Enter].
Selezionare ModalitàUbuntu e uscire.
Per attivare la funzionalità fingertouch bisogna selezionare:
Selezionare Imp.unitàditocco e premere il tasto [Enter].
Selezionare Alimentazione e premere il tasto [Enter].
Selezionare On e uscire.
Effettuare una calibrazione se necessario.
Per questa e altre configurazioni che dovessero essere necessarie
consultare il manuale:
Per questo modello si seguano gli stessi passi indicati per la LIM
SMART Board SB680 .
Se necessario, procedere alla calibrazione della lavagna come illustrato
di seguito.
NOTA: NON usare più i vecchi driver che erano scaricabili da:
Se non presente, installare il pacchetto xinput-calibrator
Lanciare come root l’applicativo:
xinput_calibrator--list
ed annotarsi l’ID (numerico) del proprio dispositivo di input (lavagna).
Importante individuare correttamente il device poiché potrebbero esserci
altri dispositivi di input (p.es. touchpad del notebook).
Lanciare poi di nuovo il comando xinput_calibrator con i seguenti parametri:
e procedere alla calibrazione. Al termine della calibrazione verrà
scritto il file sopra indicato il quale conterrà una configurazione
analoga alla seguente:
In caso di misclick detection durante la calibrazione, ridurre l’area di
proiezione sulla lavagna e rilanciare il comando di calibrazione.
Riavviare infine l’X server:
systemctlrestartlightdm
Specchiatura ottimale di due device video collegati allo stesso pc
Nota
Dalla distribuzione Fuss 10 la configurazione del server grafico Xserver non è più affidata al file xorg.conf che veniva inserito nella cartella /etc/X11/.
L’ultimo fuss-client installa su tutte le macchine il pacchetto
autorandr ed uno script arandr-setup che è stato messo in
/usr/sbin.
In molti casi autorandr è in grado di individuare automaticamente la
specchiatura ottimale. Nel caso non vi riesca o si voglia ottenere una
coppia di risoluzioni personalizzata si deve procedere nel seguente
modo.
Solo sulle macchine collegate a proiettori/LIM/monitor per le quali si
desidera, oppure è necessaria, una soluzione «personalizzata»:
ci si logga come root
si lancia lo script arandr-setup
si sceglie la risoluzione migliore «specchiata» su entrambi gli schermi
Il contenuto dello script arandr-setup è il seguente:
Lo script permette di creare una configurazione video «personalizzata»,
condivisa da tutti gli utenti. Se necessario, può essere successivamente
modificata rilanciando lo stesso script.
Riavviare il PC e verificare che la risoluzione sia quella scelta:
sia prima del login
sia dopo il login
Per evitare interferenze da parte di eventuali configurazioni fatte via
xfce4-display-settings e salvate in
~/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xml, lato server
è stato previsto un cron-job /etc/cron.d/home-cleanup per la
cancellazione periodica di displays.xml agli utenti.
Questa sezione comprende guide su argomenti vari di utilità nelle
scuole relativi ad installazioni per hardware particolari.
Configurazione del fuss-server per abilitare l’invio di posta
La spedizione diretta di messaggi di posta elettronica dalle macchine della
rete interna (LAN) del Fuss Server è disabilitata per motivi di sicurezza.
Qualora per esigenze specifiche (ad esempio l’uso della funzionalità di «scan
to mail» delle stampanti multifunzione), sia necessario consentire ad una
macchina o un apparato di inviare posta, si possono utilizzare le seguenti
istruzioni per potersi appoggiare al Fuss Server per l’invio.
Sul Fuss Server è infatti installato il server SMTP Postfix, che però è
configurato per accettare posta da inviare solo da localhost. La direttiva
mynetworks, che controlla quali macchine possono inviare posta passando
dal server, si trova nel file /etc/postfix/main.cf ed il suo valore di
default è il seguente:
Per consentire ad altre macchine o apparecchiature come una stampante
multifunzione di inviare posta occorre anzitutto avere l’indirizzo IP; si deve
inoltre avere cura di impostatalo in maniera statica in modo che non cambi ad
un eventuale riavvio della stampante.
Una volta che l’indirizzo IP sia noto, occorrerà aggiungerlo all’elenco di
quello consentiti da mynetworks. La direttiva, come dice il nome richiede
una lista di reti pertanto se si indica un solo IP occorrerà usare la
notazione CIDR aggiungendo il suffisso /32. L’elenco delle reti deve
essere fornito come lista separata da spazi, si può andare a capo e scriverlo
su più righe, avendo cura di iniziare ogni riga di estensione con degli
spazi.
Per esempio se si hanno stampanti multifunzione che utilizzano lo «scan to
mail» con indirizzi IP 192.168.0.10, 192.168.0.15, e 192.168.0.20
per consentirgli di spedire posta verso l’esterno passando dal Fuss Server
occorrerà modificare la precedente configurazione in:
e riavviare il servizio con servicepostfixrestart.
A questo punto si potrà configurare la stampante (o altro apparato) indicando
come server SMTP il fuss server stesso.
Nota
si consiglia per sicurezza di usare l’indirizzo IP del server, che
continuerà a funzionare anche qualora la stampante non sia in grado
di risolvere i nomi assegnati alle macchine sulla rete interna.
I CD-ROM vengono montati in automatico in /media/cdrom0.
Questo è dovuto al fatto che in /etc/fstab si trova la seguente riga:
/dev/sr0/media/cdrom0udf,iso9660user,noauto00
Per alcuni DVD didattici, come ad esempio i DVD della Zanichelli, questo
è un problema serio, perchè lo script che viene lanciato richiede
rigidamente che il DVD sia montato in /media/<nome-utente>.
Inoltre, il contenuto del CD non ha l’utente come proprietatrio, e tutti
i file e le directory sono assegnate a nobody:nogroup (cioè non sono
assegnati).
I DVD della Zanichelli della serie “Idee per insegnare con il
digitale” si possono vedere con la nostra distribuzione, a patto di
installare prima alcuni pacchetti, da cui dipende l’esecuzione del
programma.
Lo script che segue permette l’installazione dei pacchetti che servono:
I DVD-ROM vengono montati in automatico in /media/cdrom0 e di
default non sono eseguibili.
Questo è dovuto al fatto che in /etc/fstab si trova la seguente riga:
Per installare, entrare in /media/cdrom0 e lanciare l’eseguibile
setup-linux-x64 che apre il wizard di installazione.
Terminata l’installazione, cliccare su Finish nel Wizard e su Ok
nella finestra README. A questo punto si può smontare il DVD-ROM.
La visualizzare dei video dell’applicazione richiede adobe-flashplugin.
Fortunatamente durante l’installazione viene creata una sottocartella
nascosta (~/Oxford University Press/New Treetops
3a/.flash_installers/linux-x64/) che contiene alcuni pacchetti debian di
adobe-flashplugin.
Se è presente, rimuovere flashplayer-mozilla:
aptremoveflashplayer-mozilla
Installare uno dei pacchetti adobe-flashplugin (è stato testato il file
del comando che segue):
La cartella contenente le installazioni dai DVD-ROM può essere copiata
in una cartella condivisa dai docenti ed eventualmente dagli alunni.
Il proprietario della cartella è preferibile sia root per evitare
cancellazioni involontarie, mentre il gruppo proprietario deve avere
solo permessi di lettura ed esecuzione.
In alternativa si lascia permesso di lettura ed esecuzione a tutti.
Se si preferisce lanciare le applicazioni da scrivania si possono creare dei lanciatori:
1) Cliccare col tasto destro
2) Selezionare ``Crea avviatore``
3) Scegliere un nome ed il comando con l'accortezza di inserire i backslash prima degli spazi vuoti.
Ad esempio il comando per lanciare New Treetops 2a sarà::
~/Oxford\ University\ Press/New\ Treetops\ 2a/linux-x64/oup
sostituendo alla tilde ~ il percorso completo della home dell'utente o della cartella condivisa.
L’offerta di salvataggio delle credenziali proxy si presenta in modo
imprevedibile e difficilmente replicabile; a volte si verifica
cancellando la cartella ./config/chromium e deselezionando Accessoautomatico in Impostazioni > Persone > Password.
Il modo più semplice e certo di ottenere il risultato è quello di
utilizzare un’estensione scaricabile da Webstore che memorizza le
credenziali proxy, che non verranno più richieste.
Ovviamente l’utente deve ricordarsi di aggiornarle quando la password
dell’account viene cambiata.
È una raccolta di giochi didattici per bambini della scuola
dell’obbligo. IPRASE, aderendo al progetto sperimentale nell’ambito
delle attività a cofinanziamento del Fondo Sociale Europeo sulla
Didattica assistita dalle nuove tecnologie, ha realizzato una
sperimentazione nella scuola dell’obbligo per tre anni consecutivi a
partire dall’anno scolastico 2001-2002. Obiettivo dell’iniziativa era
quello di fornire strumenti utili all’introduzione delle nuove
tecnologie nella didattica e nella prassi di lavoro quotidiana dei
docenti. La sperimentazione era rivolta a insegnanti ed alunni della
scuola elementare e della scuola media. Si proponeva l’utilizzo di
giochi ed eserciziari da fare al computer e riguardanti conoscenze ed
abilità nelle seguenti discipline: Italiano, Geografia, Matematica.
Nonostante siano trascorsi diversi anni, i giochi sono ancora molto
apprezzati. Il loro uso e pacchettizzazione è stato consentito.
Nel caso si sia scaricato in locale il pacchetto iprase_1.1.deb,
aggiungere l’architettura i386 e dopo apt update e apt dist-upgrade è
sufficiente lanciare:
La struttura di share Samba supportata da OctoNet permette solo una
lista piatta di condivisioni.
In casi particolari può essere necessaria una struttura gerarchica, come
ad esempio la seguente, in cui ci sono due cartelle, docenti e
alunni, e:
alla cartella docenti può accedere solo chi appartiene al gruppo
docenti;
la cartella alunni ha al suo interno le cartelle di classe a cui
possono accedere:
gli alunni appartenenti al gruppo classe, alla sola cartella della
loro classe;
i docenti, alle cartelle delle classi al cui gruppo appartengono
(come assegnazione di gruppo secondario da OctoNet).
In questo caso è necessario creare delle cartelle con i seguenti
permessi sul filesystem:
root@serverlnx:~# ls -l /home/SAMBA/pubblica/ -atotale16drwxrwsr-x4rootinsegnanti4096mar1215:41.drwxr-xr-x9rootroot4096mar1215:41..drwxrwsr-x5rootinsegnanti4096mar1215:41alunnidrwxrws---2rootinsegnanti4096mar1215:41docenti
(2775 per le directory cui devono accedere anche gli alunni
(/home/SAMBA/pubblica/ e /home/SAMBA/pubblica/alunni) e 2770
per docenti dove non devono arrivare); e:
root@serverlnx:~# ls -l /home/SAMBA/pubblica/alunni/totale12drwxrws---2root1a4096mar1215:411Adrwxrws---2root1b4096mar1215:411Bdrwxrws---2root1c4096mar1215:411C
(permessi 2770 e gruppo assegnato alla classe).
La configurazione di samba, da aggiungere in shares.conf sarà
allora:
Per aggiornare i fuss-client da una versione fuss alla successiva si può
usare il pacchetto fuss-cru. Le versioni 11.* di tale pacchetto
supportano l’aggiornamento da fuss 10 (buster) a fuss 11 (bullseye).
Avvertimento
Non è supportato l’aggiornamento di massa di un’aula da
fuss 11 a fuss 12 (bookworm), per il quale si raccomanda invece la
reinstallazione tramite fuss-fucc / clonezilla.
Innanzitutto assicurarsi di aver aggiornato fuss-server almeno
alla versione 10.0.45, e di aver lanciato fuss-serverupgrade:
questo è necessario per abilitare il caching dei pacchetti debian e
rendere più veloce l’aggiornamento.
Installare sul fuss-server il pacchetto fuss-cru; questo creerà
automaticamente un nuovo script in octonet.
aggiungere un’esecuzione dello script clientupgrade su octonet e
programmarla come di consueto.
Nota
Ricordarsi che octonet-client cerca gli script da eseguire al
boot ed ogni 5 minuti, e quindi l’esecuzione non è istantanea.
Configurazione per l’uso dell’agent di OCS inventory
L’agent può essere installato sulle macchine fisiche (quindi proxmox e i
client) all’interno della rete di una scuola. L’agent viene installato sui
client in maniera automatica da fuss-client (a partire dalla versione 11.0.22 per Fuss 11, 12.0.7 per Fuss 12) sia
in fase di collegamento del client al server, che in caso di aggiornamento.
È necessario che sia presente sul FUSS server la corretta configurazione, da
impostare con le modalità che illustreremo più avanti.
Per installarlo su Proxmox, o su qualunque altra macchina (Debian)
raggiungibile dal FUSS Server, occorrerà invece lanciare sullo stesso
il playbook ocs-agent-inst (installato in
/usr/share/fuss-server/) che viene fornito con il pacchetto
fuss-server a partire dalla versione 12.0.10 ma disponibile anche
per server FUSS 10.
Lo script è usabile anche per un client, ma è preferibile evitarne
l’uso, dato che la configurazione viene comunque generata da
fuss-client, in modo leggermente diverso, per essere aggiornabile
automaticamente da future versioni del pacchetto.
Per poter funzionare, l’agent ha bisogno di raggiungere via rete la macchina su
cui è ospitato il server di OCS inventory; questo viene contattato via web e
pertanto è necessario come primo passo abilitarne la raggiungibilità. Questa
operazione deve essere fatta preliminarmente sul FUSS server aggiungendo una
opportuna regola di accesso per il proxy, che consenta di arrivare al server
OCS inventory senza necessità di autenticazione; allo scopo basterà aggiungere
al file /etc/squid/squid-added-repo.conf la riga:
aclrepositoriesurl_regexocs.inventory.server
dove ocs.inventory.server è l’indirizzo del server OCS inventory che si
intende utilizzare. Dopo la modifica si dovrà eseguire un reload di
squid con systemctlreloadsquid.
Il passo successivo prevede di:
(se il certificato del server è autofirmato), scaricarlo dal
sito, nominarlo server.crt e copiarlo sul server FUSS nella
cartella /var/www/fuss-data-conf/
creare nella stessa cartella il file ocsinventory.yml (con
sintassi YAML) contenente i paramenti di configurazione da usare
successivamente sui client. Questo file verrà poi scaricato su
ciascun client al momento del lancio del fuss-client.
Il file prevede la definizione di tre variabili, le prime due sono
obbligatorie, la terza è opzionale:
ocs_tag : il tag che identifica la scuola, ad esempio il codice (LASIS) numerico della scuola
ocs_cert(opzionale) il nome del certificato da usare per
la connessione SSL (necessario solo se il server ha un
certificato autofirmato); se definita detto file deve essere
installato sotto /var/www/fuss-data-conf/ .
Un esempio di questo file è il seguente:
# template for ocsinventory variables needed for fuss-clientocs_server:https://ocs.inventory.server/ocsinventoryocs_tag:change-meocs_cert:server.crt
Per evitare che un aggiornamento eseguito su un client durante la
configurazione trovi un file ocsinventory.yml scritto
parzialmente, con conseguenti errori, si suggerisce di crearlo in un
altra directory, spostandolo a destinazione una volta completo
(insieme al file del certificato preventivamente caricato sul server,
quando necessario) con:
mvocsinventory.yml/var/www/fuss-data-conf/
Nota
si consiglia, se possibile, di configurare il server di OCS inventory
con un certificato valido (ad esempio usando Let’s Encrypt) evitando
l’uso di un certificato autofirmato; in tal caso la variabile
ocs_cert non è necessaria, come non lo è il certificato.
A questo punto, per l’installazione dell’agent è sufficiente eseguire
fuss-client. Il file di configurazione (ocsinventory.yml),
quando presente, viene scaricato nell’esecuzione del comando (sia
quando su usa -a o -H per collegare un nuovo client, che
quando si usa -U per un aggiornamento), e viene salvato in
/etc/fuss-client/. Quando tale file viene trovato, viene poi
eseguita la configurazione e l’installazione di
ocsinventory-agent. Se invece il file non viene trovato sul
server, il programma prosegue senza installare nulla.
Nel caso in cui ci si dimenticasse di copiare sul server FUSS il
certificato server.crt prima di aver lanciato il fuss-client,
si può correggere il problema (dopo aver copiato il certificato sul
server) rilanciando il comando fuss-client-U.
Installazione di ocs agent su una macchina generica (non joinata)
Per installare l’agent su una macchina generica si può invece
utilizzare il playbook ocs-agent-inst presente sul FUSS
server. Questo esegue l’installazione di ocsinventory-agent su una
macchina generica da indicare come parte dell’inventario Il comando
deve cioè essere eseguito sul FUSS server come:
avendo cura di mettere una virgola dopo l’indirizzo del client in modo
che venga riconosciuto come elenco di indirizzi e non come nome di file.
Si tenga presente che il playbook richiede l’accesso via SSH alla macchina
indicata; qualora non si abbia un accesso diretto con le chiavi, occorrerà richiedere
l’uso della password (di root) aggiungendo l’opzione -K.
Se si vuole installare l’agent su di un server FUSS, il comando da
eseguire è:
Questa sezione rappresenta una piccola vetrina di idee e proposte in
fase di incubazione che debbono essere ancora approfonditamente testate.
Hanno lo scopo di dare la possibilità
a chiunque abbia delle proposte, di vederle pubblicate dopo una prima
fase di approvazione da parte del team di progetto;
Proposta 1: Installazione di FUSS Server partendo da Debian Cloud upstream
Autore: Marco Marinello
Se si vuole installare velocemente un server virtualizzato
partendo da una versione aggiornata di Debian la scelta migliore è
sicuramente partire da un disco messo a disposizione direttamente da Debian.
Recandosi su https://cloud.debian.org/images/cloud/ è possibile vedere
un elenco delle immagini cloud disponibili. Scegliere
quella relativa alla corrente distro del server (buster al momento)
quindi la penultima voce, prima di daily, ovvero l’ultima stabile.
Fra i vari file elencati, copiare il link del generic-amd64-*.qcow2,
collegarsi al server Proxmox che lo dovrà ospitare e, dopo aver creato
la macchina virtuale, eseguire
cd/opt
wgethttps://cloud.debian.org/images/cloud/buster/20201023-432/debian-10-generic-amd64-20201023-432.qcow2
# Importa il disco sullo storage local-lvm per la macchina con ID 100
qmimportdisk100debian-10-generic-amd64-20201023-432.qcow2local-lvm
A questo punto rimuovere il vecchio disco (che era stato creato automaticamente
dal wizard) dalla VM attraverso la GUI di Proxmox e «collegare»
il nuovo. Si estenda il disco (solitamente il template consta di 2GB quindi
è consigliabile incrementare almeno di 48 per arrivare a 50GB di root) e se
ne aggiunga un secondo da usare poi per le home. Aggiungere una porta seriale,
le porte di rete necessarie ed un volume Cloud-Init.
Una volta opportunamente valorizzata la tab «Cloud-Init»
sarà sufficiente avviare la VM perché Cloud-Init perfezioni la configurazione.
Una volta che la macchina è avviata attendere che unattended-upgrades installi
gli aggiornamenti quindi eseguire
fdisk/dev/sdb
# n# p# 1# <enter># <enter># w
mkfs.ext4/dev/sdb1
# Abilita controlli sul disco
tune2fs-c50-i30d/dev/sda1
tune2fs-c50-i30d/dev/sdb1
blkid
Si utilizzi il risultato di blkid per valorizzare il file /etc/fstab.
Sostituire anche gli ultimi due valori nel disco di root con 1 0
ed utilizzare invece 1 1 per il disco con le home.
Si esegua infine mount-a e verificare attraverso il comando
df-h che il disco sia stato montato correttamente.
Si può ora procedere alla rimozione di Cloud-Init (che creerebbe
solo disguidi d’ora in poi) ed alla configurazione vera e propria:
Proposta 2: Migrazione soft da server FUSS 8 a server FUSS 10
Autore: Marco Marinello
Al fine di semplificare la migrazione delle scuole dall’ottava versione di
FUSS Server e Client alla decima è possibile spezzare la migrazione in due.
Si può migrare distintamente server e client, non ha importanza l’ordine.
La presente guida si applica a tutti i seguenti contesti:
Come prima cosa assicurarsi di «portare via» tutti i dati essenziali alla
migrazione. Si suppone fuss-backup sia già configurato ed operativo.
Se così non dovesse essere, si segua la relativa guida. Si verifichi
nel file /etc/fuss-backup/fuss-backup.conf che la variabile
PATHS sia valorizzata correttamente e si aggiunga /root e
le altre directory che si vuole backuppare.
Si ripulisca il file rimuovendo la prima riga «Welcome to the octofussd
client […]», il primo e l’ultimo />. Si esegua dunque
sed-i's+^+create users/groups/+'groups_backup.txt
cosicché il file sia pronto per l’importazione nel nuovo server.
Spostare questo file oltre a /root/dump_pre_mig.ldif e
/etc/fuss-backup/fuss-backup.conf sulla propria macchina quindi
lanciare fuss-backup . Se root è fra i destinatari si
potrà verificare l’esito del backup col comando mail. Ci si
annoti anche le chiavi SSH autorizzate all’accesso e gli IP della
macchina.
Il nuovo server dovrà essere identico al vecchio, nulla potrà essere
modificato fra IP, nome di dominio, hostname del server e password di
root.
Si parta dall’installazione del fuss-server usando uno qualunque dei
metodi indicati su questa guida.
Qui si prosegue intendendo che fuss-server sia installato assieme
a fuss-backup ma non sia mai stato eseguito.
Si inizi montando la risorsa su cui era stato fatto il backup dal vecchio
server. Lo si può verificare dal file fuss-backup.conf copiato
poc’anzi.
mount172.16.11.22:/myback/mnt
Si può ora procedere all’estrazione di alcuni file necessari alla
prosecuzione (si suppone si lavori come root):
cd
mkdirfrom_backup
cdfrom_backup
borgextract--progress/mnt/borgdata::$(borglist/mnt/borgdata|tail-1|cut-d' '-f1)etc/fuss-serveretc/fuss-backupetc/fuss-serveretc/fuss-backupvar/lib/krb5kdc/principaletc/krb5kdcetc/krb5.keytabroot
Si copi quindi il vecchio file fuss-server.yaml in-place e si
esegua fuss-server. Se la configurazione dell’host è identica a
quella precedente non dovrebbero esserci errori e nessuna domanda
dovrebbe essere posta. Se succedesse, si verifichi la correttezza della
configurazione fatta sinora.
Se era configurato il captive portal, è possibile riconfigurarlo subito,
previo accertamento dei requisiti del file network come descritti nella
relativa guida.
Per non incorrere in errori, come prima cosa si ricrei i gruppi che si
aveva sul vecchio server. Il file groups_backup.txt dovrebbe essere
stato estratto dal backup in /root/from_backup/root/groups_backup.txt
Ci si colleghi dalla propria macchina ad OctoNet via browser e si esegua
l’accesso. Si vada quindi ad Utenti e Gruppi > Converti file LDIF.
Si carichi il file precedentemente esportato e si scarichi l’output in CSV.
Si modifichi quindi il file CSV con LibreOffice e si rimuova la colonna
password che contiene quelle generate automaticamente e si salvi.
Ora che si è in possesso della lista degli utenti è possibile importare
questi nel nuovo server. Nuovamente da Utenti e Gruppi si scelga
Importa da CSV. Si carichi il file CSV appena preparato, si selezioni
la prima riga (intestazione) per renderla ignorata e si associ le
colonne.
Ci si accerti di aver associato la Hashed password altrimenti gli utenti
verranno creati senza password.
Si autorizzi l’importazione e si attenda pazientemente il termine.
La barra di progresso dovrebbe segnalare l’avanzamento dell’operazione.
Ora tutti gli utenti dovrebbero essere stati ricreati con le relative
home (vuote).
Si riavvii ora il server per tornare ad una situazione pulita dal punto
di vista dei servizi. Ora è possibile accendere un client e provare
l’accesso con un utente importato. Se tutto è stato eseguito
correttamente, si dovrebbe accedere e visualizzare la propria home
(vuota).
Nel riconfigurare fuss-backup è consigliabile non usare di nuovo
la directory borgdata per non intaccare il vecchio backup.
Si preferisca piuttosto qualcosa come borgdata10.
Ripristino di altri dati o configurazioni precedenti
Il server dovrebbe essere ora pienamente operativo. È possibile tuttavia
ripristinare ulteriori dati (come le immagini di clonezilla) o
configurazioni (come quelle del firewall) dal backup.