LTSP

Principe de fonctionnement
1. Le client démarre depuis le réseau (Preboot eXecution Environment) : il commence par réclamer via DHCP son adresse IP ainsi que celle du serveur LTSP.
2. Le client charge ensuite le noyau Linux depuis une image pré-configurée sur le serveur LTSP, via le service TFTP lancé sur le serveur LTSP.
3. Le client monte le système de fichiers racine via le service NFS lancé sur le serveur LTSP.
4. Le client charge le système d'exploitation GNU/Linux (depuis le système de fichiers racine via NFS) et démarre le gestionnaire graphique X.
5. Le client établit un tunnel SSH vers l'environnement X du serveur LTSP, puis l'utilise pour lancer le gestionnaire d'affichage LDM depuis le serveur LTSP.
Installation du serveur LTSP
Préparation du système
sudo apt purge --yes --auto-remove indicator-application mate-hud snapd
sudo apt install --yes synaptic
Ajout des dépôts LTSP
sudo add-apt-repository --yes ppa:ltsp
sudo apt update
Installation des différents services
sudo apt install --install-recommends ltsp ltsp-binaries dnsmasq nfs-kernel-server openssh-server squashfs-tools ethtool net-tools epoptes
- ltsp contient le code LTSP.
- dnsmasq fournit les services TFTP, DHCP et DNS (alternatives à isc-dhcp-server et tftpd-hpa utilisés pour le PXE).
- nfs-kernel-server permet d'exporter les images au client via NFS.
- openssh-server fournit le service SSHFS utilisé pour l'authentification des clients et le montage du répertoire personnel.
- ethtool, net-tools offrent des services de gestion de flux réseau.
- epoptes permet la supervision et la prise en main à distance des clients , une fois ajouté l'utilisateur courant au groupe epoptes :
sudo gpasswd -a $USER epoptes
Configuration du serveur LTSP
Configuration du réseau
2 options :
- une seule interface (WAN)
sudo ltsp dnsmasq
- 2 interfaces (une LAN et une WAN) - solution retenue à Défis : attribution de l'adresse statique 192.168.67.1 à l'interface LAN (via Network Manager) sans attribuer d'adresse passerelle et de DNS, puis
sudo ltsp dnsmasq --proxy-dhcp=0
Le fichier de configuration de dnsmasq propre à LTSP se trouve dans /etc/dnsmasq.d/ltsp-dnsmasq.conf
Configuration NFS
sudo ltsp nfs
Par défaut, cette commande autorise l'export du dossier /srv/tftp/ltsp mais pas l'export du /home (voire infra).
Le fichier de configuration des exports NFS se trouve dans /etc/exports.d/ltsp-nfs.exports.
Génération de l'image
3 options :
- sans chroot (image disponible dans /srv/ltsp/images/x8664.img) - solution retenue à Défis ""
sudo ltsp image /
sudo ltsp initrd
""
- avec chroot
- avec VM
== Configuration PXE ==
À effectuer à la création d'une nouvelle image afin d'ajouter une nouvelle entrée dans le menu de boot PXE.
""
sudo ltsp ipxe
""
==== Authentification des clients ====
Traditionnellement, l'authentification dans les systèmes Linux est fournie par le module **pamunix, via les fichiers /etc/passwd, /etc/shadow, /etc/group. Une fois un utilisateur ajouté (par interface graphique où à l'aide de la commande adduser), il faut lancer la commande
sudo ltsp initrd
La création de sessions invités se fait depuis l'interface graphique de configuration de lightdm.
Dans le cas de nombreux utilisateurs, où si la liste des utilisateurs doit être utilisée par plusieurs services, il peut-être préférable d'utiliser un annuaire LDAP. L'authentification des clients via ldap repose quand à elle sur le module pamldapd** ""
sudo apt install --install-recommends libpam-ldapd libnss-ldapd ldap-utils nscd nslcd nslcd-utils
""
- **libpam-ldapd** permet l'authentification des utilisateurs dans les programmes qui utilisent PAM.
- ** libnss-ldapd** fournit un service de nommage qui autorise le serveur LDAP à être utilisé comme service de nom. Ce dernier fournira les informations concernant les comptes utilisateurs et les groupes en particulier.
- **ldap-utils** contient des utilitaires permettant d'effectuer des requêtes dans un annuaire LDAP.
- **nscd** fournit un cache pour les services de nom.
- **nslcd** est utilisé par libpam-ldapd et libnss-ldapd pour retrouver les comptes d'utilisateurs système.
Pour une bonne sécurité, il est recommande d'importer le certificat de l'annuaire LDAP et forcer nslcd à utiliser le protocole StartTLS. Pour cela, on peut lancer la commande
"" dpkg-reconfigure nslcd
""
ou éditer le fichier /etc/nslcd
""
ssl starttls
tls reqcert never
tls
cacertfile /etc/ssl/certs/cacert.pem
""
Contrairement à l'authentification traditionnelle, l'authentification LDAP ne crée pas automatiquement les comptes utilisateurs sur le serveur LTSP lors de leur première connexion. Pour que cela soit possible, il faut éditer le fichier /etc/pam.d/common-session
"" session required pam
mkhomedir.so umask=0077 skel=/etc/skel </code>
Il semblerait qu'il faille désactiver la fonction pamltsp à travers les commandes suivantes
<code> sudo touch /etc/ltsp/client/init/54-pam.sh && sudo ltsp initrd</code>
(cf https://github.com/ltsp/ltsp/issues/16)
Enfin, l'authentification LDAP impose l'utilisation de NFS au lieu de SSHFS pour le partage de fichiers. Il faut donc installer un serveur NFS
<code>sudo apt install nfs-kernel-server </code> et spécifier à ltsp qu'il faut monter le /home via NFS
<code> sudo ltsp nfs -h 1</code>
==== Configuration des clients ====
Création du fichier de configuration :
install -m 0660 -g sudo /usr/share/ltsp/common/ltsp/ltsp.conf /etc/ltsp/ltsp.conf
Quelques options de configuration utiles (cf https://ltsp.org/man/ltsp.conf/):
-montage automatique du répertoire personnel
<code>FSTABx="server:/home /home nfs defaults,nolock,rsize=32768,wsize=32768 0 0" ""
- cacher la liste des utilisateurs dans lightdm
""LIGHTDM
CONF="greeter-hide-users=true"</code>
- lancer des programmes via cron
<code>CRONTABx="30 17 * * * poweroff"""
==== Ajout d'imprimante ====
L'installation d'une imprimante repose sur le service CUPS (administrable à l'adresse http:/localhost:631). L'option de partage de l'imprimante doit être activée. Par défaut, l'option CUPSSERVER="$SERVER" du fichier de configuration des clients leur indique d'utiliser le serveur LTSP comme serveur CUPS, et non le localhost.