GNU/Linux >> Tutoriels Linux >  >> Linux

Introduction à la commande Linux useradd

L'ajout d'un utilisateur est l'un des exercices les plus fondamentaux sur tout système informatique. cet article se concentre sur la façon de le faire sur un système Linux.

Plus de ressources Linux

  • Aide-mémoire des commandes Linux
  • Aide-mémoire des commandes Linux avancées
  • Cours en ligne gratuit :Présentation technique de RHEL
  • Aide-mémoire sur le réseau Linux
  • Aide-mémoire SELinux
  • Aide-mémoire sur les commandes courantes de Linux
  • Que sont les conteneurs Linux ?
  • Nos derniers articles Linux

Avant de commencer, je veux mentionner trois principes fondamentaux à garder à l'esprit. Tout d'abord, comme avec la plupart des systèmes d'exploitation, les utilisateurs Linux ont besoin d'un compte pour pouvoir se connecter. Cet article couvre spécifiquement les comptes locaux, pas les comptes réseau tels que LDAP. Deuxièmement, les comptes ont à la fois un nom (appelé nom d'utilisateur) et un numéro (appelé ID utilisateur). Troisièmement, les utilisateurs sont généralement placés dans un groupe. Les groupes ont également un nom et un ID de groupe.

Comme vous vous en doutez, Linux inclut un utilitaire de ligne de commande pour ajouter des utilisateurs; ça s'appelle useradd . Vous pouvez également trouver la commande adduser . De nombreuses distributions ont ajouté ce lien symbolique vers useradd commande par commodité.

$ file `which adduser`
/usr/sbin/adduser: symbolic link to useradd

Jetons un coup d'œil à useradd .

Remarque :les valeurs par défaut décrites dans cet article reflètent celles de Red Hat Enterprise Linux 8.0. Vous pouvez trouver des différences subtiles dans ces fichiers et certaines valeurs par défaut sur d'autres distributions Linux ou d'autres systèmes d'exploitation Unix tels que FreeBSD ou Solaris.

Comportement par défaut

L'utilisation de base de useradd est assez simple :un utilisateur peut être ajouté simplement en fournissant son nom d'utilisateur.

$ sudo useradd sonny

Dans cet exemple, le useradd la commande crée un compte appelé sonny . Un groupe portant le même nom est également créé, et sonny y est placé pour être utilisé comme groupe principal. Il existe d'autres paramètres, tels que la langue et le shell, qui sont appliqués en fonction des valeurs par défaut et des valeurs définies dans les fichiers de configuration /etc/default/useradd et /etc/login.defs . Cela est généralement suffisant pour un système personnel unique ou un petit environnement professionnel à serveur unique.

Alors que les deux fichiers ci-dessus régissent le comportement de useradd , les informations utilisateur sont stockées dans d'autres fichiers trouvés dans /etc répertoire, auquel je me référerai tout au long de cet article.

Fichier Description Champs (gras—définis par useradd)
passwd Stocke les détails du compte utilisateur nom d'utilisateur :unused:uid :gid :commentaire :répertoire :coque
ombre Stocke les détails de sécurité du compte utilisateur nom d'utilisateur :password:lastchange:minimum:maximum:warn :inactif :expire :inutilisé
groupe Détails du groupe de magasins nom du groupe :unused:gid :membres

Comportement personnalisable

La ligne de commande permet une personnalisation pour les moments où un administrateur a besoin d'un contrôle plus précis, par exemple pour spécifier le numéro d'identification d'un utilisateur.

Numéros d'identification d'utilisateur et de groupe

Par défaut, useradd essaie d'utiliser le même numéro pour l'ID utilisateur (UID) et l'ID de groupe principal (GID), mais il n'y a aucune garantie. Bien qu'il ne soit pas nécessaire que l'UID et le GID correspondent, il est plus facile pour les administrateurs de les gérer lorsqu'ils le font.

J'ai juste le scénario à expliquer. Supposons que j'ajoute un autre compte, cette fois pour Timmy. En comparant les deux utilisateurs, sonny et timmy , indique que les utilisateurs et leurs groupes principaux respectifs ont été créés à l'aide du getent commande.

$ getent passwd sonny timmy
sonny:x:1001:1002:Sonny:/home/sonny:/bin/bash
timmy:x:1002:1003::/home/timmy:/bin/bash

$ getent group sonny timmy
sonny:x:1002:
timmy:x:1003:

Malheureusement, ni l'UID des utilisateurs ni le GID principal ne correspondent. En effet, le comportement par défaut consiste à attribuer le prochain UID disponible à l'utilisateur, puis à tenter d'attribuer le même numéro au groupe principal. Cependant, si ce numéro est déjà utilisé, le prochain GID disponible est attribué au groupe. Pour expliquer ce qui s'est passé, je suppose qu'un groupe avec GID 1001 existe déjà et j'entre une commande pour confirmer.

$ getent group 1001
book:x:1001:alan

Le groupe réserve avec l'identifiant 1001 a fait que les GID ont été décalés d'une unité. Il s'agit d'un exemple où un administrateur système aurait besoin de mieux contrôler le processus de création d'utilisateurs. Pour résoudre ce problème, je dois d'abord déterminer le prochain ID d'utilisateur et de groupe disponible qui correspondra. Les commandes groupe getent et getent passwd sera utile pour déterminer le prochain numéro disponible. Ce numéro peut être passé avec le -u arguments.

$ sudo useradd -u 1004 bobby

$ getent passwd bobby; getent group bobby
bobby:x:1004:1004::/home/bobby:/bin/bash
bobby:x:1004:

Une autre bonne raison de spécifier l'ID concerne les utilisateurs qui accéderont aux fichiers sur un système distant à l'aide du système de fichiers en réseau (NFS). NFS est plus facile à administrer lorsque tous les systèmes client et serveur ont le même ID configuré pour un utilisateur donné. Je couvre cela un peu plus en détail dans mon article sur l'utilisation d'autofs pour monter des partages NFS.

Plus de personnalisation

Très souvent cependant, d'autres paramètres de compte doivent être spécifiés pour un utilisateur. Voici de brefs exemples des personnalisations les plus courantes que vous devrez peut-être utiliser.

Commentaire

L'option de commentaire est un champ de texte brut permettant de fournir une courte description ou d'autres informations à l'aide de -c arguments.

$ sudo useradd -c "Bailey is cool" bailey
$ getent passwd bailey
bailey:x:1011:1011:Bailey is cool:/home/bailey:/bin/bash

Groupes

Un utilisateur peut se voir attribuer un groupe principal et plusieurs groupes secondaires. Le -g L'argument spécifie le nom ou le GID du groupe principal. S'il n'est pas spécifié, useradd crée un groupe principal avec le même nom d'utilisateur (comme illustré ci-dessus). Le -G L'argument (majuscule) est utilisé pour transmettre une liste de groupes séparés par des virgules dans lesquels l'utilisateur sera placé ; ceux-ci sont appelés groupes secondaires.

$ sudo useradd -G tgroup,fgroup,libvirt milly 
$ id milly
uid=1012(milly) gid=1012(milly) groups=1012(milly),981(libvirt),4000(fgroup),3000(tgroup)

Répertoire d'accueil

Le comportement par défaut de useradd est de créer le répertoire personnel de l'utilisateur dans /home . Cependant, différents aspects du répertoire personnel peuvent être remplacés par les arguments suivants. Le -b définit un autre répertoire dans lequel les répertoires d'accueil des utilisateurs peuvent être placés. Par exemple, /home2 au lieu de la valeur par défaut /home .

$ sudo useradd -b /home2 vicky
$ getent passwd vicky
vicky:x:1013:1013::/home2/vicky:/bin/bash

Le -d vous permet de spécifier un répertoire personnel avec un nom différent de celui de l'utilisateur.

$ sudo useradd -d /home/ben jerry
$ getent passwd jerry
jerry:x:1014:1014::/home/ben:/bin/bash

Le répertoire squelette

Le -k indique au nouveau répertoire personnel du nouvel utilisateur d'être rempli avec tous les fichiers dans /etc/skel annuaire. Il s'agit généralement de fichiers de configuration shell, mais il peut s'agir de tout ce qu'un administrateur système souhaite mettre à la disposition de tous les nouveaux utilisateurs.

Coquille

Le -s L'argument peut être utilisé pour spécifier le shell. La valeur par défaut est utilisée si rien d'autre n'est spécifié. Par exemple, dans ce qui suit, shell bash est défini dans le fichier de configuration par défaut, mais Wally a demandé zsh .

$ grep SHELL /etc/default/useradd 
SHELL=/bin/bash

$ sudo useradd -s /usr/bin/zsh wally
$ getent passwd wally
wally:x:1004:1004::/home/wally:/usr/bin/zsh

Sécurité

La sécurité est un élément essentiel de la gestion des utilisateurs, il existe donc plusieurs options disponibles avec le useradd commande. Un compte utilisateur peut recevoir une date d'expiration, sous la forme AAAA-MM-JJ, en utilisant le -e arguments.

$ sudo useradd -e 20191231 sammy
$ sudo getent shadow sammy
sammy:!!:18171:0:99999:7::20191231:

Un compte peut également être désactivé automatiquement si le mot de passe expire. Le -f L'argument définira le nombre de jours après l'expiration du mot de passe avant que le compte ne soit désactivé. Zéro est immédiat.

$ sudo useradd -f 30 willy
$ sudo getent shadow willy
willy:!!:18171:0:99999:7:30::

Un exemple concret

En pratique, plusieurs de ces arguments peuvent être utilisés lors de la création d'un nouveau compte utilisateur. Par exemple, si je dois créer un compte pour Perry, je peux utiliser la commande suivante :

$ sudo useradd -u 1020 -c "Perry Example" \
-G tgroup -b /home2 \
-s /usr/bin/zsh \
-e 20201201 -f 5 perry

Reportez-vous aux sections ci-dessus pour comprendre chaque option. Vérifiez les résultats avec :

$ getent passwd perry; getent group perry; getent shadow perry; id perry
perry:x:1020:1020:Perry Example:/home2/perry:/usr/bin/zsh
perry:x:1020:
perry:!!:18171:0:99999:7:5:20201201:
uid=1020(perry) gid=1020(perry) groups=1020(perry),3000(tgroup)

Quelques derniers conseils

Le useradd est un "must-snow" pour tout administrateur Unix (pas seulement Linux). Il est important de comprendre toutes ses options, car la création d'utilisateurs est quelque chose que vous voulez réussir du premier coup. Cela signifie avoir une convention de dénomination bien pensée qui inclut une plage UID/GID dédiée réservée à vos utilisateurs dans toute votre entreprise, et pas seulement sur un seul système, en particulier lorsque vous travaillez dans une organisation en pleine croissance.


Linux
  1. Maîtrisez la commande Linux ls

  2. Introduction à la commande alternatives sous Linux

  3. Linux - L'utilisation de l'option -o dans la commande Useradd ?

  4. Exemples de commandes chgrp sous Linux

  5. Exemples de commande groupmems sous Linux

La commande timer sous Linux

La commande Linux curl

Exemples essentiels de la commande ps sous Linux

Qu'est-ce que la commande kill sous Linux ?

Comprendre la commande time sous Linux

Utilisation de la commande grep sous Linux