Tutoriel Linux

Useradd sous Linux : créer un compte prêt à l’emploi

Débutant5 min de lecture

Vous devez créer un compte sur un serveur Linux pour un collègue, un prestataire ou une application. Une commande useradd alice peut suffire à enregistrer l’utilisateur, mais elle ne garantit pas partout un répertoire personnel, un shell interactif ou les groupes attendus. Le compte existe alors sans être réellement prêt à l’emploi.

Je préfère préciser ces choix dans la commande, puis contrôler le résultat avant de transmettre l’accès. Voici comment utiliser useradd sous Linux avec un home, un groupe principal, des groupes supplémentaires et un shell cohérents.

Tux configure un nouveau compte utilisateur sur un serveur Linux
Le home, les groupes et le shell doivent être vérifiés avant de remettre l’accès au nouvel utilisateur.

Lire les valeurs par défaut avant de créer le compte

Commencez par vérifier que le nom choisi n’existe pas déjà. getent interroge les comptes locaux, mais aussi LDAP ou un autre annuaire déclaré dans NSS :

getent passwd alice
id alice

Si les deux commandes ne retournent rien, le nom est libre dans les sources d’identité connues par la machine. Vérifiez ensuite les valeurs que useradd utiliserait sans option :

useradd -D
grep -E '^(CREATE_HOME|USERGROUPS_ENAB)' /etc/login.defs

Ces réglages varient selon la distribution et l’image système. C’est justement pour cela que je n’aime pas compter sur les valeurs implicites. La page de manuel useradd(8) détaille les options et les fichiers de configuration utilisés.

Contrôlez également les groupes et le shell que vous comptez attribuer :

getent group projet
grep -Fx '/bin/bash' /etc/shells

Créez le groupe métier s’il n’existe pas. Évitez en revanche d’ajouter automatiquement le nouvel utilisateur à sudo, wheel ou docker : ces groupes donnent des privilèges importants.

sudo groupadd projet

Créer l’utilisateur avec son home, ses groupes et son shell

Pour créer un compte humain nommé alice, un groupe principal privé du même nom, le home /home/alice, le shell Bash et l’accès au groupe projet, utilisez :

sudo useradd -m -U -s /bin/bash -G projet alice
  • -m crée le répertoire personnel et copie les fichiers de /etc/skel.
  • -U crée un groupe principal portant le même nom que l’utilisateur.
  • -s /bin/bash fixe le shell de connexion.
  • -G projet ajoute un groupe secondaire. Séparez plusieurs groupes avec des virgules, sans espace.

Si le home doit se trouver ailleurs, indiquez le chemin avec -d tout en conservant -m :

sudo mkdir -p /srv/home
sudo useradd -m -U -d /srv/home/alice -s /bin/bash -G projet alice

Ne réutilisez pas cette seconde commande si le premier compte existe déjà. Vérifiez d’abord avec getent passwd alice, puis corrigez le compte avec usermod si nécessaire. Relancer useradd ne répare pas une création partielle.

Définir le mot de passe sans le laisser dans l’historique

useradd ne doit pas recevoir un mot de passe en clair sur la ligne de commande. Définissez-le de manière interactive :

sudo passwd alice

Le mot de passe n’apparaît pas pendant la saisie. N’utilisez pas -p avec un mot de passe lisible : cette option attend une valeur déjà chiffrée, qui peut tout de même rester dans l’historique du shell ou la liste des processus.

Contrôlez ensuite l’état du mot de passe :

sudo passwd -S alice
sudo chage -l alice

La page passwd(1) explique les états affichés. Pour un compte de service qui ne doit jamais ouvrir de session, n’attribuez pas un shell interactif par habitude. Utilisez un compte système et un shell comme /usr/sbin/nologin selon le service concerné.

Vérifier l’UID, les groupes, le home et la connexion

Ne considérez pas la création comme terminée avant d’avoir relu les quatre éléments qui comptent :

getent passwd alice
id alice
ls -ld /home/alice
sudo passwd -S alice

La ligne renvoyée par getent passwd contient notamment l’UID, le GID principal, le home et le shell. id affiche le groupe principal et les groupes secondaires. La documentation id(1) précise le sens de ces identifiants.

Testez enfin une vraie session de connexion locale :

sudo -iu alice
pwd
id
echo "$SHELL"
exit

Vous devez arriver dans le home attendu avec l’identité et le shell prévus. Si ce compte doit se connecter en SSH, vérifiez séparément la méthode d’authentification, les clés autorisées et les règles du serveur. Créer le compte ne donne pas automatiquement un accès distant.

Pour reprendre un serveur existant, notre guide permet de lister les utilisateurs Linux et repérer les accès sensibles. Vous pouvez aussi vérifier la politique avec passwd et chage avant de remettre les identifiants.

Useradd ou adduser : ne pas supposer le même comportement partout

useradd est l’outil bas niveau fourni par la suite shadow. Sur Debian et Ubuntu, adduser est un assistant plus interactif qui crée généralement le home, propose un mot de passe et applique les conventions locales. Sur d’autres distributions, adduser peut être absent ou renvoyer directement vers useradd.

Pour une création manuelle unique sur Debian, adduser alice est confortable. Pour un script ou une procédure reproductible sur plusieurs serveurs, je préfère useradd avec des options explicites et un contrôle juste après.

Attention aussi à usermod -G lors d’une correction ultérieure : sans -a, cette commande remplace la liste des groupes secondaires. Utilisez sudo usermod -aG projet alice pour ajouter un groupe sans retirer les autres, puis relancez id alice.

Si le compte a été créé par erreur, ne lancez pas immédiatement userdel -r. Cette option peut effacer le home et ses données. Vérifiez les sessions, les processus et le chemin du répertoire avec notre guide sur la suppression prudente d’un compte Linux.