Gestion des utilisateurs

Présentation de ce cours
Rubrique : Administration de GNU/Linux
Niveau : **
Audience : Administrateur d'un système multi-utilisateur ou simple utilisateur voulant mieux connaître les mécanismes internes.
Lectures préalables :
But : Savoir comment les utilisateurs sont gérés sur un système GNU/Linux.

Généralités | (Haut de page) |

Dans un système Gnu/Linux, il y le plus souvent plusieurs utilisateurs. Un utilisateur peut correspondre à une personne physique qui va se servir de la machine. Mais aussi à un service particulier. Par exemple un service fournissant des pages web pourra être lancé par un utilisateur s'appelant web.

Chaque utilisateur aura des données qui lui sont propres. Il s'agit de réglages comme la configuration de son environnement graphique (image de fond, couleurs utilisées,...) ou de fichiers (documents, images,...). Tout cela est enregistré dans ce que l'on appelle généralement le répertoire personnel de l'utilisateur, ou en anglais son home directory.

Un utilisateur a un nom qui doit être unique et comporte généralement des restrictions comme le fait de ne pas pouvoir contenir d'espace. Toutefois à ce nom logique peut être associé un nom réel qui n'a pas ces limitations.

Au coeur du système d'exploitation, ce n'est pas ce nom qui est utilisé mais un numéro appelé UID.

L'utilisateur courant est celui qui a été renseigné lors de la connexion. Mais il peut aussi être changé par la suite au moyen du programme su (dont le nom vient des initiales de Substitute User). su est suivi du nom d'utilisateur cible. Il y a une option facultative entre la commande et le nom d'utilisateur qui est un - (tiret). S'il est présent, tout se passe comme s'il s'agissait d'une nouvelle connexion. Le shell va donc aller lire ses fichiers de démarrage et aussi ceux spécifiques à l'utilisateur. Par exemple :

> su - tian

Cela permet à l'utilisateur courant de devenir l'utilisateur tian. Une différence notable entre l'utilisation ou non de l'option - est le fait qu'après cette opération, on se retrouve dans le répertoire personnel de l'utilisateur si elle a été spécifiée. Dans le cas contraire, on reste dans le répertoire courant.

Pour savoir à tout moment quel est l'utilisateur actif dans une invite de commande, il faut taper :

> whoami

Base de données des utilisateurs | (Haut de page) |

Le fichier utilisé pour contenir la liste des utilisateurs est /etc/passwd. Il pourrait ressembler à ceci :

root:x:0:0:root:/root:/bin/bash
nobody:x:99:99:Nobody:/:/sbin/nologin
tian:x:500:100:Tian:/home/tian:/bin/bash
tv:x:501:100:Television:/home/tv:/bin/bash

Voici la signification des différents champs de chaque ligne de ce fichier :

Format dans /etc/passwd
PositionNomDescription
1UtilisateurLe nom d'utilisateur tel qu'il devra être saisi pour se connecter.
2Mot de passeLe mot de passe de l'utilisateur. Lorsque celui-ci est présent, il est crypté. Mais comme il était quand même possible de le retrouver, les systèmes modernes mettent le mot de passe dans le fichier /etc/shadow (protégé en lecture) et on trouve dans ce champ seulement un x.
3Identifiant utilisateurUn nombre identifiant de manière unique un utilisateur dans le système. En interne, c'est lui qui sera utilisé plutôt que le nom.
4Identifiant groupeUn nombre correspondant à l'identifiant du groupe par défaut de l'utilisateur. On le retrouve dans /etc/groups.
5Nom completLe nom complet de l'utilisateur qui pourra être utilisé pour l'affichage. Il n'a pas de réelle utilité.
6Répertoire personnelLe chemin vers le répertoire où sont stockées les données personnelles de l'utilisateur.
7ShellLe shell qui doit être lancé après une connexion réussie.

Dans l'exemple précédent, on peut voir /sbin/nologin pour le shell de connexion. Cela correspond à un programme affichant un message d'erreur afin d'empêcher que quelqu'un ne se connecte avec cet utilisateur. On peut aussi, selon les systèmes, trouver /bin/false pour obtenir le même effet.

