8.25. Shadow-4.13

Le paquet Shadow contient des programmes de gestion de mots de passe d'une façon sécurisée.

Temps de construction approximatif: 0.1 SBU
Espace disque requis: 46 Mo

8.25.1. Installation de Shadow

[Note]

Note

Si vous souhaitez multiplier l'usage des mots de passe efficaces, reportez-vous à https://fr.linuxfromscratch.org/blfs/../view/blfs-11.3-fr/postlfs/cracklib.html pour l'installation de CrackLib avant de compiler Shadow. Puis ajoutez --with-libcrack à la commande configure ci-dessous.

Désactivez l'installation du programme groups et de ses pages de manuel car Coreutils en fournit une meilleure version. Cela empêche aussi l'installation de pages de manuel déjà installées dans Section 8.3, « Man-pages-6.03 » :

sed -i 's/groups$(EXEEXT) //' src/Makefile.in
find man -name Makefile.in -exec sed -i 's/groups\.1 / /'   {} \;
find man -name Makefile.in -exec sed -i 's/getspnam\.3 / /' {} \;
find man -name Makefile.in -exec sed -i 's/passwd\.5 / /'   {} \;

Au lieu d'utiliser la méthode crypt par défaut, utilisez la méthode SHA-512 de chiffrement de mot de passe plus sécurisée, qui autorise aussi les mots de passe plus longs que huit caractères. Configurez aussi le nombre d'itérations à 500 000 au lieu de la valeur par défaut 5000, qui est bien trop faible pour prévenir les attaques par force brute sur les mots de passe. Il est également nécessaire de changer l'emplacement obsolète de /var/spool/mail pour les boîtes e-mail de l'utilisateur que Shadow utilise par défaut en l'endroit /var/mail utilisé actuellement. Ensuite, retirez /bin et /sbin de PATH, car ce sont de simples liens symboliques vers leur contrepartie dans /usr.

[Note]

Note

Si vous préférez garder /bin ou /sbin dans PATH pour une raison ou une autre, modifiez PATH dans .bashrc après la construction de LFS.

sed -e 's:#ENCRYPT_METHOD DES:ENCRYPT_METHOD SHA512:' \
    -e 's@#\(SHA_CRYPT_..._ROUNDS 5000\)@\100@'       \
    -e 's:/var/spool/mail:/var/mail:'                 \
    -e '/PATH=/{s@/sbin:@@;s@/bin:@@}'                \
    -i etc/login.defs
[Note]

Note

Si vous compilez Shadow avec la prise en charge de Cracklib, lancez la commande qui suit :

sed -i 's:DICTPATH.*:DICTPATH\t/lib/cracklib/pw_dict:' etc/login.defs

Préparez la compilation de Shadow :

touch /usr/bin/passwd
./configure --sysconfdir=/etc \
            --disable-static  \
            --with-group-name-max-length=32

Voici la signification des nouvelles options de configuration :

touch /usr/bin/passwd

Le fichier /usr/bin/passwd a besoin d'exister parce que son emplacement est codé en dur dans certains programmes. S'il n'existe pas, le script d'installation va en créer un par défaut au mauvais endroit.

--with-group-name-max-length=32

La longueur maximum d'un nom d'utilisateur est de 32 caractères. Le paramètre règle un plafond similaire pour les noms de groupes.

Compilez le paquet :

make

Ce paquet n'a pas de suite de tests.

Installez le paquet :

make exec_prefix=/usr install
make -C man install-man

8.25.2. Configuration de Shadow

