Lab d’administration Linux : utilisateurs, droits, cron et systemd dans le navigateur

Ce lab donne à chaque élève un serveur Ubuntu dont il s’occupe seul. Il y a quatre petites tâches, de celles qu’un administrateur système fait dès la première semaine : ajouter un utilisateur et un groupe, régler les droits d’un dossier partagé, planifier une tâche avec cron, et écrire puis activer un service systemd. Rien n’est installé sur l’ordinateur de l’élève, et un script note le résultat : vous n’avez pas à lire chaque machine.

Ce que les élèves apprennent

Utilisateurs et groupes : créer un groupe ordinaire et un utilisateur ordinaire avec un dossier personnel et un shell de connexion, et mettre l’utilisateur dans le groupe sans lui donner de droits d’administrateur. Droits sur les fichiers : propriétaire, groupe et tous les autres, et le bit setgid qui fait que les fichiers créés dans un dossier partagé appartiennent au groupe du dossier. Planification : une tâche dans le dossier cron du système, qui a un champ utilisateur que n’a pas un crontab personnel, et un fichier que cron ignore sans rien dire s’il est mal écrit. Services : un fichier d’unité systemd, ce qu’il faut pour qu’il soit relancé en cas d’échec et démarré au boot, et le lien que crée l’activation d’un service.

Les quatre tâches

La tâche 1 est un groupe nommé devs et un utilisateur nommé maria dedans. La tâche 2 est le dossier /srv/projects, que les membres du groupe peuvent utiliser et que personne d’autre ne peut utiliser. La tâche 3 est une tâche quotidienne à 02:30, exécutée en root, pour un script de sauvegarde fourni par le lab. La tâche 4 est un service nommé heartbeat pour un script fourni par le lab. Le README que le lab laisse dans le dossier personnel dit quoi faire dans chacune et ne donne ni commande, ni droits, ni fichier d’unité.

Le lancer dans votre navigateur

Les labs VM se proposent comme une tâche de lab dans un module, et l’exemple se trouve sur la page du lab. La machine est petite : un processeur, 1 Go de mémoire et 10 Go de disque.

  1. Ajouter le lab. Dans un module que vous enseignez, ajoutez une tâche et choisissez la carte « Lab VM Ubuntu ». La page affiche une courte description de la machine au lieu d’un fichier compose.
  2. Partir de l’exemple. La page propose des labs prêts à l’emploi pour commencer. Choisissez Linux administration. Utiliser un exemple remplace le texte, et « Annuler » rétablit le vôtre.
  3. Publier et démarrer votre propre copie. Publiez, puis « Démarrer ». Le script d’installation du lab installe cron à partir de l’archive d’Ubuntu et écrit les deux petits scripts et le README au premier démarrage de la VM, en quelques secondes.
  4. Ouvrir le terminal. Ouvrez son terminal et lisez README.md dans le dossier personnel : il indique les quatre tâches à faire et ne donne aucune réponse.

Une leçon de base sur ce lab

Linux Administration Basics est une petite leçon qui se fait dans ce lab, qui est une VM Ubuntu : chaque étape est expliquée et accompagnée d’un bouton Exécuter qui tape sa commande dans le terminal de la machine et montre ce qu’elle a affiché. L’élève demande qui il est, constate que le groupe de l’équipe n’existe pas encore, lit dans les droits du dossier des projets qui peut l’utiliser et voit quelles tâches planifiées existent.

Elle se contente de regarder autour d’elle et laisse à l’élève la tâche propre du lab, faire les quatre travaux, si bien qu’elle ne donne aucune réponse. Elle est volontairement petite : elle montre à un enseignant ce qu’est une leçon qui se fait dans un lab, et le lab fait le reste. Copiez-la dans un module à vous pour la modifier.

Comment il est noté

Le lab a une vérification. Elle s’exécute sur une copie de la machine enregistrée après un démarrage à neuf : elle ne voit donc que ce que l’élève a enregistré, parcourt les quatre tâches dans l’ordre et s’arrête à la première qui est incorrecte. Elle lit l’état réel : l’utilisateur et le groupe, le propriétaire et les droits du dossier et un fichier qu’y créent le nouvel utilisateur et quelqu’un hors du groupe, le fichier cron dans /etc/cron.d, et le fichier d’unité avec le lien que crée l’activation du service. Un crontab d’utilisateur, un dossier ouvert à tout le monde, un service démarré mais jamais activé et une copie du fichier d’unité à la place du lien ne réussissent pas, et la première ligne de ce que la vérification a affiché dit quelle tâche et pourquoi.

  1. Le distribuer. Attribuez le lab comme n’importe quelle tâche, avec une échéance si vous le souhaitez. Chaque élève reçoit sa propre VM, conservée d’une session à l’autre.
  2. Lancer la vérification. Sur la ligne d’un élève dans la liste de la classe, appuyez sur « Lancer la vérification ». Elle démarre une copie de sa machine enregistrée, sans rien enregistrer en retour, exécute le script de vérification du lab en root et indique s’il a réussi, ce qu’il a affiché et quand. L’élève n’est pas informé du résultat.
  3. Noter. Lisez la première ligne de ce que la vérification a affiché : elle nomme la première tâche qui n’est pas correcte et dit pourquoi. Renvoyez le travail avec un motif s’il demande un complément.

La définition sur GitHub

Le fichier est la définition complète du lab, le même texte que celui que la plateforme exécute : taille, script d’installation, README et vérification. Copiez-le et ajoutez une tâche de votre cru, comme un disque ou une règle de pare-feu, pour faire un lab plus long.

Questions fréquentes

La vérification exécute-t-elle la tâche cron ou démarre-t-elle le service ?
Non. Elle lit ce qui a été enregistré : le propriétaire, la fin et la seule ligne de tâche du fichier cron, ainsi que le fichier d’unité et le lien que crée son activation. Que la tâche se déclenche à 02:30 relève de cron une fois le fichier correct.
Les élèves peuvent-ils utiliser les vraies commandes d’administration ?
Oui, c’est tout l’intérêt. L’élève a sudo sur une vraie machine Ubuntu : useradd, chmod et systemctl fonctionnent tels quels. La machine n’atteint que l’archive d’Ubuntu, PyPI, npm et GitHub, et rien d’autre sur Internet.
Le lab d’administration Linux est-il noté automatiquement ?
Oui. Un script vérifie une copie de la machine enregistrée après un démarrage neuf, parcourt les quatre tâches dans l’ordre et s’arrête à la première qui est fausse. La première ligne de ce qu’il a affiché dit quelle tâche échoue et pourquoi, donc vous n’avez pas à lire chaque machine.