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).