La commande useradd ou adduser dans Linux


  • Français

  • La plupart des utilisateurs connaissent la commande useradd ou adduser dans Linux. On a souvent besoin de créer des comptes d'utilisateurs dans Linux avec des permissions, des options ou des commentaires spécifiques.  


    Dans Linux, la commande useradd est un utilitaire de bas niveau qui permet d’ajouter et de créer des comptes d’utilisateurs dans Linux et les autres variantes sous Unix. Et la commande adduser est similaire, car c’est juste un lien symbolique de la première commande.

    Dans certaines distributions Linux, la commande useradd est fournie avec de légères différences dans les versions et on vous conseille de lire sa documentation pour être sûr que la commande aura les mêmes comportements.

    Quand on lance une commande useradd dans un terminal, elle exécute les choses suivantes :

    • Il modifie les fichiers /etc/passwd, /etc/shadow, /etc/group et /etc/gshadow pour le nouveau compte d’utilisateur.
    • Il crée et configure le répertoire Home pour le nouveau utilisateur.
    • Il définit les permissions et les propriétaires du répertoire home

    La syntaxe basique de cette commande est :

    useradd [options] username

    Comment ajouter un nouveau utilisateur sous Linux

    Pour ajouter et créer un nouvel utilisateur, vous utilisez la commande useradd ou adduser suivi par le nom d’utilisateur. Ce nom d’utilisateur sera utilisé pour se connecter au système. On peut ajouter un seul utilisateur à la fois et chaque nom doit être unique.

    Par exemple, pour ajouter un nouveau utilisateur maniacgeek, vous utilisez la commande :

    [root@maniacgeek ~]# useradd maniacgeek

    Quand nous ajoutons un utilisateur avec la commande useradd, il est crée en mode verrouillé et pour le déverrouiller, on a besoin de configurer un mot de passe avec la commande passwd.

    [root@maniacgeek ~]# passwd maniacgeek
    Changing password for user maniacgeek.
    New UNIX password:
    Retype new UNIX password:
    passwd: all authentication tokens updated successfully.

    Une fois que le nouveau utilisateur est crée, une entrée est automatiquement ajouté au fichier /etc/passwd. La forme de l’entrée sera :

    maniacgeek:x:504:504:maniacgeek:/home/maniacgeek:/bin/bash

    L’entrée suivante contient des valeurs séparées par des 2 points et chaque valeur possède sa propre signification. Ainsi :

    • Username: Le nom d’utilisateur dans le système et il doit être 1 et 32 caractères.
    • Password: Le mot de passe de l’utilisateur et il est stocké et crypté dans le fichier /etc/shadow.
    • User ID (UID): Chaque utilisateur possède un numéro d’identification unique. L’utilisateur root possède l’UID 0 et ceux entre 1 jusqu’à 99 sont pour des comptes prédéfinis. De même, les UID allant de 100 à 999 sont pour les comptes du système et les groupes.
    • Group ID (GID): Le numéro d’identification du groupe stocké dans le fichier /etc/group.
    • User Info: Cette valeur est facultative et on peut l’utiliser pour ajouter des informations supplémentaires sur l’utilisateur. On fournit ces informations avec la commande finger
    • Home Directory: Le chemin absolu du répertoire Home de l’utilisateur.
    • Shell: Le chemin absolu du Shell de l’utilisateur tel que /bin/bash.

    Créer un utilisateur sous Linux avec un répertoire Home différent

    Par défaut, la commande useradd crée le répertoire Home dans /home avec le nom d’utilisateur. Par exemple, nous voyons que le répertoire Home de maniacgeek est dans /home/maniacgeek.

    Cependant, on peut le changer avec l’option -d et en fournissant le nouveau chemin du répertoire home, par exemple, /data/projects. Ainsi, la commande suivante va créer un utilisateur samganegie avec son répertoire home dans /data/projects :

    [root@maniacgeek ~]# useradd -d /data/projects samganegie

    Vous pouvez voir le répertoire Home et les autres informations sur l’utilisateur tels que son UID, GID, Shell et commentaires avec la commande :

    [root@maniacgeek ~]# cat /etc/passwd | grep samganegie
    samganegie:x:505:505::/data/projects:/bin/bash

    Créer un utilisateur sous Linux avec UID spécifique

    Dans Linux, chaque utilisateur possède son propre UID. Et à chaque fois qu’on crée un nouvel utilisateur, le système va assigner des UID à partir de 500, 501, 502, etc.

    Mais on peut créer un nouvel utilisateur Linux avec un UID personnalisé avec l’option -u. Ainsi, la commande suivante va créer l’utilisateur monsieurmcgoo avec l’UID personnalisé 999

    [root@maniacgeek ~]# useradd -u 999 monsieurmcgoo

    Maintenant, vérifions que cet utilisateur possède bien l’UID que nous avons spécifié avec la commande :

    [root@maniacgeek ~]# cat /etc/passwd | grep maniacgeek
    monsieurmcgoo:x:999:999::/home/monsieurmcgoo:/bin/bash

    Note : Assurez-vous que l’UID que vous spécifiez soit unique avant de l’utiliser.

    Créer un utilisateur Linux avec un numéro de groupe spécifique

    De même, chaque utilisateur possède son propre GID (Group Identification Number). Et nous pouvons définir des GID personnalisé avec l’option -g. Par exemple, nous créons un utilisateur frodon avec un UID et un GID personnalisé en utilisant simultanément les options -u et -g.

    [root@maniacgeek ~]# useradd -u 1000 -g 500 frodon

    Maintenant, voyons l’UID et le GID respectif de cet utilisateur dans le fichier /etc/passwd :

    [root@maniacgeek ~]# cat /etc/passwd | grep frodon
    frodon:x:1000:500::/home/frodon:/bin/bash

    Ajouter un utilisateur Linux à plusieurs groupes

    L’option -G (n’oubliez pas, Linux est sensible à la casse) permet d’ajouter un utilisateur dans plusieurs groupes. Chaque nom de groupe doit être séparé par une virgule sans aucun espace. Par exemple, nous ajoutons l’utilisateur maniacgeek dans les groupes admins, webadmin et developer.

     

    [root@maniacgeek ~]# useradd -G admins,webadmin,developers maniacgeek

    Maintenant, vérifions que l’assignation aux groupes multiples s’est bien passée.

    [root@maniacgeek ~]# id maniacgeek
    uid=1001(maniacgeek) gid=1001(maniacgeek)
    groups=1001(maniacgeek),500(admins),501(webadmin),502(developers)
    context=root:system_r:unconfined_t:SystemLow-SystemHigh

    Ajouter un utilisateur sous Linux sans le répertoire Home

    Dans certains cas, on ne veut pas assigner un répertoire Home pour un utilisateur pour des raisons de sécurité. Ainsi, quand un utilisateur se connecte à un système qui vient juste de redémarrer, son répertoire Home sera root. Et si l’utilisateur utilise la commande su, alors on répertoire de connexion sera le répertoire Home du précédent utilisateur.

    Pour créer un utilisateur sans son répertoire Home, utilisez l’option -M. Par exemple, la commande suivante va créer l’utilisateur bellemere sans le répertoire Home.

    [root@maniacgeek ~]# useradd -M bellemere

    Maintenant, vérifions que son répertoire Home est bien absent.

    [root@maniacgeek ~]# ls -l /home/bellemere
    ls: cannot access /home/bellemere: No such file or directory

    Créer un utilisateur avec un compte intégrant une date d’expiration

    Par défaut, la commande useradd ajoute un compte qui n’expirera jamais. Sa valeur d’expiration est 0 (indiquant un compte avec une durée infinie).

    Cependant, on peut définir une date d’expiration avec l’option -e et en indiquant une date dans le format Année(4 chiffres)-Mois(2 chiffres)-Jour(2 chiffres). C’est pratique pour créer un compte temporaire avec une date limite.

    Dans cet exemple, nous créons un utilisateur parasite avec une date d’expiration pour le 27 avril 2014.

    [root@maniacgeek ~]# useradd -e 2014-04-27 parasite

    Maintenant, vérifions la durée du compte et son mot de passe avec la commande chage.

    [root@maniacgeek ~]# chage -l parasite
    Last password change : Mar 29, 2014
    Password expires : never
    Password inactive : never
    Account expires : Apr 27, 2014
    Minimum number of days between password change : 0
    Maximum number of days between password change : 99999
    Number of days of warning before password expires : 7

    Créer un utilisateur Linux avec un mot de passe intégrant une date d’expiration

    L’option -f permet de définir un mot de passe qui possède une durée d’expiration. Une valeur de 0 désactive l’utilisateur dès que le mot de passe expire tandis qu’une valeur de -1 indique qu’il n’expirera jamais.

    Dans cet exemple, on définit un mot de passe expirable sur 45 jours pour l’utilisateur maniacgeek en utilisant les options -e et -f.

    [root@maniacgeek ~]# useradd -e 2014-04-27 -f 45 maniacgeek

    Ajouter un utilisateur Linux avec des commentaires personnalisés

    L’option -c permet d’ajouter des commentaires personnalisés à un utilisateur tels que son nom complet, son numéro de téléphone, etc dans le fichier /etc/passwd. Le commentaire est ajouté avec une seule ligne sans aucun espace

    Par exemple, la commande suivante va ajouter l’utilisateur sam avec son nom complet Sam Ganegie dans le champs du commentaire :

    [root@maniacgeek ~]# useradd -c "Sam Ganegie" sam

    Et vous pouvez voir le commentaire sur l’utilisateur avec la commande

    [root@maniacgeek ~]# tail -1 /etc/passwd
    sam:x:1006:1008:Sam Ganegie:/home/sam:/bin/sh

    Changer le shell d’un utilisateur Linux

    Parfois, on veut qu’un utilisateur ne possède pas de Shell ou qu’on veut le changer. On peut le faire avec l’option -s.

    Dans cet exemple, on ajoute un utilisateur maniacgeek sans aucun Shell, par exemple, /sbin/nologin.

    [root@maniacgeek ~]# useradd -s /sbin/nologin maniacgeek

    Et vous pouvez vérifier qu’il ne possède pas de Shell avec la commande

    [root@maniacgeek ~]# tail -1 /etc/passwd
    maniacgeek:x:1002:1002::/home/maniacgeek:/sbin/nologin

    Créer un utilisateur Linux avec un Home personnalisé, un Shell par défaut et un commentaire personnalisé

    La commande suivante crée un utilisateur sauron avec son répertoire Home dans /var/www/maniacgeek, le Shell par défaut /bin/bash et ajoute des informations supplémentaires sur l’utilisateur.

    [root@maniacgeek ~]# useradd -m -d /var/www/sauron -s /bin/bash -c "Mec ultra cool" -U sauron

    Dans cette commande, les options -m et -d créent un utilisateur avec un répertoire Home personnalisé tandis que l’option -c définit le Shell par défaut. Enfin, l’option -c ajoute des informations supplémentaires tandis que l’option -U crée un groupe avec le même nom que l’utilisateur.

    Créer un utilisateur Linux avec son répertoire Home, un Shell, un commentaire, un UID et un GID personnalisés

    Cette commande est similaire à la précédente. Nous définissons un Shell /bin/zsh et un UID et un GID personnalisés pour l’utilisateur frodon. L’option -u définit l’UID de l’utilisateur (1000) et c’est la même chose pour l’option -g concernant le GID (1000).

    [root@maniacgeek ~]# useradd -m -d /var/www/frodon -s /bin/zsh -c "Hobbit Snob" -u 1000 -g 1000 frodon

    Créer un utilisateur Linux avec un répertoire Home, sans aucun shell et un commentaire un UID personnalisés

    Encore une variante des précédentes commandes, mais la seule différence est que nous désactivons le Shell pour l’utilisateur silvebarbe tout en lui fournissant une UID personnalisé 1019.

    L’option -s permettant de définir le Shell, on le met sur /usr/sbin/nologin pour empêcher qu’il ne puisse se connecter au système.

    [root@maniacgeek ~]# useradd -m -d /var/www/silvebarbe -s /usr/sbin/nologin -c "Arbre poète" -u 1019 silvebarbe

    Ajouter un utilisateur Linux avec son répertoire Home, un shell, un commentaire et une ossature personnalisée ainsi qu’un UID

    Le seul changement dans cette commande est que nous utilisons la commande -k pour créer une ossature personnalisée de répertoire (par exemple, /etc/custom.skell). Nous définissons aussi un Shell different avec l’option -s pour l’utilisateur monsieurmcgoo

    [root@maniacgeek ~]# useradd -m -d /var/www/monsieurmcgoo -k /etc/custom.skell -s /bin/tcsh -c "Monsieur Cata" -u 1027 monsieurmcgoo

    Crée un utilisateur Linux sans répertoire Home, Shell, groupe, ou commentaire

    Cette dernière commande est très différente des autres, car on utilise l’option -M pour créer un utilisateur sans le répertoire Home et l’option -N dit au système de créer uniquement le nom d’utilisateur (sans le groupe). Enfin, l’option -r permet de dire que c’est un utilisateur système.

    [root@maniacgeek ~]# useradd -M -N -r -s /bin/false -c "Geek Maniac" fake

    Evidemment, on aura toute l’aide sur la commande useradd en tapant simplement la commande dans le terminal.

    Différence entre useradd et adduser

    La différence entre useradd et adduser est que la commande useraddest un binaire compilé avec le système tandis qu’adduser est un script Perl qui va utiliser la commande useradd en arrière-plan. En général, vous devez toujours utiliser adduser parce qu’elle est plus conviviale et interactive, mais il n’y a aucune différence notable entre les deux commandes.

    La commande adduser est plus puissante et la commande useradd fera uniquement que vous lui dites. Par exemple, si vous utilisez la commande add useradd votre nom d’utilisateur, alors elle va ajouter l’utilisateur, mais sans créer le répertoire /home/votrenomd’utilisateur. Si vous utilisez la commande adduser votrenomd’utilisateur, alors elle peut créer le répertoire home.

    Pour vous rappeler de quelle commande vous devez choisir entre adduser et useradd, utilisez l’ordre alphabétique. adduser vient toujours la première, useradd arrive toujours après.

    Traduit de l’article source

    Houssen Moshinaly

    Pour contacter personnellement le taulier :

    1 réponse

    1. Canneberge dit :

      Bonjour,

      Dans le chapitre « Créer un utilisateur Linux avec un Home personnalisé, un Shell par défaut et un commentaire personnalisé ».
      Dans la partie explicative, il est écrit « l’option -c définit le Shell par défaut », je pense que c’est une erreur et c’est plutôt l’option -s.
      L’article source semble correcte.

      Bonne journée.

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

    Copy code