Ce document est un aide mémoire et une référence détaillant les principales commandes concernant les utilisateurs sous Linux. Cette liste de commandes n'est pas exhaustive et peut évoluer avec le temps.

Les différentes actions possibles avec les utilisateurs sont listés.

Les commandes sont disponible sous toutes les distributions et sont des commandes standard.

Sous Linux, il existe deux types d'utilisateurs, Les utilisateurs réels et les utilisateurs système. Chaque type d'utilisateur a une fonction spécifique au sein de votre système Linux . Il y a un troisième type d'utilisateur ( les utilisateurs virtuel) mais ce type d'utilisateur n'est pas concerné pas les commandes ci dessous ni décrit dans ce document.

Ces utilisateurs sont réunis dans des groupes, ce qui permet de leur attribuer des droits communs sur une ou plusieurs ressources du système.

Les commandes ci dessous n'ouvrent pas de nouvelles sessions et s'exécutent dans la session courante. Pour ouvrir une nouvelle session sur une machine, il faut utiliser la commande login.

 Les utilisateurs réels

Les utilisateurs réels  sont associés à des personnes qui se connectent sur la machine soit via une interface graphique ou un accès en ligne de commande (shell) particulier.

Ces utilisateurs sont libre d'utiliser toutes les ressources informatique mises à leur disposition. Ces profils utilisateurs disposent de droits et permissions. 

Les utilisateurs systèmes

Les utilisateurs systèmes sont ceux employés par des tâches spécifiques (exécution de logiciels ou commandes) régulières qui souvent portent le même nom que l’utilisateur.

Ce type d'utilisateur a des droits et permissions très restreint et généralement aucune possibilité de connexion.

Les groupes utilisateurs

Les groupes utilisateurs sont la pour associer les utilisateurs ayant des droits commun sur une ou plusieurs ressources mises à disposition par le système.

Ces ressources peuvent être des fichiers, répertoires ou services.

Fichiers utilisés lors de la création d'un nouvel utilisateur

Le fichier /etc/profile contient les informations utilisées par défaut pour définir les variables du shell de connexion d'un nouvel utilisateur.

Le fichier /etc/adduser.conf est utilisé pour définir les options par défaut de la commande adduser.

Le contenu du répertoire /etc/skel est automatiquement copié dans le répertoire /home de l'utilisateur nouvellement crée. Ce dossier permet d'établir des raccourcis par défaut identique pour tous les utilisateurs crées sur ce système.

Les fichiers comportant des informations sur les utilisateurs.

Fichier Description
/etc/passwd Information sur les comptes utilisateurs man 5 passwd
/etc/shadow information cachée sur les comptes utilisateurs man 5 shadow
/etc/group man 5 group
/etc/gshadow Information cachée sur les groupes man 5 gshadow
/etc/sudoers Liste de qui peut lancer quoi avec sudo man 5 sudoers
/home/* Répertoires utilisateurs  

Créer un utilisateur

Les options des commandes ci dessous sont cumulatives.

La commande adduser permet de créer un utilisateur de manière interactive. Cela la rend impossible à utiliser pour créer un utilisateur depuis un script.

Pour créer un utilisateur de manière non interactive depuis un script, il faut utiliser la commande useradd.

Créer un utilisateur

adduser utilisateur

Créer un utilisateur ayant un shell spécifique et un répertoire /home spécifique

adduser -d /home/utilisateur -s shell autorisé pour cet utilisateur

Créer un utilisateur ayant un id spécifique et appartenant à un ou plusieurs groupes supplémentaire

adduser utilisateur -u id -U groupe ou groupes

Créer un utilisateur et forcer le changement de mot de passe à la première connexion de celui ci

adduser utilisateur -e YYYY-MM-DD

Modifier un utilisateur

Modifier le shell de connexion d'un utilisateur

chsh -s [chemin absolu vers le shell à utiliser] utilisateur

Obtenir la liste des shells de connexion disponible

cat /etc/shells

Modifier la date d'expiration d'un compte utilisateur

usermod -e YYY-MM-DD utilisateur

 Modifier le nom de connexion d'un utilisateur

Cette commande est utile en cas de départ de personnel et transfert des autorisations vers un nouveau utilisateur. Elle évite d'avoir à recréer un nouvel utilisateur.

Les droits sur les fichiers, répertoires et ressources doivent être modifiés via la commande chown. Le contenu du dossier /home doit aussi être transféré manuellement vers le nouvel emplacement.

usermod -l nouveau utilisateur utilisateur

Modifier l'id et le gid associé à un utilisateur

usermod -u id -g gid utilisateur

Désactiver un utilisateur

usermod -L utilisateur

Changer d'utilisateur

 Changer d'utilisateur en restant dans la même session

su utilisateur

La commande su ne fonctionne qu'avec les utilisateurs réels. Pour les utilisateurs système, voir la commande sudo.

Ouvrir une nouvelle session avec un utilisateur

La commande ci dessous ne fonctionne que depuis le shell de connexion d'un utilisateur. Si elle est exécutée depuis un sous shell, elle provoquera un message d'erreur.

login utilisateur

Obtenir les droits d'un autre utilisateur

La différence entre su et sudo est la suivante : le paramètre -c utilisé avec sudo permet l’exécution de cette commande dans un sous shell (commande commençant par bash par exemple), alors que la commande su -c n'autorise que les commandes lancé dans le même shell (les commandes commençant par bash renvoient une erreur). 

obtenir les droits root (super utilisateur) en étant connecté avec le même utilisateur

su -

Lancer une commande en tant que root ou un utilisateur réel

su utilisateur -c 'commande ou script'

Lancer une commande en tant qu'un utilisateur réel ou un utilisateur système.

sudo utilisateur -c 'commande ou script'

 Les groupes utilisateurs

Les groupes utilisateurs servent à regrouper les utilisateurs ayant des droits communs sur une ou plusieurs ressources (logicielles, matérielles ou services) du système.

La principale différence entre la commande addgroup et groupadd est que la première est interactive, et pas la seconde. groupadd est à privilégier dans un script.

Créer un groupe utilisateur

groupadd 'groupe'

supprimer un groupe utilisateur

delgroup 'groupe'

Ajouter un utilisateur à un groupe

 Cette commande ne retire pas l'utilisateur de son groupe primaire. Pour retirer un utilisateur de son groupe primaire et l'associer au nouveau groupe comme groupe primaire, il faut utiliser l'option -G seule dans la commande

usermod -aG 'groupe' 'utilisateur'

donner des droits à un groupe sur une ressources

chgrp 'groupe' 'fichier'

Modifier un groupe

Modification des propriétés d'un groupe du système. Les options sont modification de l'ID, du mot de passe, du nom du groupe.

groupmod -g 'id' 'groupe'

Renommer un groupe

groupmod 'groupe2' 'groupe1'