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

Il y a plus dans un compte d’utilisateur qu’un nom d’utilisateur. Découvrez comment définir et modifier toutes les métadonnées associées à un compte utilisateur Linux à partir de la ligne de commande.

Qu’est-ce qu’il y a dans un nom?

Si vous utilisez un ordinateur de type Linux ou Unix, vous aurez un compte utilisateur. Le nom donné au compte est le nom de votre compte utilisateur. C’est le nom que vous utilisez pour vous connecter. C’est aussi (par défaut) le nom de votre groupe de connexion et le nom de votre répertoire personnel. Ils utilisent tous le même identifiant.

Il existe un autre ensemble d’informations qui peuvent être stockées pour chaque compte utilisateur. Des données du monde réel telles que le nom complet de la personne, son numéro de bureau et son numéro de téléphone professionnel, par exemple, peuvent être définies et associées. En effet, des extraits d’informations totalement arbitraires peuvent être associés à des comptes d’utilisateurs.

En termes pratiques, cela sera plus utile pour les administrateurs système qui s’occupent d’ordinateurs sur lesquels de nombreux comptes d’utilisateurs sont configurés. Mais même pour l’ordinateur Linux mono-utilisateur, il est toujours intéressant de savoir ce qui se passe sous le capot.

Le champ GECOS

À une certaine époque, les pionniers d’Unix n’avaient pas d’imprimante propre. Ils ont dû spouler leurs travaux d’impression vers un General Electric mainframe qui exécutait le Système d’exploitation complet de General Electric (GECOS). Pour ce faire, les utilisateurs des systèmes Unix devaient stocker et utiliser les informations d’identification d’un compte sur le système GECOS.

Le champ GECOS a été créé pour stocker ces informations d’identification. Cette exigence de niche est depuis longtemps passée dans l’histoire, et le champ GECOS a été réaffecté pour stocker d’autres données liées au propriétaire du compte utilisateur. Il peut avoir un nouvel emploi, mais il conserve son ancien nom. Il est toujours appelé le champ GECOS.

Le champ est stocké dans le fichier / etc / passwd, avec d’autres informations concernant le compte utilisateur:

Le nom d’utilisateur du compte.
L’ID utilisateur.
L’ID du groupe.
Chemin d’accès au répertoire de base du compte d’utilisateur.
Le shell qui est démarré lorsque l’utilisateur se connecte.

C’est là que le doigt commande et le pinky commande récupérer les informations qu’ils affichent.

  Comment utiliser HardInfo pour vérifier les informations matérielles Linux

La commande chfn

Le chfn (modifier les informations du doigt) vous permet de définir et modifier les informations stockées dans le champ GECOS. Les informations sont stockées sous forme de liste séparée par des virgules dans le champ.

La commande chfn était déjà présente sur Ubuntu 18.04.1 et Manjaro 18.1.0. Il devait être installé sur Fedora 31. Utilisez cette commande pour l’installer:

sudo dnf install util-linux-user

sudo dnf installe util-linux-user dans une fenêtre de terminal

Voyons ce que finger peut découvrir sur le propriétaire du compte utilisateur «dave». Pour obtenir le maximum d’informations, nous utiliserons l’option -l (format long):

finger dave -l

doigt dave -l dans une fenêtre de terminal

Voici ce qu’il a pu trouver:

Sortie de finger dave -l dans une fenêtre de terminal

Il récupère le nom d’utilisateur du compte, le répertoire de base et le shell par défaut. Ceux-ci sont tous liés au compte utilisateur. Ils ne font pas référence à la personne réelle qui utilise ce compte. Nous pouvons utiliser la commande chfn pour stocker des informations sur la personne réelle.

chfn dave

chfn dave dans une fenêtre de terminal

Utiliser chfn de cette manière démarre un processus court et interactif. Vous êtes invité à saisir une valeur de données pour chaque élément d’information que le champ GECOS peut contenir. La valeur actuelle de chaque valeur de données est affichée entre parenthèses []. Si vous souhaitez conserver les données actuelles, vous pouvez appuyer sur la touche «Entrée» et la valeur entre parenthèses sera conservée.

Le processus interactif chfn dans une fenêtre de terminal

Les informations que nous avons saisies étaient:

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

Session chfn terminée dans une fenêtre de terminal

Vérifions que le doigt capte ces nouvelles informations:

finger dave -l

doigt dave -l dans une fenêtre de terminal

Oui. Mais vous avez peut-être remarqué que cela ne vous demandait pas de changer le nom complet. Cela ne le fera que si vous utilisez sudo. Mais nous n’avons pas à refaire toute la session chfn, simplement parce que nous avons oublié d’utiliser sudo. Nous pouvons modifier individuellement l’une des valeurs de données.

Modification des valeurs de données individuelles

Nous pouvons définir le nom complet du propriétaire du compte utilisateur en utilisant l’option -f (nom complet), avec sudo.

sudo chfn -f "Dave McKay" dave

sudo chfn -f

Et si on vérifie une fois de plus avec le doigt:

Sortie du doigt dans une fenêtre de terminal

Nous pouvons voir que le nom complet a été ajouté.

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

sudo chfn -r 633 dave

sudo chfn -r 633 dave dans une fenêtre de terminal

Notez que sur certaines distributions, vous pouvez utiliser l’option -o (numéro de bureau) au lieu de l’option -r. Plus à ce sujet sous peu. Pour l’instant, pour voir les options de votre version de chfn, utilisez:

man chfn

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

sudo chfn -w 555-1122 dave

sudo chfn -w 555-1122 dave dans une fenêtre de terminal

Et enfin, pour changer le numéro de téléphone du domicile, utilisez l’option -h (numéro de téléphone du domicile):

sudo chfn -h 555-6576 dave

