Misfu, le site des cours Informatique/Bureautique/Mathematiques


 

Gestion des comptes et groupes d'utilisateurs sur Linux

Généralités - notion d'utilisateurs

Même si on est la seule personne à utiliser son système Linux, la compréhension et la gestion des comptes utilisateurs constituent un sujet très important pour l'administration du système. Et encore plus si la machine héberge plusieurs comptes de plusieurs personnes.


Les comptes utilisateur servent à beaucoup de choses sur les systèmes UNIX et Linux :


- Ils permettent de distinguer les différents utilisateurs qui ont accès au système, pour des raisons de sécurité. Chacun d'eux possède un compte personnel, auquel il accède par un identifiant et un mot de passe secret.

- Ces utilisateurs peuvent définir des permissions d'accès à leurs données, afin d'en autoriser ou d'en interdire l'exploitation par les autres.

- Les comptes permettent l'authentification de chaque utilisateur accédant au système, ce qui permet bien d'autres actes de gestion tels que gérer les courriers électroniques des utilisateurs par exemple ou savoir qui a fait une bêtise en examinant les fichiers de trace du système.


En dehors des comptes personnels, il existe des utilisateurs qui ne sont pas forcément des personnes physiques. Ces utilisateurs remplissent des fonctions administratives. C'est le cas du compte root utilisé par l'administrateur pour effectuer la maintenance par exemple. C'est aussi le cas des comptes en général destinés à des démons qui doivent avoir accès à certains fichiers sous une identification spécifique ('le compte news par exemple permet de recevoir les news Usenet en provenance d'un autre site.


Gestion des comptes d'utilisateurs


Création d'un compte d'utilisateur


La création d'un compte demande plusieurs opérations : l'ajout d'une entrée dans le fichier /etc/passwd, la création du répertoire personnel de l'utilisateur, et la mise en place de la configuration par défaut dans le répertoire de cet utilisateur.


L'ensemble de ces opérations est pris en charge par la commande adduser.ou useradd dont la syntaxe se présente comme suit :


adduser [-c commentaires] [-d rep_personnel]

[-e date_expiration] [-f tps_inactivité]

