Comment modifier les données utilisateur avec chfn et usermod sous Linux

Photo of author

By pierre



Au-delà du simple nom d’utilisateur, un compte utilisateur recèle une multitude d’informations. Découvrons comment définir et ajuster l’ensemble des métadonnées liées à un compte utilisateur Linux, directement depuis la ligne de commande.

Que cache un nom ?

Dans un environnement Linux ou Unix, chaque utilisateur possède un compte, identifié par un nom d’utilisateur. C’est ce nom qui sert à la connexion et qui est, par défaut, repris pour le groupe de connexion ainsi que le répertoire personnel de l’utilisateur. Tous ces éléments partagent le même identifiant.

Cependant, d’autres données peuvent être associées à chaque compte. On peut ainsi définir des informations telles que le nom complet, le numéro de bureau ou le téléphone professionnel. Plus largement, toute information arbitraire peut être liée à un compte.

Ces possibilités s’avèrent particulièrement utiles pour les administrateurs système qui gèrent des machines avec un grand nombre de comptes. Mais même pour l’utilisateur unique d’un ordinateur Linux, il est intéressant de comprendre ce qui se passe « sous le capot ».

Le champ GECOS

À l’aube d’Unix, les pionniers de ce système ne disposaient pas de leurs propres imprimantes. Ils devaient donc envoyer leurs travaux vers un mainframe General Electric qui utilisait le Système d’exploitation complet de General Electric (GECOS). Afin d’effectuer cela, les utilisateurs d’Unix devaient stocker et utiliser les informations d’identification d’un compte sur le système GECOS.

Le champ GECOS a été créé pour ces informations. Bien que cette nécessité historique ne soit plus d’actualité, le champ GECOS a été conservé pour stocker d’autres informations sur le propriétaire du compte. Il a donc une nouvelle fonction, mais garde son appellation d’origine. Il est toujours désigné comme le champ GECOS.

Ce champ est conservé dans le fichier /etc/passwd, aux côtés d’autres données concernant l’utilisateur :

Le nom d’utilisateur du compte.
L’identifiant utilisateur (UID).
L’identifiant du groupe (GID).
Le chemin vers le répertoire personnel du compte.
Le shell qui est lancé à la connexion de l’utilisateur.

C’est à cet endroit que les commandes finger et pinky puisent les informations qu’elles affichent.

La commande chfn

La commande chfn (changer les informations finger) permet de définir et modifier les informations stockées dans le champ GECOS. Ces informations sont stockées sous forme de liste, les éléments étant séparés par des virgules.

La commande chfn est généralement installée par défaut, comme sur Ubuntu 18.04.1 et Manjaro 18.1.0. Si elle ne l’est pas, comme sur Fedora 31, installez-la via cette commande:

sudo dnf install util-linux-user

Voyons ce que la commande finger peut révéler sur le propriétaire du compte « dave ». Pour un maximum d’informations, utilisons l’option -l (format long) :

finger dave -l

Voici ce que cette commande a pu trouver :

La commande récupère le nom d’utilisateur du compte, son répertoire personnel et son shell par défaut. Ces informations sont liées au compte, mais ne font pas référence à la personne réelle qui l’utilise. La commande chfn permet d’enregistrer des informations sur cette personne.

chfn dave

Lancer chfn de cette manière déclenche un bref processus interactif. Vous êtes invité à saisir une valeur pour chaque élément d’information que le champ GECOS peut contenir. La valeur actuelle de chaque champ est affichée entre parenthèses []. Pour conserver la valeur existante, appuyez simplement sur la touche « Entrée ».

Voici les informations saisies :

Numéro de bureau : 512
Téléphone professionnel : 555-4567
Téléphone personnel : 555-5432

Vérifions si la commande finger détecte ces nouvelles informations :

finger dave -l

C’est bien le cas. Cependant, vous avez peut-être remarqué que la commande n’a pas permis de modifier le nom complet. Pour cela, il faut utiliser sudo. Inutile toutefois de recommencer toute la session chfn, car il est possible de modifier chaque élément individuellement.

Modification individuelle des valeurs

L’option -f (nom complet), combinée à sudo, permet de définir le nom complet du propriétaire du compte.

sudo chfn -f "Dave McKay" dave

Vérifions avec finger :

Le nom complet a bien été ajouté.

Il existe également des options pour modifier le numéro de bureau, le téléphone personnel et le téléphone professionnel. Pour modifier le numéro de bureau, utilisez l’option -r (numéro de bureau) :

sudo chfn -r 633 dave

Notez que certaines distributions utilisent l’option -o (numéro de bureau) à la place de -r. Nous reviendrons dessus plus tard. Pour connaître les options de votre version de chfn, utilisez :

man chfn

Pour modifier le numéro de téléphone professionnel, utilisez l’option -w (téléphone professionnel) :

sudo chfn -w 555-1122 dave