sudo chfn -h 555-6576 dave dans une fenêtre de terminal

Utilisons à nouveau le doigt pour voir si toutes ces modifications ont été acceptées:

finger dave -l

doigt dave -l dans une fenêtre de terminal

Succès. Toutes ces commandes ont fonctionné et les valeurs des données ont été mises à jour.

  [FIX] Le fichier Microsoft Teams est verrouillé sous Windows 10

Utilisation de chfn sur d’autres comptes d’utilisateurs

Tant pis pour changer nos propres informations, qu’en est-il de changer les informations GECOS pour les autres utilisateurs? C’est tout aussi simple. Vous devez utiliser sudo lorsque vous le faites, mais c’est la seule différence. Vérifions quelles données sont définies pour le compte utilisateur mary:

finger mary -l

doigt mary -l dans une fenêtre de terminal

Les informations par défaut habituelles sont définies pour ce compte utilisateur. Ajoutons aux informations:

sudo chfn mary

sudo chfn mary dans une fenêtre de terminal

Nous allons exécuter la même session que précédemment, en étant invité à entrer une valeur de données pour chaque information pouvant être stockée. Et comme nous avons utilisé sudo, on nous demande la valeur de données du nom complet.

Session terminée pour sudo chfn mary dans une fenêtre de terminal

Attendez un instant, quel est ce dernier élément, appelé « Autre? »

il n’est pas pris en charge par toutes les versions de chfn, et vous ne le voyez que si vous utilisez sudo, c’est pourquoi nous ne l’avons pas vu plus tôt lorsque nous n’avons (délibérément) pas utilisé sudo avec:

chfn dave

La valeur de données «Autre» peut contenir tout ce que vous voulez. Il n’a aucune utilisation prescrite ou prévue.

Les versions de chfn qui prennent en charge le champ «Autre» fournissent également l’option -o (autre) pour modifier cette valeur directement. C’est à cause du conflit entre -o pour «numéro de bureau» et -o pour «autre» que certains systèmes utilisent -r pour «numéro de pièce».

Nous pouvons voir les données stockées pour le compte utilisateur mary dans le fichier / etc / paswd, en utilisant less:

less /etc/passwd

lass / etc / passwd dans une fenêtre de terminal

Sur les systèmes qui le prennent en charge (consultez la page de manuel de votre version de chfn), vous pouvez définir le champ «other» directement en utilisant l’option -o (other):

sudo chfn -o "HTG Freelancer" dave

sudo chfn -o

Et nous pouvons vérifier les données du compte utilisateur dave en utilisant la commande less:

less /etc/passwd

moins / etc / p <span data-mce-type =[asswddansunefenêtredeterminal »width= »646″height= »382″/>[asswdinaterminalwindow”width=”646″height=”382″/>

Cela soulève une question évidente. Si votre version de chfn ne prend pas en charge le champ «Autre», comment le modifier? Nous pouvons le faire avec la commande usermod.

  Comment rendre une course ou une course privée sur Strava

La commande usermod

La commande usermod vous permet de modifier les aspects d’un compte utilisateur par des actions telles que l’ajout ou la suppression du compte d’utilisateur des groupes et la modification de leur shell par défaut. Il peut également être utilisé pour manipuler directement le champ GECOS.

Examinons de plus près la ligne du fichier / etc / passwd pour le compte utilisateur mary. Nous utiliserons grep pour isoler cette ligne pour nous. Cela fonctionnera car les noms d’utilisateur doivent être uniques. Il ne peut y avoir qu’un seul compte utilisateur appelé mary.

grep mary /etc/passwd

grep mary / etc / passwd dans une fenêtre de terminal

Les champs du fichier etc / passwd s’affichent. Un signe deux-points « : » est utilisé comme séparateur de champ. de gauche à droite, les champs sont:

Le nom d’utilisateur du compte.
Un «x» qui indique le mot de passe de ce compte utilisateur est conservé chiffré dans le fichier / etc / shadow.
L’ID utilisateur du compte utilisateur mary.
ID de groupe pour le compte utilisateur mary.
Le champ GECOS.
Chemin d’accès au répertoire de base du compte utilisateur mary.
Le shell qui est lancé lorsque le propriétaire du compte mary se connecte.

Une virgule «,» est utilisée comme séparateur pour les valeurs de données dans le champ GECOS. Les valeurs dans le champ GECOS sont, de gauche à droite:

Nom complet.
Numéro de chambre (ou bureau).
Numéro de téléphone professionnel.
Numéro de téléphone à la maison.
Les autres informations.

Notez que la commande usermod définit l’ensemble du champ GECOS sur la nouvelle valeur que vous fournissez. Si vous ne fournissez que le nom complet de la personne, la seule chose dans le champ GECOS sera le nom complet. Cela signifie que vous devez fournir toutes les valeurs de données existantes que vous souhaitez conserver.

Voici un exemple. L’utilisateur Mary a été promue et elle va déménager au quatrième étage. Elle a un nouveau numéro de bureau, un nouveau numéro de téléphone professionnel, et nous allons ajouter son deuxième prénom. La valeur de son champ «Autre» va également changer. Bien que son numéro de téléphone personnel ne changera pas, nous devons le fournir dans la chaîne à usermod.

Nous devons 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

sudo usermod -c

L’utilisation de grep pour rendre compte du contenu du fichier / etc / passwd pour mary nous montre que les nouvelles valeurs ont été ajoutées.

grep mary /etc/passwd

grep mary / etc / passwd dans une fenêtre de terminal

Tout est flux, rien ne demeure

Des données inexactes sont sans valeur. Lorsque les informations sur les personnes changent (déménagement de bureau, changement de nom, titre de rôle), vous pouvez facilement mettre à jour leurs méta-données pour refléter la position actuelle.