L'autre fichier utilisé est /etc/group qui contient la liste des groupes. En voici un exemple :

root:x:0:root
nogroup:x:99:nobody
utilisateurs:x:100:tian,tv
video:x:200:tv

Le fichier contient les champs suivants :

Format dans /etc/group
PositionNomDescription
1GroupeLe nom du groupe.
2Mot de passeCe champ peut servir à stocker un mot de passe pour le groupe. Il est très rarement utilisé et contiendra la valeur x ou parfois ! selon les systèmes.
3Identifiant groupeUn nombre identifiant de manière unique un groupe dans le système. C'est lui qui est référencé dans /etc/passwd et qui sera utilisé en interne.
4Membres du groupeUne liste des utilisateurs appartenant à ce groupe. Les différents utilisateurs sont séparés par des virgules.

A noter que si l'utilisateur a un groupe principal référencé dans /etc/passwd, il peut appartenir à d'autre groupes. Dans l'exemple précédent, tv appartient au groupe utilisateurs qui est son groupe principal, mais aussi au groupe video.

Il existe d'autres possibilités pour référencer les utilisateurs. On peut citer LDAP. Il permet entre autres d'avoir un annuaire centralisé contenant une liste d'utilisateurs partagés par plusieurs systèmes. Cet annuaire contient alors des informations semblables à celles données ci-dessus.

Catégories d'utilisateurs | (Haut de page) |

Il y a sur tous les systèmes un utilisateur particulier, l'administrateur, appelé traditionnellement root. Cet utilisateur a le UID de numéro 0.

Le root a tous les droits sur un système GNU/Linux. Il peut supprimer tous les fichiers, changer toutes les configurations et aussi devenir n'importe quel utilisateur sans devoir entrer de mot de passe.

Cet utilisateur est typiquement créé lors de l'installation du système. Il sera ensuite utilisé pour créer tous les autres utilisateurs.

L'administrateur étant un peu à part, on distingue ensuite deux catégories principales d'utilisateurs.

Il y a tout d'abord les utilisateurs réels. Ils correspondent à une personne qui va se connecter sur le système. La manière de se connecter peut varier. Cela peut être fait en ayant accès physiquement à la machine, ou à distance sur un ordinateur en réseau.

Il est bien sûr possible pour une personne physique d'avoir plusieurs de ces utilisateurs dans un système. Ce peut être utile par exemple pour avoir des configurations différentes.

Les autres utilisateurs sont appelés utilisateurs systèmes. Ils sont utilisés de manière interne, notamment pour lancer les démons. Il s'agit par exemple de l'utilisateur web évoqué en début d'article.

A noter que ces catégories se différencient surtout par l'usage que l'on en fait et ne sont pas liées aux groupes vus précédemment. Il n'y a pas réellement de configuration visible pour spécifier à quelle catégorie appartient un utilisateur donné. On peut toutefois trouver le plus souvent quelques caractéristiques communes. Par exemple les utilisateurs sans shell de connexion (ou alors avec quelque chose comme /sbin/nologin) seront utilisés par le système. De même les utilisateurs réels pourront avoir un répertoire personnel dans une arborescence commune (sous le répertoire /home).

Création de nouveaux utilisateurs | (Haut de page) |

Pour créer des utilisateurs, la commande de base est useradd. On peut l'utiliser simplement en lui passant un nom d'utilisateur.

> useradd nouveau

Cela va uniquement ajouter l'utilisateur au système avec les options par défaut. Il existe plusieurs options pouvant être utilisées avec ce programme. Malheureusement elles peuvent varier selon les systèmes. Il vaut donc mieux consulter sa page de manuel pour connaître les différentes possibilités.

> man useradd

Une option courante est -m qui permet la création du répertoire personnel de l'utilisateur. Ceci est très utile pour les utilisateurs véritables, mais ne le sera pas pour les utilisateurs systèmes. Le répertoire sera créé en ajoutant au chemin par défaut (généralement /home) le nom de l'utilisateur.

La manière de changer les options par défaut (répertoire de base, shell, groupe,...) est aussi très différente selon les versions de useradd, et il faudra donc à nouveau consulter la documentation associée.