Gestione dei FUSS client

Configurazione di un Fuss Client

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.

Installazione ordinaria

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 o se ve ne è definito soltanto uno, non verrà chiesto nient’altro e l’installazione proseguirà direttamente fino alla fine, ottenendo sul terminale un risultato del tipo:

PLAY RECAP *********************************************************************
localhost                  : ok=129  changed=71   unreachable=0    failed=0

(dove si deve avere failed=0)

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

Impostazione dell’hostname

A partire dalla versione 9.0.7 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.

Con la stessa versione è stata anche effettuata una normalizzazione (che viene comunque realizzata dal comando fuss-client) 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 -H clientname

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:

127.0.1.1     clientname.institute.lan clientname

e si otterrà correttamente che:

root@testclient:~# hostname
clientname
root@testclient:~# hostname -f
clientname.institute.lan

ed in questo modo nel file /etc/clusters del server verrà usato il nome della macchina.

Aggiornamenti

Aggiornamenti minori di fuss-client

Nel caso ci siano aggiornamenti di minor version di fuss-client (9.0.x → 9.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.

Accesso con chiave al server per fuss-client

Avvertimento

le funzionalità descritte in questa sezione sono ancora in fase di sviluppo; le versioni attualmente pubblicate di fuss-client e fuss-server ne hanno una preview, ma il comportamento potrebbe cambiare.

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.

A partire dalla versione 8.0.31 di fuss-server, coi comandi fuss-server create o fuss-server upgrade 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.

A partire dalla versione 9.0.8 di fuss-client, sui client già configurati è 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, già dalla versione 9.0.5 è 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.

Gestione delle chiavi

Aggiunta di nuove chiavi sul server

È possibile abilitare nuove chiavi mettendo la coppia di chiavi pubbliche e private in /etc/fuss-server/client_keys/ e lanciando fuss-server upgrade 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.

Disabilitazione di chiavi

Per disabilitare una chiave dal server è necessario:

  • rimuovere la riga corrispondente da /root/.ssh/authorized_keys
  • rimuovere le chiavi pubbliche e private da /etc/fuss-server/client_keys/

Creazione di una chiavetta USB con le chiavi ssh

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 Stretch, e quindi sul 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.

Specifiche

Chiavi USB per la distribuzione delle chiavi ssh

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.

Risoluzione di problemi

Diagnostica degli errori di fuss-client

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.

Richieste di configurazione di nslcd

Durante alcuni aggiornamenti del pacchetto nslcd si potrebbe ricevere una richiesta di configurazione:

Quando viene utilizzata una connessione cifrata è possibile
richiedere e controllare un certificato del server. Scegliere se le
ricerche devono essere configurate per richiedere un certificato e se
la validità dei certificati deve essere controllata:

Nelle reti fuss si può selezionare mai.

A partire da fuss-client 9.0.18 anche questa configurazione viene preimpostata da fuss-client -a o fuss-client -U.

Procedure alternative

Installazione su Debian 9 (stretch)

Fuss Client può essere installato, oltre che a partire dalla sua ISO, su una Debian 9 (stretch) standard; in tal caso è necessario effettuare alcune configurazioni, sempre lavorando come root.

  • Installare Debian 9 (stretch) recuperando una delle seguenti ISO (a seconda dell’occorrenza):

    Architettura ISO xfce-desktop UFFICIALE ISO xfce-desktop NON UFFICIALE (con firmware proprietari)
    amd64 debian-live-9.4.0-amd64-xfce.iso debian-live-9.4.0-amd64-xfce+nonfree.iso
    i386 debian-live-9.4.0-i386-xfce.iso debian-live-9.4.0-i386-xfce+nonfree.iso
  • Abilitare i repository fuss in /etc/apt/source.list:

    deb http://archive.fuss.bz.it/ stretch main
    
  • aggiungere la chiave di firma del repository e aggiornare apt:

    wget -qO - https://archive.fuss.bz.it/apt.key | apt-key add -
    apt update
    
  • quindi installare fuss-client e i vari metapacchetti con i programmi didattici con i comandi:

    apt install fuss-client fuss-kids fuss-children fuss-education
    fuss-graphics fuss-language-support fuss-multimedia
    fuss-extra-multimedia fuss-net fuss-office fuss-various
    
  • ed infine, lanciare il programma fuss-client:

    fuss-client -a