Systèmes Répartis
UNIX
Gestion des Utilisateurs
Une des missions qui reviendra le plus souvent, parmi celles dévolues à l'administrateur consiste dans la gestion des utilisateurs autorisés à utiliser le système.
RAPPELS : • Pour qu'un utilisateur puisse utiliser le système il faut qu'il ait été reconnu par ce dernier. • UNIX met en place des procédés de vérification d'identité afin que quiconque ne puisse se faire passer pour un utilisateur.
Dans ce chapitre, les sujets suivants seront traités : • • • •
Les fichiers Les différentes commandes L'environnement utilisateur Ajout et retrait d'un utilisateur ;
La gestion centralisée des utilisateurs et celle des mots de passe sera revue dans la partie réservée à l'administration d'un réseau
jj/10/OO
ESAT
1
Systèmes Répartis
UNIX
Gestion des Utilisateurs
Les Fichiers
Fichier / etc / passwd : Fichier des logins
Fichier / etc / group : Fichier des groupes
Fichier / etc / shadow : Fichier de gestion des mots de passe
Fichier / etc / default / useradd : Ce fichier est appelé par la commande useradd. Il permet de définir certains paramètres généraux comme le : • GROUPE • HOME • SHELL • etc......
Fichier / etc / skel : Répertoire contenant le ou les fichiers de configuration de session pour les utilisateurs
Fichier / etc / shells : Fichier des shells reconnus
Fichier / etc / login.defs : Fichier de configuration de la duréé de validité des mots de passe lors de la création et des plages de numérotation des UID et GID
jj/10/OO
ESAT
2
Systèmes Répartis
UNIX
Gestion des Utilisateurs
LE FICHIER / etc / passwd Le fichier / etc / passwd est en fait une base de donnée contenant, entre autre, la liste des utilisateurs reconnus par le système. Le programme login lit dans ce fichier les informations authentifiant l'utilisateur lorsque celui-ci essaie de se connecter. Il y trouve les informations suivantes: répertoire de l'utilisateur, mot de passe et shell initial à exécuter ( avec interprétation du fichier .profile ). Le fichier est constitué d'entrées ( une entrée par utilisateur reconnu ) composées de plusieurs champs. Le format d'une entrée est le suivant : Nom de login Mot de passe UID GID Commentaire Directory : Shell :
nom de l'utilisateur contient le mot de passe crypté ou un caractère numéro d'identification de l'utilisateur ; numéro d'identification du groupe ; champ commentaire chemin du répertoire personnel ; chemin de l'interpréteur de commande utilisé par l'utilisateur.
Exemple : lancelot : * : 25 : 12 : Adj BRUNEAU,Bernard,Tph,Régiment : /user/lancelot:/bin/ksh Le fichier / etc / passwd ne peut être modifié que par l'administrateur, mais il peut être lu par tous les utilisateurs. Ce fichier ne doit pas rester ouvert longtemps car si des fichiers systèmes souhaitent l'utiliser (par exemple /usr/bin/passwd ) le système peut être déstabilisé. Il est donc préférable de ne réaliser des modifications sur ce fichier qu'en mode mono-utilisateur. Avant de valider un nouvel utilisateur, en remplissant les différents champs de l'entrée, il faut s'assurer que le numéro UID n'est pas déjà utilisé. Toute modification du fichier / etc / passwd peut avoir des conséquences graves. Il est donc important de connaître toutes les possibilités offertes.
jj/10/OO
ESAT
3
Systèmes Répartis
UNIX
Gestion des Utilisateurs
Champ " nom de login" C'est le contenu de ce champ qui authentifie, lors du login, un utilisateur : si le nom entré alors n'est pas contenu dans le fichier, la procédure de connexion échouera. C'est dans le fichier / etc / passwd, et seulement dans lui, que se fait le lien entre le nom de l'utilisateur et l'UID ( seul critère de reconnaissance de l'utilisateur par le système ). Il est ainsi possible de créer des alias d'utilisateur : cela se traduit par deux ( ou plusieurs ) entrées dans le fichier ayant le même UID. Le mot de passe peut-être différent pour chaque alias. La longueur de ce champ est limitée à 8 caractères. Il faut essayer d'utiliser des noms d'utilisateurs faciles à retenir. On remarque qu'il existe un certain nombre de comptes d'administration regroupant des ensembles de fichiers représentant une caractéristique commune. Ces fichiers sont tous ceux utilisés par le système ( à l'exception donc des fichiers contenus dans les répertoires utilisateurs ). Exemples : compte root, bin, adm, system, uucp, lp, etc.......
Champ "mot de passe" Lorsqu'on rentre un mot de passe au clavier, il sert de clé à un algorithme de cryptage travaillant sur la valeur entière zéro. C'est le résultat de l'algorithme, et non le mot de passe lui-même, qui est inscrit dans le champ correspondant du fichier / etc / passwd. La longueur du champ crypté est de 13 caractères. (34 sous LINUX) Il est donc aisé de rendre la connexion d'un utilisateur impossible ( par exemple lorsque celui-ci perd ses droits d'accès au système où lorsqu'on souhaite que l'utilisateur prenne contact avec l'administrateur ) en y inscrivant un champ inférieur à 13 octets. : : Le mot de passe est " vide ". L'utilisateur peut saisir un mot de passe en utilisant la commande passwd. Si le champ ne contient qu'un caractère ' x ' ou ' * ' c'est que l'information sur le mot de passe est déportée dans le fichier / etc / shadow. Cette implémentation est généralisée à partir de la version S 5.3. Elle est vue en détail plus loin. L'administrateur ne peut pas connaître les mots de passe des utilisateurs ( sauf à outrepasser ses droits en réalisant des pièges ). Par contre il peut, lorsqu'il le souhaite de manière plus ou moins arbitraire - modifier les mots de passe.
jj/10/OO
ESAT
4
Systèmes Répartis
UNIX
Gestion des Utilisateurs
Champ "UID" Ce champ (User Identifiant) identifie l'utilisateur auprès du système. Celui-ci l'utilise pour indiquer le propriétaire des fichiers et des répertoires. C'est un nombre compris entre 0 et 65535. L'UID 0 identifie l'administrateur. Ce n'est donc pas le mot root qui caractérise l'administrateur : il peut choisir un autre nom d'utilisateur [ cependant root est un standard ]. Il peut exister des fichiers appartenant à un UID sans nom de compte associé. Comme on l'a vu, plusieurs entrées du fichier peuvent avoir le même UID. Néanmoins le système ne prend en compte que la première entrée rencontrée, ayant un UID donné, pour déterminer les droits de propriétés. Les utilisateurs correspondant aux autres entrées, pourront accéder aux fichiers mais n'en seront pas propriétaire. Seul le premier détenteur de l'UID est affiché par la commande ls -l. Champ "GID" Ce champ (Group Identifiant) contient le numéro de groupe initial de l'utilisateur. Il faut veiller à ce que ce numéro soit un numéro valide ( voir / etc / group ) si l'on veut intégrer l'utilisateur à un groupe existant. Champ "commentaire" Appelé aussi champ GECOS (General Electric Comprehensive Operating System) , ce champ est laissé à la disposition de l'administrateur. Généralement on y inclut le nom véritable de l'utilisateur et/ou son numéro de téléphone. Champ "directory" Ce champ indique au programme login quel est le répertoire de connexion sur lequel il se positionne. (Home Directory) Champ "shell" Ce champ indique au programme login quel est le shell à lancer pour accueillir l'utilisateur. En fait, on peut indiquer là tout fichier exécutable. Cette possibilité est particulièrement intéressante lorsqu'on souhaite limiter un utilisateur à un programme donné : si son chemin d'accès est inscrit dans ce champ, l'utilisateur ne pourra plus accéder au système (...... sauf s'il a quelques connaissances d'UNIX ). Cette possibilité n'est pas applicable sous SCO. Le shell de connexion est le seul qui lit le fichier.profile (on parle alors de shell initial).
jj/10/OO
ESAT
5
Systèmes Répartis
UNIX
Gestion des Utilisateurs
LE FICHIER / etc / group Le fichier / etc / group est une base de données permettant de répertorier les différents groupes et les utilisateurs appartenant à chaque groupe. C'est le seul endroit où se fait le lien entre le nom de groupe et le GID. Il est constitué de différentes entrées de la forme : Nom du groupe:password:GID:liste des users Nom du groupe Password GID Liste des users
nom du groupe; mot de passe (avant la release IV) Numéro du groupe ; liste des utilisateurs invités par ce groupe on dit aussi qu'ils ont un groupe secondaire ( les utilisateurs doivent être définis dans / etc / passwd ) ;
Exemple : stage : : 18 : arthur, athena, lancelot,........etc..... Champ "Nom du groupe" Ce champ indique un nom de groupe Champ "mot de passe" N'est plus utilisé depuis système V release IV Champ "GID" Ce champ (Group Identifiant) identifie le groupe auprès du système. Celui-ci l'utilise pour indiquer le groupe des fichiers et des répertoires. C'est un nombre compris entre 0 et 65535. Champ "Liste des users" Liste des utilisateurs invités par ce groupe, ceux-ci doivent être définis dans /etc/passwd Un utilisateur peut appartenir à plusieurs groupes à la fois. Son groupe initial est celui dont le numéro est défini dans / etc / passwd.
jj/10/OO
ESAT
6
Systèmes Répartis
UNIX
Gestion des Utilisateurs
Le fichier / etc / shadow : Nouvelles implémentations :
Une des volontés actuelles des différents constructeurs d'UNIX est de rendre celui-ci plus sûr. L'implémentation originelle, qui consistait à laisser le cryptage du mot de passe dans le fichier / etc / passwd, a donc été modifiée. Par cette implémentation, en effet, le mot de passe pouvait être " craqué". Une première défense a consisté à ralentir volontairement le temps de traitement du mot de passe...... il était donc impossible, statistiquement, de réussir à trouver le bon code dans des délais satisfaisants. Mais l'algorithme de cryptage ( le DES ) est diffusé dans le domaine public. Une personne peut donc effectuer, sur une machine externe, des essais à partir des mots d'un dictionnaire, à des vitesses alors satisfaisantes. Lorsque le résultat de l'algorithme correspond aux indications contenues dans le fichier / etc / passwd, visible par tout le monde, c'est que le mot testé est le bon. Il était impossible de restreindre les accès au fichier / etc / passwd car celui-ci contient d'autres informations utilisées par de nombreux programmes. Pour contourner cette contrainte plusieurs constructeurs ont alors modifié la syntaxe de ce fichier : la mise en place de 'x ' ou de '*' dans le champ mot de passe indique maintenant au système qu'il doit rechercher l'information dans un autres endroit : ce peut être le fichier /etc/shadow dans la plus part de cas ou alors des fichiers situés dans les répertoires / tcb / files / auth / x pour SCO , ou dans le fichier /etc/security/passwd pour AIX le caractère est alors un point d’exclamation ‘!’ L'implémentation de ce fichier est généralisée avec la version Système V Release 3. Ce fichier sert à conserver les mots de passe déclarés dans / etc / passwd. D'autres champs donnent des renseignements sur la datation des mots de passe. Ce fichier est à accès plus réduit : il ne peut être lu ( et à fortiori modifié ) que par l'administrateur.
jj/10/OO
ESAT
7
Systèmes Répartis
UNIX
Gestion des Utilisateurs
Son format, similaire à celui de / etc / passwd, est le suivant : Nom login : passwd : last :may: must : warm : expire : disable : reserved Où : nom login passwd last may must warn expire inactif reserved
nom d'utilisateur défini dans /etc/ passwd ; mot de passe crypté ( 13 ou 34 caractères ) ; date du dernier changement ( en jour à compter du 1.01.1970 ) ; durée minimale de validité du mot de passe ( en jours ) ; durée maximale de validité du mot de passe ( en jours ) ; nombre de jours avant expiration du mot de passe et à partir duquel l'utilisateur est averti ; nombre de jours d'inutilisation du compte autorisés pour cet utilisateur, après quoi le compte est invalidé; date d'expiration du compte ( en jour à compter du 1.01.1970 ). réservé
Champ " nom de login" Idem que dans le fichier / etc /passwd Champ " mot de passe " Ce n'est pas le mot de passe entré par la commande passwd qui est codé, mais la constante zéro. le résultat est une chaîne codée d'une longueur de 11 caractères. le mot de passe n'est que la clé de codage, et il lui est adjoint deux éléments supplémentaires obtenus aléatoirement a partir de l'horloge système. Ils constituent un élément perturbateur, rajouté au mot de passe choisi par l'utilisateur pour constituer une clé de codage. Ils sont conservés en début de la chaîne codée, portant ainsi la longueur du mot de passe codé à 13 caractères. les deux premiers caractères étant tirés au hasard, ils modifient la clé de codage. deux utilisateurs ayant le même mot de passe auront un codage de celui-ci différent. L'algorithme utilisé est le DES (Data Encryption Standard). Champ "last" Date de la dernière modification (en nombre de jours depuis le 1er janvier 1970) chage –d mm/dd/yy user Champ "may" Nombre de jours avant que le mot de passe puisse être modifié chage –m nbjour user
jj/10/OO
ESAT
8
Systèmes Répartis
UNIX
Gestion des Utilisateurs
Champ "must" Nombre de jours avant que le mot de passe doive être modifié. chage –M 10 user Champ "warn" Nombre de jours durant lesquels l'utilisateur est prévenu de l'expiration de son mot de passe chage –W 15 user Champ "expire" Nombre de jours entre l'expiration du mot de passe et la fermeture du compte chage -I user Champ "inactif" Date de la fermeture du compte (en nombre de jours depuis le 1er janvier 1970) chage –E user Champ "reserved" Champ réservé non utilisé.
jj/10/OO
ESAT
9
Systèmes Répartis
UNIX
Gestion des Utilisateurs
Les commandes Commande useradd : Ajout d’un nouvel utilisateur et création du répertoire personnel. Cette commande est lancée avec différentes options permettant de fixer les champs du fichier /etc/passwd Commande userdel : Suppression d’un utilisateur avec effacement des références contenues dans les fichiers /etc/passwd et /etc/group Commande usermod: Modifie un compte utilisateur Commande groupadd : Ajoute un groupe dans le fichier /etc/group Commande groupdel : Supprime un groupe Commande groupmod : Modifie un groupe Commande chfn : Change les informations pour le champ commentaire (finger) Commande chsh : Change le shell de connexion ce shell doit être connu du fichier /etc/shells Commande chage : gestion du mot de passe dans le fichier /etc/shadow Pour visualiser les champs chage –l user Minimum: 15 Maximum: 60 Warning: -1 Inactive: 10 Last Change: Password Expires: Password Inactive: Account Expires:
jan 10, 2002 mar 11, 2002 mar 21, 2002 Never
Pour modifier tous les champs chage user répondre aux questions
jj/10/OO
ESAT
10
Systèmes Répartis
UNIX
Gestion des Utilisateurs
Commande pwconv : Création et/ou modification du fichier /etc/shadow à partir du fichier /etc/passwd Commande pwunconv : Restauration de l’ancien /etc/passwd Commande passwd : Change le mot de passe ainsi que la durée de validité de celui-ci. Commande finger : Cette commande, qui n'est disponible que sur les systèmes récents, donne des informations sur les utilisateurs du système. (champ commentaire) Commande chown change le propriétaire du fichier Commande chgrp change le groupe du fichier Commande pwck Vérifie l'intégrité du fichier /etc/passwd par rapport au fichier /etc/shadow Commande newgrp Changer de groupe au cours d'une session Cas concret : Un utilisateur lambda faisant partie du GID 500 (nommé bureau) Fichier /etc/group : …. bureau : :500 : produc : :1001 : analys :.:1002 : prog :.:1003 :lambda lambda> id Lambda> newgrp produc newgrp : Permission denied Lambda> newgrp prog Lambda>id Lambda>exit Lambda>id
jj/10/OO
uid=509(lambda) gid=500 (bureau) groupes=500(bureau),1003 (prog) Changement vers le groupe produc Changement vers le group prog uid=509(lambda) gid=1003(prog) groupes=500(bureau),1003 (prog) uid=509(lambda) gid=500 (bureau) groupes=500(bureau),1003 (prog)
ESAT
11
Systèmes Répartis
UNIX
Gestion des Utilisateurs
ENVIRONNEMENT UTILISATEUR L'environnement est un tableau de chaînes de caractères qui est fourni à exec quand un processus démarre. Par convention ces chaînes ont la forme `nom=valeur'. Des exemples classiques sont : HOME Le répertoire de login d'un utilisateur, mis en place par login depuis le fichier des mots de passe passwd. LANG Le nom du lieux à utiliser pour les configuration locales, s'il n'est pas écrasé par LC_ALL ou d'autres variables d'environnement. PATH Une liste de préfixes de répertoires, que sh et de nombreux autres programmes utilisent pour trouver un fichier dont le chemin est incomplet. Les préfixes sont séparés par des `:'. (De même il existe CDPATH utilise par certains shells pour connaître le répertoire destination d'une commande cd, MANPATH utilise par man pour trouver les pages de manuel, etc...) PWD
Le répertoire de travail actuel, renseigné par certains shells.
SHELL Le nom de fichier du shell à la connexion de l'utilisateur. TERM Le type de terminal utilisé pour les affichages. USER Le nom de l'utilisateur connecté (utilisé par des programmes de style BSD). Ces initialisations sont automatiques et ne doivent pas être modifiées par l'administrateur. L'administrateur dispose des moyens pour personnaliser l'environnement de chaque utilisateur. Il peut agir, pour cela, à plusieurs niveaux : fichier /etc/bashrc fichier /etc/profile fichier /etc/login fichier /etc/cshrc
sous Linux sous Aix sous Unisys
L'Utilisateur possède lui aussi des fichiers d'environnement propre .bash_profile environnement perso .bash_logout .bashrc alias et fonction personnelle
jj/10/OO
ESAT
12
Systèmes Répartis
UNIX
Gestion des Utilisateurs
AJOUT / RETRAIT D'UN UTILISATEUR Procédure d'ajout : Un utilisateur est reconnu par le système lorsque les opérations suivantes ont été réalisées par l'administrateur : 1 Ajouter le nom de l'utilisateur dans le fichier / etc / passwd ; 2 Ajouter le nom de l'utilisateur dans le fichier / etc / group ; 3 Créer le répertoire personnel de l'utilisateur dans le répertoire réservé à cet effet ; 4 Rendre l'utilisateur propriétaire de ce répertoire (idem pour les droits du groupe ) ; 5 Recopie d'un fichier .profile (sh) ou .bash_profile (bash) standard dans ce répertoire ; 6 Rendre l'utilisateur propriétaire de ce fichier (idem pour les droits du groupe); 7 Créer une boîte aux lettres dans le répertoire / usr / spool / mail ( au nom de l'utilisateur). Modifier les droits de propriété en conséquence. 8 Rajouter l’entrée dans /etc/shadow Seul l'administrateur possède les droits pour réaliser la plupart de ces opérations. Tant qu'il ne modifie pas les droits de propriétés, il est propriétaire de ce qu'il crée. Par exemple, cela se traduit, pour l'utilisateur lancelot, par les opérations suivantes : cd /home se positionne dans le répertoire des utilisateurs mkdir lancelot crée le répertoire de l'utilisateur chown lancelot lancelot change de propriétaire chgrp eleve lancelot change de groupe cd lancelot se positionne dans le répertoire personnel cp /home/local/stan_profile .profile copie d'un .profile standard chown lancelot .profile change de propriétaire chgrp prof .profile change de groupe cd / usr / spool / mail echo > lancelot chown lancelot lancelot chgrp mail lancelot chmod 660 lancelot entrée dans/etc/shadow
se positionne dans le répertoire du courrier crée un fichier boite aux lettres change de propriétaire change de groupe change de droits d'accès à partir de la V4, les mots de passe codés sont conservés dans /etc/shadow
ou useradd –u 500 –g 550 –c "Nom complet,telephone,etc,etc" –d /home/lancelot –s /bin/bash lancelot
jj/10/OO
ESAT
13
Systèmes Répartis
UNIX
Gestion des Utilisateurs
Retrait d'un utilisateur : Lorsqu'un utilisateur perd ses droits d'utilisation du système, l'administrateur doit, dans les meilleurs délais, agir de manière à ce que l'utilisateur ne puisse plus accéder au système. Pour cela il doit : 1. Sauvegarder, au moins quelque temps, toutes les données de l'utilisateur ; 2. Effacer le répertoire personnel de l'utilisateur ( rm -r < nom_util > ) 3. Lui interdire tout accès au système en effaçant son entrée dans le fichier /etc/passwd; 4. Effacer l'entrée correspondante dans le fichier / etc / group ; 5. Effacer la boîte aux lettres. ou userdel –r lancelot
jj/10/OO
ESAT
14