TUTOS.EU

La gestion des comptes utilisateurs sous Linux

Gérer les comptes des utilisateurs d'un OS Linux

On peut interroger un compte avec la commande id
Cela indiquera si le user existe, donnera son id, son id de groupe et donnera les groupes dans lequel il est présent

id <loginachecker>
Lien vers le fichier : cliquez ici Copier le code

Vous pouvez voir le contenu du fichier passwd qui gère les comptes avec la commande getent qui gère les bibliothèques NSS dont passwd fait parti.

Sur le sujet vous pouvez regarder cette entrée de manpages ou cette entrée wiki

Vous pouvez voir uniquement les logins des comptes en tapant

grep bash /etc/passwd | cut -f1 -d:
Lien vers le fichier : cliquez ici Copier le code

Dans l'exemple ci-dessous on voit 2 comptes, cad root et myuser :

On peut ajouter un compte avec la commande adduser et le supprimer avec userdel.
L'option -m permet de s'assurer que le /home sera créé dans tous les cas, mais vous pouvez vous en passer.
-U s'assure qu'un groupe au nom du user sera créé
-r de userdel demande de supprimer le homefolder associé au compte.

useradd -U -m <loginacreer>
userdel -r <loginasupprimer>
Lien vers le fichier : cliquez ici Copier le code

Suivant les distribution, la suppression du groupe associé au compte n'est pas automatique. Pour assurer le coup vous pouvez utiliser la commande groupdel

groupdel [login]
Lien vers le fichier : cliquez ici Copier le code

useradd crée par défaut un répertoire pour le compte dans /home et assigne /bin/bash comme shell.

Si vous le souhaitez, vous pouvez préciser ces paramètres

useradd alfred -c "compte d Alfred" -d /home/alfred -U -m -s /bin/bash
Lien vers le fichier : cliquez ici Copier le code

Du coup, pour créer un compte de service (en no logon) qui sera utilisé pour un programme, vous pouvez mettre /usr/sbin/nologin comme shell et ne pas assigner de home

useradd serviceaccount -c "Un compte de service" -m -s /usr/sbin/nologin
Lien vers le fichier : cliquez ici Copier le code

Pour modifier le mot de passe d'un compte, en étant root, utilisez cette commande :

passwd nomdulogin
Lien vers le fichier : cliquez ici Copier le code

A noter que la politique de gestion des mots de passe est stockée dans

/etc/login.defs

 

et il se peut que le paramètre PASS_MIN_DAYS y soit à 7 par défaut.

Comme expliqué sur https://access.redhat.com/solutions/46446 cela veut dire qu'il faut attendre 7 jours pour pouvoir changer son mot de passe. Pour éviter cela il faut mettre le paramètre à 0

 

Vous pouvez modifier simplement ce paramètre (pour les futurs comptes) avec la commande sed

sudo sed -i 's/^PASS_MIN_DAYS.*/PASS_MIN_DAYS   0/' /etc/login.defs
Lien vers le fichier : cliquez ici Copier le code

Pour les comptes qui ont été créés avant d'avoir modifié PASS_MIN_DAYS,
vous pouvez utiliser la commande chage

sudo chage -m 0 leusercible
Lien vers le fichier : cliquez ici Copier le code

Pour être plus complet pour un compte de service vous pouvez retirer l'expiration du mot de passe, autoriser son changement plusieurs fois par jours ou encore permettre une inactivité prolongée

 

  • -I -1 : remove an account's inactivity.
  • -m 0 : set the minimum number of days between password changes to MIN_DAYS. A value of zero for this field indicates that the user may change their password at any time.
  • -M : set the maximum number of days during which a password is valid. Passing the number -1 as MAX_DAYS will remove checking a password's validity.
  • -E -1 : passing the number -1 as the EXPIRE_DATE will remove an account expiration date.

ce qui donne

sudo chage -I -1 -m 0 -M -1 -E -1 leusercible
Lien vers le fichier : cliquez ici Copier le code

Sous linux les comptes des utilisateurs sont situés dans ce fichier :

/etc/passwd
Lien vers le fichier : cliquez ici Copier le code

Si on ouvre le fichier avec la commande
less /etc/passwd

on trouve un contenu brut de ce type :

Tous ne sont pas des comptes utilisateurs.
Il y a des comptes utilisés par des services comme www-data ou syslog.

Les comptes utilisateurs se terminent en /bin/bash

C'est pour cela que l'on peut afficher uniquement les comptes utilisateurs en filtrant sur le mot bash avec un Grep. Pour cela la commande est :

grep bash /etc/passwd
Lien vers le fichier : cliquez ici Copier le code

Chaque champ est séparé par le caractère :
de ce fait si vous voulez uniquement afficher la valeur du premier champ vous pouvez en complément utiliser la commande cut
-f1 signifie que l'on ne veut que le premier champ
-d: permet de préciser que le sépareteur est :

grep bash /etc/passwd | cut -f1 -d:
Lien vers le fichier : cliquez ici Copier le code

Cette commande assez longue à taper, aussi vous pouvez créer un alias avec la commande ci-dessous :

alias userlist='grep bash /etc/passwd | cut -f1 -d:'
Lien vers le fichier : cliquez ici Copier le code

Après cela vous n'aurez plus qu'à taper le nom de l'alias, cad ici 'userlist', pour visualiser vos comptes utilisateurs

nom_du_compte mot_de_passe numero_utilisateur numero_de_groupe commentaire répertoire programme_de_demarrage
root x 0 0 root /root /bin/bash

Notes

_ le mot de passe est codé, il n'est pas affiché

_ le commentaire peut contenir ce que l'on veut avec des informations sur l'utilisateur par exemple

_ le répertoire de connexion est celui dans lequel l'utilisateur se retrouvera après s'être connecté

_ Pour la dernière partie, soit la commande exécutée après la connexion, par exemple /bin/bash, c'est souvent un interpréteur de commandes

Pour aller dans le home de votre compte, taper

cd ~
Lien vers le fichier : cliquez ici Copier le code

Pour changer de compte, taper

su –l [other_user]
Lien vers le fichier : cliquez ici Copier le code

Pages Web

Site WebDescription
Doc.ubuntu-fr.orgLes commandes de base en console linux
Commentcamarche.netGestion des utilisateurs sous Linux
Wiki.linux-france.orgVoir le contenu d'un fichier avec la commande less
Forum.ubuntu-fr.orgPost où la commande pour créer l'alias qui permet d'afficher les users était indiqué

Article(s) suivant(s)

Article(s) précédent(s)

2