La commande AjoutUtil


Objectifs

Le but de ce TP est d'écrire un script shell ajoututil qui va permettre l'automatisation de l'ensembles des tâches à exécuter lors de la création d'un nouveau utilisateur. Ces tâches sont les suivantes:

Présentation

La commande ajoututil s'utilisera de la manière suivante:
      ajoututil <nom_utilisateur> [-g <nom_groupe>] 
                [-s <interpreteur>] [-i <info>] [-u <uid>]


Elle accepte les options suivantes:

Dans le cas où ces options ne sont pas précisées, une valeur par défaut sera utilisée (ou calculée dans le cas du numéro d'utilisateur).
 
 

Outils

Définition d'un environnement de travail

Pour pouvoir tester votre script sans pour cela risquer de perturber l'organisation du système, vous allez créer un environnement LOCAL à votre répertoire de travail qui va correspondre à l'environnement réel de la commande dans un cadre d'exploitation. Pour cela vous allez exécuter les commandes suivantes:

    Création d'un répertoire tpis3;

    Dans le répertoire tpis3 vous allez créer les répertoires etc et home,

    Dans le répertoire ~/tpis3/etc, vous allez créer une copie des fichiers réseau passwd et group grâce à la commande ypcat qui liste leur contenu sur la sortie standard.

     

Règles suivies lors de la création d'un utilisateur

Le répertoire /home regroupe l'ensemble des répertoires utilisateurs enregistrés sur le système. Par exemple un utilisateur duchmol qui appartient au groupe etudiant aura comme répertoire de travail:

    /home/duchmol

Un utilisateur appartient à un groupe au minimum. Le groupe d'un utilisateur doit exister avant que l'on demande la création d'un utilisateur dans ce groupe.
Dans le cadre de l'environnement de test, il faudra s'assurer que c'est le cas. Les valeurs par défaut qui seront utilisées sont les suivantes:


ATTENTION : Le script doit être écrit de façon à ce que le passage de la phase de test (séance de TP) à la phase d'exploitation, ne demande que peu de modification. C'est pour cette raison que vous utiliserez des variables pré-définies en début de script et qui seront utilisées dans la suite du script. Lors de la phase d'exploitation il suffira de modifier la valeur des variables pré-définies.


Travail Demandé

Question
Donner la liste et la valeur des variables pré-définies (La réponse peut dépendre de la suite du TP).

Vérification des droits d'utilisation de la commande ajoututil

L'utilisation d'une fonction comme ajoututil doit être réservée à un nombre limité d'utilisateurs. Vous allez créer une liste d'utilisateurs pouvant utiliser la commande. Si l'utilisateur n'est pas autorisé, la commande se termine en affichant un message indiquant la raison de cette interruption.

Question
Écrire les instructions qui vérifient que l'utilisateur de la commande est dans la liste des personnes autorisées.


Vérification de la syntaxe d'appel

Comme indiqué dans l'introduction, la commande peut être appelée avec pour seul argument le nom d'utilisateur à créer. Cependant, l'opérateur peut ajouter des arguments supplémentaires. La syntaxe est la suivante:

[ -x argument_option_x ]
Cela signifie que les options sont facultatives; x représente une option qui peut prendre la valeur: g,s,i ou u et doit être suivi d'un argument pour cette option.
 
Question
Écrire les instructions qui vérifient la syntaxe des options fournies par l'opérateur. Il faut en particulier s'assurer qu'il y a au moins un argument (le nom d'utilisateur).

 
Vérification de la valeur des arguments

Pour chacun des arguments fournis, il faut vérifier qu'ils sont valides pour être utilisés. Il faut notamment vérifier:

Question
Écrire les instructions qui vont permettre de réaliser toutes ces vérifications.

 
Demande de confirmation de l'écriture de la ligne à ajouter dans le fichier passwd

Une fois que les valeurs qui vont constituer la ligne à ajouter dans le fichier passwd ont été vérifiées, il faut demander à l'opérateur de confirmer sa demande de création.


Question
Écrire les instructions qui vont présenter la ligne qui sera ajoutée dans le fichier passwd et qui demande de manière interactive une confirmation de la création de la part de l'opérateur.


Modification du fichier passwd

Une fois la confirmation donnée par l'opérateur, il vous faut ajouter la ligne construite dans le fichier passwd.


Question
Écrire les instructions qui vont vous permettre d'ajouter la ligne au fichier passwd.

Création d'un environnement de base pour l'utilisateur

Lorsque l'utilisateur va se connecter, il lui faut un répertoire de travail, de plus il faut positionner certaines variables d'environnements (PATH, MANPATH, TERM, ...). Suivant l'interpréteur de commandes choisi par l'utilisateur, le fichier prologue est différent. Par exemple:

Ces fichiers doivent être ajoutés dans le répertoire de travail de l'utilisateur. Vous trouverez dans le répertoire skel une version de ces fichiers.
 
Question
Écrire les instructions qui créent le répertoire de l'utilisateur, et un environnement de base.