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
Sommaire
La commande useradd ou adduser dans Linux
Comment ajouter un nouveau utilisateur sous Linux
Créer un utilisateur sous Linux avec un répertoire Home différent
Créer un utilisateur sous Linux avec UID spécifique
Créer un utilisateur Linux avec un numéro de groupe spécifique
Ajouter un utilisateur Linux à plusieurs groupes
Ajouter un utilisateur sous Linux sans le répertoire Home
Créer un utilisateur avec un compte intégrant une date d’expiration
Créer un utilisateur Linux avec un mot de passe intégrant une date d’expiration
Ajouter un utilisateur Linux avec des commentaires personnalisés
Changer le shell d’un utilisateur Linux
Crée un utilisateur Linux sans répertoire Home, Shell, groupe, ou commentaire
Différence entre useradd et adduser
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.
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
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.
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
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
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
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
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
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
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
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.
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
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
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
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.
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.