Aller au contenu

Administration Unix - TP séance 12

À la fin de la séance, déposez votre fichier de réponses sur la page Ametice en suivant bien les instructions, même si vous n'avez pas fini la planche ; lorsque vous aurez terminé, vous pourrez re-déposer la version finale.

Important : pour travailler ce TP, faites tous les essais dans la VM créée au TP 11, afin de ne pas risquer "d'abîmer" votre système hôte.

Exercice 1 : utilisateurs et groupes

a) À l'aide de l'utilitaire graphique, créer un utilisateur samob (Yvan Samob), puis le rendre administrateur (Type de compte / Modifier). Quels sont les groupes qui lui sont automatiquement rajoutés lorsqu'on le rend administrateur ?

b) Élaborer une ligne de commande permettant d'afficher les utilisateurs sans mot de passe (c'est-à-dire dont le 2e champ dans /etc/passwd ou dans /etc/shadow est vide). Pour tester, rajouter des utilisateurs sans mot de passe (enlevez éventuellement le mot de passe en éditant ces fichiers avec vi).

Aide : on peut s'en sortir avec cut et grep.

c) Élaborer une ligne de commande permettant d'afficher les utilisateurs pour lesquels leur UID est égal à leur GID.

Aide : pour lire /etc/passwd ligne à ligne, s'inspirer de l'exemple vers le milieu de la section 9.7 dans le cours n°10.

Exercice 2 : script de création d'utilisateurs

a) Testez les commandes suivantes :

$ sudo useradd -c "Laurent Outang" -m -p '' outang
$ id outang
$ grep outang /etc/passwd
$ sudo grep outang /etc/shadow

Questions :

  • À quoi correspondent les options utilisées pour la première commande ?
  • Cet utilisateur a-t-il un mot de passe ?
  • Quel est son shell ?
  • Quelle commande taper pour que son shell deviennent bash ?
  • Quelle option aurait-il fallu donner à useradd pour que son shell soit bash ?

b) Recopiez le texte suivant dans un fichiers users.txt en supprimant les espaces à gauche ; chaque ligne représente un utilisateur à créer, sous la forme prénoms:noms (il peut y avoir des espaces, cf les 2 dernières lignes).

John:Deuf
Juda:Nanasse
Gérard:Mansoif
Cécile:Ourquessa
Oussama:Lairbon
Sophie:Stickée
Alonzo:Bal Masqué
Michel Paul:Naref

Écrivez un script creer_users.sh, dont l'usage sera

$ sudo ./creer_users.sh fichier_users

Le script créera chaque utilisateur à partir de fichier_users (dans notre exemple, le fichier users.txt), en utilisant la commande useradd, cf a).

Le shell de chaque utilisateur sera précisé à partir d'une variable USER_SHELL initialisée au début du script. Le login sera fabriqué en prenant le nom de famille + la première lettre du premier prénom, le tout en minuscules sans accents, caractères spéciaux et sans espace ; le mot de passe sera laissé vide.

Note : pour supprimer les accents et caractères spéciaux, utiliser la commande iconv (cf exemple à la fin du man) :

$ iconv -c -f utf8 -t US-ASCII//TRANSLIT <<< "Vœux à Noël"
Voeux a Noel

Le programme affichera la liste des utilisateurs créés et leur login ; il contiendra des fonctions pour faciliter la lecture et la mise au point (par exemple fabriquer_login, creer_user).

c) Améliorer le script de manière à ce que

  • si un utilisateur existe déjà (même noms et prénoms), le programme affiche un message avec le login, au lieu de le re-créer ;
  • si un login existe déjà, il rajoute un numéro à la fin (à partir de 1) pour trouver un nouveau login.

d) Modifier le script de manière à ce que son usage soit

$ sudo ./creer_users.sh -c fichier_users

pour demander la création des utilisateurs, ou

$ sudo ./creer_users.sh -d fichier_users

pour demander la suppression des utilisateurs et des homedirs (s'ils existent).