Chapitre 2 : Les tâches
administratives
TP 1 : Gestion des utilisateurs en script
Dans ce TP nous allons voir comment créer des utilisateurs, de la manière la plus automatique
possible.
Échauffement : Créer un utilisateur « test ».
Une entreprise fictive distingue ses utilisateurs de Linux selon 3 catégories :
• utilisateur
• intermediaire
• expert
Q1 : Créer les 3 groupes correspondants aux catégories.
L’entreprise a défini un standard en matière de création de compte :
• Le dossier HOME d’un utilisateur doit obligatoirement être créé, et copié à partir partir du
squelette
Q2 : Faire en sorte de modifier le squelette pour que les prochains
nouveaux utilisateurs utilisent systématiquement la locale française (ou
anglaise si votre système est en français), sans changer celle du
système.
Vous pourrez vérifié en créant un nouvel utilisateur, puis en vous connectant en tant que lui
avec : su - <username>, puis vérifier que la commande « date » retourne bien la date au format
souhaité.
Q3 : Écrivez un script qui va créer un utilisateur dont le nom est passé
en paramètre 1, et le groupe supplémentaire (sa catégorie) est passé en
paramètre 2. Son shell par défaut devra être « /usr/bin/bash ».
Il est possible d’accéder aux paramètres d’un script avec les variables $1 et $2.
Exemple :
./script.sh matt intermediaire
Q4 : Ajouter dans votre script la définition d’un mot de passe. La saisie
du mot de passe peut être faite manuellement, avec la méthode vue en
cours, soit automatiquement avec « chpasswd(8) ».
Vous pourrez générer des mots de passe aléatoires de 16 caractères avec :
« MDP=$(cat /dev/random | tr -dc 'a-zA-Z0-9' | head -c 16) »
Et tester la connexion avec « login <username> ».
Q6 : Faites en sorte que l’utilisateur change de mot de passe lors de sa
première connexion.
Q7 : Analysez le fichier /etc/shadow. Quel champs défini l’expiration du
mot de passe ?
Vous pouvez lire le manuel de « shadow » avec « man 5 shadow ».
Q8 (Bonus) : L’équipe RH vient vous voir avec une liste d’utilisateurs à
créer, s’ils n’existent pas encore. Créez les utilisateurs.
Elle vous donne la liste :
user,group
lucas,utilisateur
thomas,intermediaire
eve,utilisateur
yveline,intermediaire
stephane,expert
jocelyne,utilisateur
robert,expert
audrey,utilisateur
pierre,utilisateur
joanes,utilisateur
giselle,expert
fabrice,intermediaire
elisabeth,intermediaire
Sauvegardez la liste dans sur votre machine, puis faites le script qui permet d’appeler votre script
précédent avec les bons paramètres, tout en s’assurant qu’aucun doublon n’est créé, ni qu’aucune
erreur ne survienne si le script est réexécuté plusieurs fois. On imaginera que le fichier ne contient
pas d’erreur et que les groupes existent déjà.
Si besoin, vous pourrez supprimer les utilisateurs (vérifiez que votre nom d’utilisateur
n’apparait pas dans la liste, sinon il sera supprimé, et vos données avec):
for i in lucas thomas eve yveline stephane jocelyne robert audrey pierre
joanes giselle fabrice elisabeth; do sudo userdel -r "$i"; done
TP 2 : Script de sauvegarde automatique
Dans ce TP nous allons écrire un script qui permet de sauvegarder le contenu de /etc à intervalle
régulier.
Q1 : Créez le dossier « /backup » et le script « /opt/backup.sh »
Q2 : Dans votre script, créez une archive compressée (.tar.gz) du
dossier /etc avec la commande « tar(1) » (et éventuellement « gzip(1) »).
Enregistrer le résultat sous « /backup/etc.tar.gz ».
Q3 : Ajouter la date et l’heure au nom de votre archive compressée,
pour pouvoir conserver plusieurs sauvegardes.
Le format de la date/heure conseillé est « YYYY-mm-DD-HH:MM:SS ».
Soit « 2025-09-01-09:50:32 » pour le 1er septembre 2025 à 9 heures 50 minutes et 32
secondes. Ce format permet de trier les fichier en fonction de leur date facilement.
Voir « date(1) » pour formater l’heure et la date.
Q4 : Faites en sorte que les sauvegardes soient effectuées toutes les 2
minutes avec cron.
Q5 : Ajouter à la fin de votre script un bout de code qui va supprimer les
vieilles sauvegardes pour ne conserver que les 3 plus récentes de
chaque dossier.
Vous pourrez utiliser « sort(1) », « head(1) » ou « tail(1) », « xargs(1) »
Q6 (BONUS) : Faire un nouveau script qui va sauvegarder le dossier
HOME de tous les utilisateurs un par un, dans le dossier /backup.
En général, les backups sont externalisées (sorties de la machine et envoyé loin). Ca permet de se
protéger contre les incidents physiques (incendie, innondation, ...), mais aussi contre les cyber-
attaques (ransomware).
La méthode utilisée dans ce TP a l’avantage d’être simple pour récupérer une donnée supprimée par
erreur, mais ne convient pas aux standards d’une entreprise, qui préfèrera par exemple que les
sauvegardes soient envoyées dans un stockage type S3.
On voit aussi de plus en plus de sauvegardes incrémentales, où le système ne sauvegarde que la
différence avec la version précédente. Cela permet d’économiser du stockage, souvent coûteux pour
une infrastructure de sauvegarde.