[-g groupe_initial] [-G groupe[,...]

[-m [-k squelette_rep | -M] [-p motdepasse]

[-s shell] [-u uid [-o]] [-n] [-r] utilisateur


Utilisée sans aucun argument, cette commande demande de manière interactive toutes les informations nécessaires pour identifier l'utilisateur en cours de création.


Utilisée sans option (donc uniquement avec l'argument nom d'utilisateur, cette commande applique un ensemble de valeurs par défaut qui sont consignées dans le fichier : /etc/default/useradd

Voici un exemple de ce fichier, auquel de brefs commentaires sont rajoutés.

GROUP=100 identifiant du groupe primaire

HOME=/homeracine des rép. Personnels

INACTIVE=-1 (nb de jours avant destruction du compte

EXPIRE= nb de jours avant expiration du mot de passe

SHELL=/bin/bash shell de connexion attribué au compte

SKEL=/etc/skel fichiers recopiés par défaut dans chaque rép. personnel


Le tableau ci-dessous synthétise les options les plus utilisées


Option

Résumé

-c commentaires

Nom complet de l'utilisateur et des commentaires divers

-d rep_personnel

Par défaut dans le répertoire /home

-e date_expiration

Fixe la date d'expiration du compte (format MM/JJ/AA)

-f tps_inactivité

Nombre de jours entre l'expiration et la désactivation permanente du compte

-g groupe_initial

Groupe d'affectation du compte. Doit exister avant la création du compte.

-G liste

Fixe l'appartenance de l'utilisateur à une liste de groupes secondaires (séparateur , sans espace)

-m

Le répertoire personnel sera créé s'il n'existe pas. L'option -k n'est valide qu'en conjonction avec l'option -m

-k squelette_rep

Recopie le contenu du répertoire squelette_rep dans le rép. Personnel ; par défaut /etc/skel

-p motdepasse

Mot de passe crypté. Par défaut le compte est désactivé

-s shell

Par défaut, attribution du shell par défaut bash

-u uid

Pour fixer l'identifiant uid à l'utilisateur

-n

Un groupe ayant le même nom que le compte en cours de création sera crée sur le système par défaut. Cette option désactivera ce comportement spécifique à Linux Mandriva


Suppression d'un compte d'utilisateur :

Pour supprimer le compte d'un utilisateur (non connecté), on utilise la commande userdel


userdel [-r] utilisateur


L'option -r supprime aussi le répertoire. personnel et les fichiers de l'utilisateur.

La commande supprime toute trace de l'utilisateur dans le fichier de configuration : /etc/passwd y compris dans les groupes d'utiliseurs.


Modification d'un compte d'utilisateur :

Pour modifier le compte d'un utilisateur, on utilise la commande usermod comme suit :


usermod [options] utilisateur


Les options sont les mêmes que adduser
usermod -G stagiaire,prof stagex ajoute stagex dans les 2 groupes stagiaire et profs (qui doivent exister au préalable)

Pour lui attribuer le nouveau mot de passe stgx : passwd stagex

La saisie du nouveau mot de passe sera demandée deux fois.


Remarques :

- Si root souhaite redéfinir son propre mot de passe, il doit passer la commande passwd !

- Un utilisateur quelconque ne peut pas créer de compte, même s'il a le privilège de faire partie du groupe root.! Par contre, il peut modifier lui-même son mot de passe.

- Pour avoir plus d'informations sur les options, ne pas hésiter à faire recours aux pages man de la commande adduser ou utiliser la commande : useradd -h

- Pour une gestion sous interface graphique, Il existe divers outils qui seront présentés dans ce même dossierfont size='2'>

Attention ! Le compte créé permet à l'utilisateur d'accéder au système de fichier Linux (avec des droits que nous verrons).

- Pour pouvoir se connecter au réseau SAMBA, à partir d'une station distante Windows, il faut créer un compte Samba avec l'utilitaire smbpasswd


Gestion des groupes d'utilisateurs


Un groupe sous Linux est un ensemble d'utilisateurs qui partagent les mêmes fichers et répertoires. Nous verrons que les fichiers accordent des droits d'accès réglables à ces groupes.


Chaque utilisateur doit faire partie au moins d'un groupe, son groupe initial ou primaire. Celui-ci est défini au moment de la création du compte, et par défaut sous Linux Mandriva, l'utilisateur appartient à un nouveau groupe créé, portant son nom.

Ainsi, dans /etc/passwd chaque utilisateur possède un groupe par défaut, précisé par son identifiant gid dans ce fichier.


L'appartenance au groupe primaire n'étant pas exclusive, tout utilisateur peut faire partie de plusieurs autres groupes, appelés ses groupes secondaires.


Mais le rôle joué par le groupe primaire demeure prépondérant, comme nous le verrons dans le système des permissions des fichiers.


Pour lister tous les groupes (primaire et secondaires) d'un utilisateur : groups utilisateur


Pour créer un nouveau groupe : groupadd groupe


Supprimer le groupe .stagiaires : groupdel stagiaires (Le groupe est alors supprimé du fichier /etc/group).


Pour ajouter un utilisateur à un groupe, le plus simple est d'éditer le fichier /etc/group et d'ajouter une liste d'utilisateurs (séparés par des virgules) sur la ligne du groupe (ou utiliser Linuxconf).


Structures des fichiers /etc/passwd et /etc/group


Tout ce qui concerne la gestion et l'authentification des utilisateurs est inscrit dans un seul fichier /etc/passwd
La gestion des groupes est assurée par
/etc/group

Les mots de passe cryptés sont souvent placés dans /etc/shadow, par sécurité lisible seulement par root.


Structure de /etc/passwd

Ce fichier comprend 7 champs, séparés par le symbole « : »

  1. nom de connexion (encore appelé nom d'utilisateur ou login)

  2. ancienne place du mot de passe crypté

  3. numéro d'utilisateur uid, sa valeur est le véritable identifiant pour le système Linux; l'uid de root est 0, le système attribue conventionnellement un uid à partir de 500 aux comptes créés.

  4. numéro de groupe gid, dans lequel se touve l'utilisateur par défaut; le gid de root est 0, les groupes d'utilisateurs au delà de 500

  5. nom complet, il peut être suivi d'une liste de renseignements personnels (cf chfn)

  6. rép. personnel (c'est également le rép. de connexion)

  7. shell, interprétateur de commandes (par défaut /bin/bash)

Structure de /etc/group

Ce fichier comprend 4 champs, séparés par le symbole « : »

  1. nom du groupe

  2. x pour remplacer un mot de passe non attribué maintenant

  3. numéro de groupe, c-à-d l'identifiant gid

  4. la liste des membres du groupe

Pour Connaitre l'uid et le gid de l'utilisateur courant, on utilise la commande id dont le résultat ressemble à ce qui suit :


uid=501(stage1) gid=501(stage1) groups=501(stage1), 504(stagiaire)


Pour décrire un utilisateur on utilise la commande : chfn

Cette commande permet d'indiquer dans le champ numéro 5 du fichier /etc/passwd différentes informations sur un utilisateur, son nom complet, son bureau, ses numeros de téléphone (séparées par des virgules).


Outils opérationnels en mode texte


La commande passwd

Elle est chargée du cryptage du mot de passe dans /etc/shadow

Syntaxe : passwd [option] nom-login


Options :

--stdin, la commande abandonne son caractère interactif habituel et examine son entrée standard pour s'en servir comme mot de passe.

Très utile dans un script : echo mot | passwd --stdin (attention tout caractère est significatif, y compris les ' ')

-d , pour supprimer le mot de passe, l'utilisateur pourra se connecter sans !

-l , pour verrouiller le compte et empêcher sa connexion.

-u , pour déverrouiller.


Cryptage des mots de passe

Pour des questions de sécurité, les mots de passe cryptés ne sont pas stockés dans /etc/passwd qui doit etre accessible en lecture par tous.


La commande /usr/sbin/pwconv est chargée de transférer les mots de passes cryptés, dans /etc/shadow. Pour plus de détails , consulter man pwconv


Pour interdire l'utilisation, il suffit de remplacer le mot de passe chiffré par une étoile : '*'.

Les accès à un compte peuvent éventuellement être ouverts en laissant le champ mot_de_passe vide. Toute personne voulant se connecter avec ce compte pourra alors le faire.


Récapitulatif des principales commandes

useradd, usermod, userdel

gestion des comptes utilisateur

groupadd, groupmod, groupdel

gestion des groupes

pwck, grpck

vérification des fichiers

passwd

changer le mot de passe d'un utilisateur

chfn, id, groups, finger

utilitaires divers


Outils graphiques de gestion des comptes et groupes


Les trois outils que nous présentons brièvement nécessitent tous une connexion au système en tant que root.


Linuxconf

Linuxconf est un véritable couteau suisse d'aministration Linux dont l'utilisation nécessite de se connecter au système en tant que root. En général il se lance en ligne de commande (on peut utiliser linuxconf sous X-KDE sur les systèmes Redhat Section Comptes utilisateurs)


Kuser

Kuser est une petite application graphique intégrée à l'interface graphique KDE. Pour le lancer sous Linux Mandriva, il faut exécuter la commande Lanceur d'application/Configuration/Other/User Manager ou tout simplement la commande Kuser dans une fenêtre console.


Userdrake

Userdrakeest une utilitaire graphique dévéloppé par l'éditeur Mandrakesoft. Pour le lancer sous Linux Mandriva, il faut exécuter la commande Lanceur d'application /Configuration/Other/Userdrake ou tout simplement la commande userdrake dans une fenêtre console.


La personnalisation du shell


Il est possible à partir du Shell de modifier l'interpréteur de commandes.
Pour ce faire, il faut utiliser la commande chsh ou alors passwd -s. Linux cherche alors dans le fichier /etc/shells le programme que vous avez spécifié. Seules les commandes présentes dans ce fichier seront acceptées et remplaceront la valeur actuelle du champ programme_de_demarrage. Ces restrictions ne s'appliquent pas au compte du superutilisateur.


Assurez-vous que les droits d'accès du fichier /etc/shells sont les mêmes que pour le fichier /etc/passwd.


Le superutilisateur ne se nomme pas obligatoirement root. Pour le changer, il suffit de remplacer le nom du compte root par celui désiré. Un compte privilégié est un compte dont l'identifiant (UID, User ID) vaut zéro.


Le fichier /etc/profile permet de configurer le Shell. Il concerne tous les utilisateurs.

On y trouve tout d'abord les variables du Shell telles que OPENWINHOME, PATH, ..le type de terminal et la variable TERM. Une partie est consacrée au prompt du Shell, enfin une dernière permet la définition des couleurs de la commande ls..

Au démarrage de Linux, il est agréable d'avoir le pavé numérique allumé, ce qui n'est pas le cas par défaut. Il suffit de rajouter au fichier /etc/profile les lignes qui suivent :


INITTY=/dev/tty[1-7]

for tty in $INITTY;

do setleds -D +num < $tty

done



L'administrateur configure un prompt identique pour tous les utilisateurs du système en modifiant la variable PS1 dans le fichier /etc/profile.
S'il veut un prompt du genre 'Bonjour#', il lui faut d'éditer le fichier. Toutes les lignes concernant la variable PS1 doivent alors être précédées d'un dièze: #. Il suffit alors d'ajouter la ligne PS1='Bonjour#'.

L'utilisateur a le loisir de reconfigurer son prompt en éditant le fichier ~/.bash_profile (donc un fichier caché de son répertoire personnel) et en positionnant à sa guise la même variable.


Il est vivement conseillé de laisser un blanc après le prompt pour une meilleure lisibilité. Il est également possible d'utiliser des variables dans le prompt (pour afficher par exemple l'heure ou le nom de la machine...) :


- d pour ajouter la date (format anglais)

- pour ajouter l'heure (HH:MM:SS)

- u pour ajouter le nom de l'utilisateur

- pour un retour à la ligne

- w pour ajouter le chemin complet du répertoire courant

- W pour ajouter le répertoire courant

- h pour ajouter le nom de la machine


La couleur peut également être changée. Pour ceci, il faut utiliser la variable PS1 comme ceci:


PS1='[�33[num_couleurm]prompt_voulu�33[0m]'


Le numéro de la couleur sera pris dans la liste suivante:

Noir

0;30

Rouge

0;31

Vert

0;32

Brun

0;33

Bleu

0;34

Violet

0;35

Cyan

0;36

Gris Clair

0;37

Gris

1;30

Rose

1;31

Vert Clair

1;32

Brun Clair

1;33

Bleu Clair

1;34

Violet Clair

1;35

Cyan Clair

1;36

Blanc

1;37






Voici un exemple qui indique l'heure suivie du nom de l'utilisateur en rouge:

PS1=' [�33[0;31m]u�33[0m]'



Par l'équipe technique A.N.F.A