Chaque utilisateur sous Linux a un ID utilisateur unique (UID ), qui est un nombre entier ordinaire, et un nom d'utilisateur associé. Les utilisateurs se connectent en utilisant leurs noms d'utilisateur, mais le système utilise les UID associés. Chaque compte utilisateur dispose également d'un répertoire personnel et d'un shell de connexion. Lorsque les utilisateurs se connectent, ils sont placés dans leur répertoire personnel et leur shell de connexion s'exécute. Toutes ces informations de compte utilisateur sont stockées dans /etc/passwd fichier.
Chaque utilisateur appartient également à un ou plusieurs groupes. Différents utilisateurs peuvent être affectés au même groupe. L'accès peut être donné à un groupe et tous les membres du groupe se voient accorder les mêmes privilèges d'accès. Chaque compte de groupe sous Linux a un identifiant de groupe unique (GID ) et un nom de groupe associé. Les informations de groupe sont stockées dans /etc/group fichier.
RedHat Linux utilise un schéma de groupe privé d'utilisateurs (UPG) . Lorsqu'un nouveau compte d'utilisateur est ajouté, un nouveau groupe privé d'utilisateurs est également créé. Le groupe privé de l'utilisateur porte le même nom que l'utilisateur et le nouvel utilisateur est le seul membre de ce groupe.
Les utilisateurs et les groupes utilisent des mots de passe masqués. Les mots de passe sont hachés et stockés dans différents fichiers, /etc/shadow pour les utilisateurs et /etc/gshadow pour les groupes. La sécurité s'améliore en stockant les mots de passe hachés dans des fichiers « fantômes », car ces fichiers ne sont lisibles que par l'utilisateur root. L'utilisation de mots de passe cachés fournit également des paramètres de vieillissement du mot de passe et permet d'appliquer des politiques de sécurité à l'aide du fichier /etc/login.defs. Seul l'utilisateur racine peut ajouter, modifier ou supprimer des comptes d'utilisateurs et de groupes.
Fichiers de configuration des utilisateurs et des groupes
/etc/passwd
Lorsqu'un nouvel utilisateur est ajouté, les informations sont stockées sur une seule ligne séparée par deux-points dans /etc/passwd. Voici un exemple d'entrée dans ce fichier :
# tail -1 /etc/passwd test:x:1001:1001:test user:/home/test:/bin/bash
Ce qui suit décrit cette entrée :
Champ | Description |
---|---|
tester | Nom d'utilisateur |
x | Indique que des mots de passe masqués sont utilisés |
1001 | UID, ceux-ci commencent par 1000 et s'incrémentent de 1 pour chaque utilisateur nouvellement ajouté. Les UID inférieurs à 1 000 sont réservés à l'utilisation du système. |
1001 | GID du groupe principal de l'utilisateur. Ceux-ci commencent par 1000 et s'incrémentent de 1 pour chaque nouveau groupe. Les utilisateurs peuvent appartenir à plusieurs groupes. |
utilisateur test | Informations GECOS (General Electric Comprehensive Operating System), utilisées uniquement à des fins d'information telles que le nom complet |
/home/test | Répertoire d'accueil de cet utilisateur |
/bin/bash | Shell par défaut pour cet utilisateur |
/etc/ombre
Avec les mots de passe shadow, une nouvelle entrée est automatiquement ajoutée à /etc/shadow lorsqu'un nouvel utilisateur est créé. Ce fichier ne peut être consulté que par root. Voici un exemple d'entrée dans ce fichier :
# tail -1 /etc/shadow test:$6$XBCDBQ...:17610:0:99999:7:::
Ce qui suit décrit cette entrée :
Champ | Description |
---|---|
tester | Nom d'utilisateur |
6$$XBCDBQ… | Valeur du mot de passe haché (valeur partielle affichée). Le mot de passe en clair lui-même n'est pas stocké sur le disque. Un algorithme crée une chaîne unique à partir d'un mot de passe. |
17610 | Nombre de jours depuis le changement de mot de passe (compté en jours depuis le 1er janvier 1970). |
0 | Nombre de jours qui doivent s'écouler avant que le mot de passe ne doive être changé par l'utilisateur. |
99999 | Nombre maximum de jours depuis la modification du mot de passe pendant lesquels le mot de passe peut être utilisé. Après ce nombre de jours, le mot de passe doit être modifié par l'utilisateur. |
7 | Nombre de jours avant la date d'expiration pendant lesquels l'utilisateur est averti de la politique de changement de mot de passe en attente. Si le mot de passe n'est pas modifié après ce nombre de jours, le compte utilisateur est verrouillé. |
Le champ suivant est vide mais est utilisé pour stocker la dernière date à laquelle le compte est verrouillé (compté en jours depuis le 1er janvier 1970). Le dernier champ est également vide mais n'est pas utilisé.
/etc/groupe
Étant donné qu'Oracle Linux utilise un schéma UPG, une nouvelle entrée est automatiquement créée dans /etc/group lorsqu'un nouvel utilisateur est ajouté. Le nom du groupe est le même que le nom d'utilisateur. Voici un exemple d'entrée dans ce fichier :
# tail -1 /etc/group test:x:1000:test
Ce qui suit décrit cette entrée :
Champ | Description |
---|---|
tester | Nom du groupe |
x | Indique que des mots de passe masqués sont utilisés |
1 000 | GID |
tester | Liste des utilisateurs membres du groupe |
Chaque groupe peut avoir plusieurs utilisateurs. Les utilisateurs peuvent également appartenir à plusieurs groupes. Le GID stocké dans l'entrée de l'utilisateur dans /etc/passwd est le groupe principal de l'utilisateur.
/etc/gshadow
Les mots de passe de groupe hachés sont stockés dans ce fichier. Cependant, les mots de passe de groupe sont rarement utilisés. Voici un exemple d'entrée dans ce fichier :
# tail -1 /etc/gshadow test:!!::test
Ce qui suit décrit cette entrée :
Champ | Description |
---|---|
tester | Nom du groupe |
x | Mot de passe haché. La !! Indique que le compte est verrouillé. |
oracle | Liste des utilisateurs membres du groupe |
Les deux derniers champs servent à désigner les administrateurs et les membres.
Ajouter un compte utilisateur
useradd
Utilisez la commande useradd pour ajouter un compte utilisateur. La syntaxe est :
# useradd [options] user_name
Lors de la création d'un nouvel utilisateur sans aucune option, les paramètres par défaut sont appliqués. Exemple :
# useradd john # tail -1 /etc/passwd john:x:501:501::/home/john:/bin/bash
Également par défaut, useradd crée un compte utilisateur verrouillé. Pour déverrouiller le compte et attribuer un mot de passe, exécutez la commande passwd nom_utilisateur en tant qu'utilisateur root. Exemple :
# passwd john
La commande passwd user_name vous demande un nouveau mot de passe. Selon la complexité du mot de passe, vous pouvez être averti que le mot de passe est mauvais (trop court ou trop simple). Saisissez à nouveau le même mot de passe pour continuer et déverrouiller le compte utilisateur. La même commande passwd est utilisée pour changer un mot de passe. L'utilisateur root peut toujours modifier le mot de passe d'un utilisateur. Les utilisateurs sont invités à saisir d'abord le mot de passe actuel.
Paramètres par défaut
Les paramètres par défaut d'un nouvel utilisateur peuvent être affichés et modifiés à l'aide de l'option -D. Exemple :
# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes
Le INACTIF La directive définit le nombre de jours après l'expiration d'un mot de passe jusqu'à ce que le compte soit verrouillé. Une valeur de 0 verrouille le compte dès que le mot de passe expire. Une valeur de -1 désactive la fonctionnalité. Contenu du SKEL (/etc/skel par défaut) sont copiés dans le répertoire personnel d'un nouvel utilisateur lors de la création du compte utilisateur. Les paramètres par défaut sont stockés dans /etc/default/useradd . Les options suivantes, utilisées avec –D, modifient les valeurs par défaut de la commande useradd :
- -b default_home :Le préfixe de chemin initial pour le répertoire personnel d'un nouvel utilisateur
- -e default_expire_date :La date à laquelle le compte utilisateur est désactivé
- -f default_inactive :Le nombre de jours après l'expiration d'un mot de passe avant que le compte ne soit verrouillé
- -g default_group :Le nom ou l'ID du groupe initial d'un nouvel utilisateur
- -s default_shell :Le shell de connexion du nouvel utilisateur
Par exemple, pour remplacer le shell de connexion d'un nouvel utilisateur par le shell Bourne, saisissez ce qui suit :
# useradd –D –s /bin/sh user_name
Options d'ajout d'utilisateur
Plusieurs options sont disponibles pour la commande useradd pour remplacer les paramètres par défaut. Voici quelques-unes des options les plus couramment utilisées :
- -c commentaire :Les informations GECOS du nouvel utilisateur, telles que le nom complet
- -d home_dir :Le préfixe de chemin initial pour le répertoire personnel d'un nouvel utilisateur
- -e expire_date :La date (format AAAA-MM-JJ) à laquelle le compte utilisateur est désactivé
- -g groupe_initial :Le nom de groupe ou le numéro du groupe de connexion initial de l'utilisateur. Le nom du groupe doit exister. Un numéro de groupe doit faire référence à un groupe déjà existant.
- -Groupe G :une liste de groupes secondaires dont l'utilisateur est également membre. Chaque groupe est séparé du suivant par une virgule, sans espace intermédiaire.
- -p passwd :Définissez le mot de passe du nouvel utilisateur.
- -s shell :Le nom du shell de connexion de l'utilisateur
Par exemple, pour créer un nouveau nom d'utilisateur "john", inclure le nom de l'utilisateur et remplacer le shell de connexion par le shell C, saisissez ce qui suit :
# useradd –c "John Smith" –s /bin/csh john
Nologin Shell
Lorsque vous ajoutez un nouveau compte d'utilisateur, l'utilisateur bénéficie par défaut d'un accès au shell. Vous pouvez créer un compte utilisateur avec le shell nologin dans le but d'exécuter un service tel que SMTP, FTP ou d'exécuter un serveur Web, par exemple. Un utilisateur sans shell de connexion ne peut pas se connecter à un système et, par conséquent, ne peut exécuter aucune commande de manière interactive sur le système. Cependant, les processus peuvent s'exécuter sous cet utilisateur.
La connexion en tant qu'utilisateur avec un shell nologin est poliment refusée et un message s'affiche indiquant que le compte n'est pas disponible. Si le fichier /etc/nologin.txt existe, nologin affiche le contenu du fichier plutôt que le message par défaut. Pour créer un utilisateur nologin, assurez-vous d'abord que nologin existe dans /etc/shells fichier :
# cat /etc/shells /bin/sh /bin/bash /sbin/nologin /bin/dash
Pour ajouter un nouvel utilisateur appelé test sans accès au shell :
# useradd -s /sbin/nologin test
Tentative de connexion alors que le test utilisateur affiche :
# su – test This account is currently not available.
Modifier ou supprimer des comptes d'utilisateurs
usermod
Utilisez la commande usermod pour modifier un compte utilisateur existant. La syntaxe est :
# usermod [options] user_name
L'une des utilisations les plus courantes de la commande usermod consiste à ajouter un utilisateur à un autre groupe (secondaire). Utilisez le –a et –G options suivies d'une liste séparée par des virgules des groupes secondaires auxquels ajouter l'utilisateur. L'exemple suivant répertorie le contenu de /etc/group avant et après la modification d'un utilisateur et son ajout à un groupe secondaire :
# grep 1017 /etc/group students:x:1017:
# usermod –aG 1017 mary # grep 1017 /etc/group students:x:1017:mary
userdel
Utilisez la commande userdel pour supprimer un compte utilisateur. Exemple :
# userdel john
Administration du compte de groupe
groupadd
Utilisez la commande groupadd pour ajouter un compte de groupe. La syntaxe est :
# groupadd [options] group_name
groupmod
Utilisez la commande groupmod pour modifier un compte de groupe. La syntaxe est :
# groupmod [options] group_name
groupel
Utilisez la commande groupdel pour supprimer un compte de groupe. La syntaxe est :
# groupdel group_name
Vous pouvez supprimer des groupes même s'il y a des membres dans le groupe. Vous ne pouvez pas supprimer le groupe principal d'un utilisateur existant. Vous devez supprimer l'utilisateur avant de supprimer le groupe.
gpasswd
Utilisez la commande gpasswd pour administrer /etc/group et /etc/gshadow. Chaque groupe peut avoir des administrateurs, des membres et un mot de passe. La syntaxe est :
# gpasswd [options] group_name
groupes
La commande groups affiche les groupes auxquels appartient un utilisateur. L'exemple suivant illustre que l'utilisateur oracle appartient à deux groupes, oracle (groupe principal) et étudiants (groupe secondaire) :
$ grep oracle /etc/passwd oracle:x:1000:1000:Oracle Student:/home/oracle/bin/bash
$ grep oracle /etc/group oracle:x:1000: students:x:1056:student1,student2,oracle
La commande groups (connecté en tant qu'oracle) vérifie ces appartenances à des groupes.
$ whoami oracle $ groups oracle students
nouveaugroupe
La commande newgrp exécute un nouveau shell et modifie l'identification du groupe réel d'un utilisateur. L'exemple suivant illustre l'ID de groupe avant et après l'exécution de la commande. Il illustre également qu'un nouveau shell est exécuté.
$ id uid=1000(oracle) gid=1000(oracle) groups=1000(oracle),1066(students)...
Notez que le gid est égal à 1000 (oracle).
$ ps PID TTY TIME CMD 20279 pts/0 00:00:00 bash 20411 pts/0 00:00:00 ps
$ newgrp students
$ id uid=1000(oracle) gid=1066(students) groups=1000(oracle),1066(students)...
Notez que le gid est maintenant égal à 1066(students). Notez également qu'un nouveau shell a été exécuté :
$ ps PID TTY TIME CMD 20279 pts/0 00:00:00 bash 20464 pts/0 00:00:00 bash 20486 pts/0 00:00:00 ps
La commande newgrp ne reconnaît pas les numéros d'identification de groupe et vous ne pouvez remplacer votre vrai nom de groupe que par un groupe dont vous êtes membre. L'exécution de la commande sans argument définit l'identification réelle du groupe sur le groupe principal de l'utilisateur.
Configuration du mot de passe
Le vieillissement du mot de passe oblige les utilisateurs à changer leur mot de passe périodiquement. Utilisez la commande chage pour configurer l'expiration du mot de passe. La syntaxe est :
# chage [options] user_name
Entrez la commande chage, suivie d'un nom d'utilisateur, pour afficher les valeurs de vieillissement de mot de passe existantes et apporter des modifications. Par exemple, pour afficher et modifier les valeurs de l'utilisateur john, saisissez (en tant qu'utilisateur root) :
# chage john Changing the aging information for john Enter the new value, or press ENTER for the default Minimum Password Age [0]: Maximum Password Age [99999]: Last Password Change (YYYY-MM-DD) [2018-03-24]: Password Expiration Warning [7]: Password Inactive [-1]: Account Expiration Date (YYYY-MM-DD) [-1]:
Les informations de vieillissement du mot de passe sont stockées dans le fichier /etc/shadow. Pour afficher l'entrée de l'utilisateur john avant d'apporter des modifications :
# grep john /etc/shadow john:$6$fJB4dWkt$...:17614:0:99999:7:::
Changer la valeur d'âge minimum du mot de passe à 14 et la valeur d'âge maximum du mot de passe à 30 signifie qu'en 14 jours, l'utilisateur a 30 jours pour changer son mot de passe. La nouvelle entrée apparaît comme :
# grep john /etc/shadow john:$6$fJB4dWkt$...:17614:14:30:7:::
Sur la base de ces informations, l'utilisateur est averti de changer son mot de passe sept jours avant la date d'expiration du mot de passe. La directive INACTIVE est utilisée pour définir le nombre de jours d'inactivité après l'expiration d'un mot de passe avant que le compte utilisateur ne soit verrouillé. Définir INACTIVE sur -1 désactive cette fonctionnalité.
Options de changement
Un certain nombre d'options sont disponibles pour la commande chage. Pour répertorier les informations d'ancienneté :
# chage -l john Last password change : Mar 24, 2018 Password expires : never Password inactive : never Account expires : never 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
Pour forcer un utilisateur à définir un nouveau mot de passe immédiatement (forcer l'expiration immédiate), définissez la valeur du dernier changement de mot de passe sur 0. Exemple :
# chage –d 0 john
Une fois connecté, l'utilisateur est invité à modifier son mot de passe.
configuration d'authentification
L'algorithme de hachage du mot de passe utilisateur Linux est également configurable. Utilisez la commande authconfig pour déterminer l'algorithme actuellement utilisé ou pour le définir sur quelque chose de différent. Pour déterminer l'algorithme actuel :
# authconfig --test | grep hashing password hashing algorithm is sha512
Pour changer l'algorithme, utilisez le –passalgo option avec l'un des paramètres suivants :descrypt , bigcrypt , md5 , sha256 , ou sha512 , suivi de –mise à jour option. Par exemple, pour changer l'algorithme en MD5 :
# authconfig --passalgo=md5 --updateCentOS / RHEL :Gestion du vieillissement des mots de passe pour les utilisateurs à l'aide de chage (avec exemples pratiques)
Comprendre le fichier /etc/login.defs