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/x86_64.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 pam_unix, 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 pam_ldapd
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/ca_cert.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
Il semblerait qu'il faille désactiver la fonction pamltsp à travers les commandes suivantes
sudo touch /etc/ltsp/client/init/54-pam.sh && sudo ltsp initrd
(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
sudo apt install nfs-kernel-server
et spécifier à ltsp qu'il faut monter le /home via NFS sudo ltsp nfs -h 1
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
FSTAB_x="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"
- lancer des programmes via cron
CRONTAB_x="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 CUPS_SERVER="$SERVER" du fichier de configuration des clients leur indique d'utiliser le serveur LTSP comme serveur CUPS, et non le localhost.