Enfin, pour modifier le numéro de téléphone personnel, utilisez l’option -h (numéro de téléphone personnel) :

sudo chfn -h 555-6576 dave

Vérifions une dernière fois avec finger si ces modifications ont été prises en compte :

finger dave -l

C’est réussi. Toutes ces commandes ont fonctionné et les données ont bien été mises à jour.

Utilisation de chfn sur d’autres comptes

Modifier ses propres informations est une chose, mais qu’en est-il des informations GECOS des autres utilisateurs ? C’est tout aussi simple. La seule différence est qu’il faut utiliser sudo. Vérifions les données du compte « mary » :

finger mary -l

Les informations par défaut sont définies pour ce compte. Ajoutons-y des données :

sudo chfn mary

Nous allons exécuter la même session que précédemment, en étant invité à saisir une valeur pour chaque donnée. Et comme nous utilisons sudo, la saisie du nom complet est également demandée.

Attendez une minute, qu’est-ce que ce dernier élément, intitulé « Autre » ?

Il n’est pas pris en charge par toutes les versions de chfn, et il n’apparaît que si vous utilisez sudo. C’est pourquoi il n’apparaissait pas lorsque nous n’utilisions pas sudo avec :

chfn dave

La valeur « Autre » peut contenir tout ce que vous désirez. Il n’y a pas d’utilisation prescrite ou attendue.

Les versions de chfn qui gèrent le champ « Autre » proposent également l’option -o (autre) pour modifier cette valeur directement. C’est en raison de cette double utilisation de -o (pour « numéro de bureau » et pour « autre ») que certains systèmes utilisent l’option -r pour le « numéro de bureau ».

Les données du compte « mary » sont visibles dans le fichier /etc/passwd, via la commande less :

less /etc/passwd

Sur les systèmes qui le gèrent (consultez la page de manuel de votre version de chfn), il est possible de définir directement le champ « Autre » en utilisant l’option -o (other) :

sudo chfn -o "HTG Freelancer" dave

Vérifions les données du compte « dave » à l’aide de la commande less :

less /etc/passwd

Cela soulève une question : si votre version de chfn ne prend pas en charge le champ « Autre », comment le modifier ? Il est possible de le faire avec la commande usermod.

La commande usermod

La commande usermod permet de modifier divers aspects d’un compte utilisateur, comme l’ajout ou la suppression de l’utilisateur dans des groupes, ou encore la modification de son shell par défaut. Elle peut également être utilisée pour manipuler directement le champ GECOS.

Examinons de plus près la ligne du fichier /etc/passwd pour le compte « mary ». Utilisons grep pour isoler cette ligne. Cela fonctionne car les noms d’utilisateurs doivent être uniques. Il ne peut exister qu’un seul compte « mary ».

grep mary /etc/passwd


Les champs du fichier etc/passwd sont affichés. Le séparateur de champ est un deux-points  » : « . De gauche à droite, les champs sont :

Le nom d’utilisateur du compte.
Un « x » qui indique que le mot de passe de ce compte est conservé de manière chiffrée dans le fichier /etc/shadow.
L’identifiant utilisateur du compte.
L’identifiant du groupe.
Le champ GECOS.
Le chemin vers le répertoire personnel du compte.
Le shell qui est lancé à la connexion de l’utilisateur.

Dans le champ GECOS, une virgule  » ,  » sert de séparateur entre les différentes valeurs. Ces valeurs sont, de gauche à droite :

Le nom complet.
Le numéro de bureau.
Le numéro de téléphone professionnel.
Le numéro de téléphone personnel.
Les informations « Autres ».

Notez que la commande usermod définit l’ensemble du champ GECOS avec la nouvelle valeur que vous lui fournissez. Si vous ne fournissez que le nom complet, le champ GECOS ne contiendra que celui-ci. Vous devez donc fournir toutes les valeurs existantes que vous souhaitez conserver.

Voici un exemple. L’utilisatrice « Mary » a été promue et change de bureau. Elle a un nouveau numéro de bureau, un nouveau téléphone professionnel, et nous allons ajouter son deuxième prénom. Sa valeur de champ « Autre » va aussi changer. Bien que son numéro personnel ne change pas, il est nécessaire de le fournir à usermod.

Pour cela, nous allons utiliser l’option -c (commentaire) et exécuter la commande avec sudo.

sudo usermod -c "Mary Carol Quinn,405,5559654,555-7704,Linux Advocate" mary

Utilisons à nouveau grep pour vérifier le contenu du fichier /etc/passwd pour « mary ». Cela montre que les nouvelles valeurs ont été prises en compte.

grep mary /etc/passwd

Le changement est la seule constance

Des données inexactes n’ont aucune valeur. Lorsque les informations sur les personnes changent (déménagement de bureau, changement de nom, nouveau poste), vous pouvez facilement mettre à jour leurs métadonnées pour refléter leur situation actuelle.