Ce paquet contient des outils pour ajouter, modifier, supprimer des utilisateurs et des groupes, initialiser et changer leur mot de passe, et bien d'autres tâches administratives. Pour une explication complète de ce que signifie password shadowing, jetez un œil dans le fichier doc/HOWTO à l'intérieur du répertoire source. Il reste une chose à garder à l'esprit si vous décidez d'utiliser le support de Shadow : les programmes qui ont besoin de vérifier les mots de passe (gestionnaires d'affichage, programmes FTP, démons pop3 , etc.) ont besoin d'être compatibles avec shadow, c'est-à-dire qu'ils ont besoin d'être capables de fonctionner avec des mots de passe shadow.

Pour activer les mots de passe shadow, lancez la commande suivante :

pwconv

Pour activer les mots de passe shadow pour les groupes, lancez :

grpconv

La configuration par défaut de Shadow pour l'outil useraddprésente quelques inconvénients qui appellent quelques explications. Tout d'abord, l'action par défaut de l'outil useradd est de créer un utilisateur et un groupe du même nom que l'utilisateur. Par défaut les numéros d'ID utilisateur (UID) et d'ID de groupe (GID) commenceront à 1000. Cela signifie que si vous ne passez pas de paramètres à useradd, chaque utilisateur sera membre d'un groupe unique sur le système. Si vous ne désirez pas ce comportement, vous devrez passer le paramètre -g ou -N à useradd ou changer le paramètre USERGROUPS_ENAB dans /etc/login.defs. Voir useradd(8) pour plus d'informations.

Ensuite, pour changer les paramètres par défaut, vous devez créer le fichier /etc/default/useradd et l'adapter à vos besoins. Créez-le avec :

mkdir -p /etc/default
useradd -D --gid 999

Explication des paramètres de /etc/default/useradd

GROUP=999

Ce paramètre initialise le début des numéros de groupe utilisés dans le fichier /etc/group. La valeur 999 particulière provient du paramètre --gid ci-dessus. Vous pouvez le remplacer par la valeur de votre choix. Remarquez que useradd ne réutilisera jamais un UID ou un GID. Si le numéro identifié dans ce paramètre est déjà utilisé, il utilisera le numéro disponible suivant celui-ci. Remarquez aussi que si vous n'avez pas de groupe de GID égal à ce numéro sur votre système la première fois que vous utilisez useradd sans le paramètre -g, vous obtiendrez un message d'erreur sur le terminal qui dit : useradd: unknown GID 999, bien que le compte soit correctement créé. C'est pourquoi nous avons créé le groupe users avec cet identifiant de groupe dans le Section 7.6, « Création des fichiers et des liens symboliques essentiels ».

CREATE_MAIL_SPOOL=yes

Il résulte de ce paramètre que useradd crée un fichier de boîte mail pour chaque nouvel utilisateur. useradd rendra le groupe mail propriétaire de ce fichier avec les droits 0660. Si vous préférez que useradd ne crée pas ces fichiers de boîte mail, lancez la commande suivante :

sed -i '/MAIL/s/yes/no/' /etc/default/useradd

8.25.3. Configurer le mot de passe de root

Choisissez un mot de passe pour l'utilisateur root et configurez-le avec :

passwd root

8.25.4. Contenu de Shadow

Programmes installés: chage, chfn, chgpasswd, chpasswd, chsh, expiry, faillog, getsubids, gpasswd, groupadd, groupdel, groupmems, groupmod, grpck, grpconv, grpunconv, lastlog, login, logoutd, newgidmap, newgrp, newuidmap, newusers, nologin, passwd, pwck, pwconv, pwunconv, sg (lien vers newgrp), su, useradd, userdel, usermod, vigr (lien vers vipw) et vipw
Répertoires installés: /etc/default et /usr/include/shadow
Bibliothèques installées: libsubid.so

Descriptions courtes

chage

Utilisé pour modifier le nombre maximum de jours entre des modifications obligatoires du mot de passe

chfn

Utilisé pour modifier le nom complet de l'utilisateur et quelques autres informations

chgpasswd

Utilisé pour mettre à jour des mots de passe en lot

chpasswd

Utilisé pour mettre à jour les mots de passe utilisateurs en lot

chsh

Utilisé pour modifier le shell de connexion par défaut d'un utilisateur

expiry

Vérifie et renforce la politique d'expiration des mots de passe

faillog

Est utilisé pour examiner les traces d'échecs de connexions, pour configurer le nombre maximum d'échecs avant qu'un compte ne soit bloqué ou pour réinitialiser le nombre d'échecs

getsubids

Est utilisé pour lister les intervalles des identifiants mineurs d'un utilisateurs

gpasswd

Est utilisé pour ajouter et supprimer des membres et des administrateurs aux groupes

groupadd

Crée un groupe avec le nom donné

groupdel

Supprime le groupe ayant le nom donné

groupmems

Permet à un utilisateur d'administrer la liste des membres de son groupe sans avoir besoin des privilèges du super utilisateur.

groupmod

Est utilisé pour modifier le nom ou le GID du groupe

grpck

Vérifie l'intégrité des fichiers /etc/group et /etc/gshadow

grpconv

Crée ou met à jour le fichier shadow à partir du fichier group standard

grpunconv

Met à jour /etc/group à partir de /etc/gshadow puis supprime ce dernier

lastlog

Indique les connexions les plus récentes de tous les utilisateurs ou d'un utilisateur donné

login

Est utilisé par le système pour permettre aux utilisateurs de se connecter

logoutd

Est un démon utilisé pour renforcer les restrictions sur les temps et ports de connexion

newgidmap

Est utilisé pour configurer la correspondance des gid d'un espace de nom utilisateur

newgrp

Est utilisé pour modifier le GID courant pendant une session de connexion

newuidmap

Est utilisé pour configurer la correspondance des uid d'un espace de nom utilisateur

newusers

Est utilisé pour créer ou mettre à jour toute une série de comptes utilisateur en une fois

nologin

Affiche un message selon lequel un compte n'est pas disponible. Destiné à être utilisé comme shell par défaut pour des comptes qui ont été désactivés

passwd

Est utilisé pour modifier le mot de passe d'un utilisateur ou d'un groupe

pwck

Vérifie l'intégrité des fichiers de mots de passe, /etc/passwd et /etc/shadow

pwconv

Crée ou met à jour le fichier de mots de passe shadow à partir du fichier password habituel

pwunconv

Met à jour /etc/passwd à partir de /etc/shadow puis supprime ce dernier

sg

Exécute une commande donnée lors de l'initialisation du GID de l'utilisateur à un groupe donné

su

Lance un shell en substituant les ID de l'utilisateur et du groupe

useradd

Crée un nouvel utilisateur avec le nom donné ou met à jour les informations par défaut du nouvel utilisateur

userdel

Supprime le compte utilisateur indiqué

usermod

Est utilisé pour modifier le nom de connexion de l'utilisateur, son UID (User Identification, soit Identification Utilisateur), shell, groupe initial, répertoire personnel, etc.

vigr

Édite les fichiers /etc/group ou /etc/gshadow

vipw

Édite les fichiers /etc/passwd ou /etc/shadow

libsubid

bibliothèque de traitement des intervalles subordonnés d'ID des utilisateurs et des groupes