Shadow-4.16.0

Introduction à Shadow

Shadow a effectivement été installé dans LFS et il n'y a aucune raison pour le réinstaller, sauf si vous avez installé CrackLib ou Linux-PAM après que votre système LFS ai été terminé. Si vous avez installé CrackLib après LFS, la réinstallation de Shadow activera le support des mots de passe renforcés. Si vous avez installé Linux-PAM, la réinstallation de Shadow permettra à des programmes tels que login et su d'utiliser PAM.

Ce paquet est connu pour pouvoir être construit et fonctionner correctement avec une plateform 12.2.

Informations sur le paquet

Dépendances de Shadow

Requises

Linux-PAM-1.6.1 ou CrackLib-2.10.2

Facultatives

libbsd et tcb

Installation de Shadow

[Important]

Important

Les commandes d'installation indiquées ci-dessous valent pour les installations où on a installé Linux-PAM et Shadow devra être réinstallé pour prendre en charge l'installation de Linux-PAM.

Si vous réinstallez Shadow pour offrir le support des mots de passe forts en utilisant la bibliothèque CrackLib sans utiliser Linux-PAM, assurez-vous d'ajouter le paramètre --with-libcrack au script configure ci-dessous et lancez aussi la commande suivante :

sed -i 's@DICTPATH.*@DICTPATH\t/lib/cracklib/pw_dict@' etc/login.defs
[Avertissement]

Avertissement

Si vous réinstallez shadow pour une mise à jour de sa version, assurez-vous d'effectuer de nouveau la configuration de Linux-PAM ci-dessous. L'installation de shadow remplace de nombreux fichiers dans /etc/pam.d.

Réinstallez Shadow en exécutant les commandes suivantes :


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 / /'   {} \; &&

sed -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD YESCRYPT@' \
    -e 's@/var/spool/mail@/var/mail@'                   \
    -e '/PATH=/{s@/sbin:@@;s@/bin:@@}'                  \
    -i etc/login.defs                                   &&

./configure --sysconfdir=/etc   \
            --disable-static    \
            --without-libbsd    \
            --with-{b,yes}crypt &&
make

Ce paquet n'a pas de suite de tests.

Maintenant, en tant qu'utilisateur root :

make exec_prefix=/usr pamddir= install

Les pages de manuel ont été installées dans LFS, mais si vous voulez les réinstallez, lancez (en tant qu'utilisateur root) :

make -C man install-man

Explication des commandes

sed -i 's/groups$(EXEEXT) //' src/Makefile.in : Cette commande est utilisée pour supprimer l'installation du programme groups vu qu'on préfère la version issue du paquet Coreutils installé avec LFS.

find man -name Makefile.in -exec ... {} \; : la première commande est utilisée pour supprimer l'installation des pages de manuel groups pour que celles existantes et issues du paquet Coreutils ne soient pas remplacées. Les deux autres commandes empêchent l'installation des pages de manuel qui sont déjà installées par Man-pages dans LFS.

sed -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD YESCRYPT@' -e 's@/var/spool/mail@/var/mail@' -e '/PATH=/{s@/sbin:@@;s@/bin:@@}' -i etc/login.defs : au lieu d'utiliser la méthode « DES » par défaut, cette commande modifie l'installation pour utiliser la méthode de hashage des mots de passe « YESCRYPT » bien plus sécurisée, qui autorise aussi les mots de passe d'une longueur supérieure à huit caractères. Elle modifie aussi l'emplacement /var/spool/mail obsolète pour les boîtes aux lettres utilisateur qu'utilise Shadow par défaut en /var/mail. Elle change aussi le chemin de recherche par défaut pour rester cohérent avec ce qui est indiqué dans LFS.

--without-libbsd : évite de chercher la fonction readpassphrase, qui se trouve seulement dans libbsd, que nous n'avons pas dans BLFS. Une implémentation interne de readpassphrase est utilisée à la place.

pamddir= : empêche l'installation des fichiers de configuration PAM dans /etc/pam.d. La configuration embarquée ne fonctionne pas avec la configuration PAM de BLFS et créera ces fichiers de configuration explicitement.

Configuration de Linux-PAM pour fonctionner avec Shadow

[Note]

Note

Le reste de cette page est consacré à la configuration de Shadow pour fonctionner correctement avec Linux-PAM. Si vous n'avez pas installé Linux-PAM et si vous avez réinstallé Shadow pour supporter les mots de passe forts via la bibliothèque CrackLib, aucune configuration supplémentaire n'est nécessaire.

Fichiers de configuration

/etc/pam.d/* or alternatively /etc/pam.conf, /etc/login.defs et /etc/security/*

Informations de configuration

Configurer votre système pour utiliser Linux-PAM peut être une tâche complexe. Les informations ci-dessous fourniront un paramétrage de base pour que la fonctionnalité de connexion et de mot de passe de Shadow fonctionne bien avec Linux-PAM. Regardez les informations et les liens sur la page Linux-PAM-1.6.1 pour des informations de configuration supplémentaires. Pour des informations spécifiques à l'intégration de Shadow, Linux-PAM et CrackLib, vous pouvez visiter les liens suivants :

Configuration de /etc/login.defs

Le programme login effectue actuellement beaucoup de fonctions que les modules Linux-PAM devraient maintenant gérer. La commande sed suivante va commenter les lignes adéquates dans /etc/login.defs et empêcher login d'effectuer ces fonctions (un fichier de sauvegarde appelé /etc/login.defs.orig est également créé pour préserver le contenu du fichier d'origine). Exécutez les commandes suivantes en tant qu'utilisateur root :

install -v -m644 /etc/login.defs /etc/login.defs.orig &&
for FUNCTION in FAIL_DELAY               \
                FAILLOG_ENAB             \
                LASTLOG_ENAB             \
                MAIL_CHECK_ENAB          \
                OBSCURE_CHECKS_ENAB      \
                PORTTIME_CHECKS_ENAB     \
                QUOTAS_ENAB              \
                CONSOLE MOTD_FILE        \
                FTMP_FILE NOLOGINS_FILE  \
                ENV_HZ PASS_MIN_LEN      \
                SU_WHEEL_ONLY            \
                CRACKLIB_DICTPATH        \
                PASS_CHANGE_TRIES        \
                PASS_ALWAYS_WARN         \
                CHFN_AUTH ENCRYPT_METHOD \
                ENVIRON_FILE
do
    sed -i "s/^${FUNCTION}/# &/" /etc/login.defs
done
Configuration des fichiers /etc/pam.d/

Comme indiqué précédemment dans les instructions pour Linux-PAM, Linux-PAM supporte deux méthodes de configuration. Les commandes ci-dessous supposent que vous avez choisi d'utiliser une configuration basée sur le répertoire, où chaque programme a son propre fichier de configuration. Vous pouvez éventuellement utiliser un seul fichier de configuration /etc/pam.conf en utilisant le texte de configuration des fichiers ci-dessous, en fournissant le nom du programme comme premier champ à chaque ligne.

En tant qu'utilisateur root, créez les fichiers de configuration Linux-PAM suivants dans le répertoire /etc/pam.d/ (ou ajoutez le contenu au fichier /etc/pam.conf) en utilisant les commandes suivantes :

'login'
cat > /etc/pam.d/login << "EOF"
# Begin /etc/pam.d/login

# Set failure delay before next prompt to 3 seconds
auth      optional    pam_faildelay.so  delay=3000000

# Check to make sure that the user is allowed to login
auth      requisite   pam_nologin.so

# Check to make sure that root is allowed to login
# Disabled by default. You will need to create /etc/securetty
# file for this module to function. See man 5 securetty.
#auth      required    pam_securetty.so

# Additional group memberships - disabled by default
#auth      optional    pam_group.so

# include system auth settings
auth      include     system-auth

# check access for the user
account   required    pam_access.so

# include system account settings
account   include     system-account

# Set default environment variables for the user
session   required    pam_env.so

# Set resource limits for the user
session   required    pam_limits.so

# Display the message of the day - Disabled by default
#session   optional    pam_motd.so

# Check user's mail - Disabled by default
#session   optional    pam_mail.so      standard quiet

# include system session and password settings
session   include     system-session
password  include     system-password

# End /etc/pam.d/login
EOF
'passwd'
cat > /etc/pam.d/passwd << "EOF"
# Begin /etc/pam.d/passwd

password  include     system-password

# End /etc/pam.d/passwd
EOF
'su'
cat > /etc/pam.d/su << "EOF"
# Begin /etc/pam.d/su

# always allow root
auth      sufficient  pam_rootok.so

# Allow users in the wheel group to execute su without a password
# disabled by default
#auth      sufficient  pam_wheel.so trust use_uid

# include system auth settings
auth      include     system-auth

# limit su to users in the wheel group
# disabled by default
#auth      required    pam_wheel.so use_uid

# include system account settings
account   include     system-account

# Set default environment variables for the service user
session   required    pam_env.so

# include system session settings
session   include     system-session

# End /etc/pam.d/su
EOF
« chpasswd » et « newusers »
cat > /etc/pam.d/chpasswd << "EOF"
# Begin /etc/pam.d/chpasswd

# always allow root
auth      sufficient  pam_rootok.so

# include system auth and account settings
auth      include     system-auth
account   include     system-account
password  include     system-password

# End /etc/pam.d/chpasswd
EOF

sed -e s/chpasswd/newusers/ /etc/pam.d/chpasswd >/etc/pam.d/newusers
'chage'
cat > /etc/pam.d/chage << "EOF"
# Begin /etc/pam.d/chage

# always allow root
auth      sufficient  pam_rootok.so

# include system auth and account settings
auth      include     system-auth
account   include     system-account

# End /etc/pam.d/chage
EOF
Autres utilitaires de shadow
for PROGRAM in chfn chgpasswd chsh groupadd groupdel \
               groupmems groupmod useradd userdel usermod
do
    install -v -m644 /etc/pam.d/chage /etc/pam.d/${PROGRAM}
    sed -i "s/chage/$PROGRAM/" /etc/pam.d/${PROGRAM}
done
[Avertissement]

Avertissement

À ce stade, vous devriez effectuer un simple test pour vérifier que Shadow fonctionne comme prévu. Ouvrez un autre terminal et connectez-vous en tant qu'utilisateur root, puis lancez login et connectez-vous en tant qu'un autre utilisateur. Si vous ne voyez pas d'erreurs, tout va bien et vous pouvez poursuivre le reste de la configuration. Si vous avez reçu des erreurs, arrêtez-vous maintenant et vérifiez les fichiers de configuration ci-dessus à la main. Toute erreur est le signe d'un problème avec la procédure précédente. Vous pouvez aussi lancer la suite de tests du paquet Linux-PAM pour vous aider à déterminer le problème. Si vous n'arrivez pas à trouver et à corriger l'erreur, vous devrez recompiler Shadow en ajoutant le paramètre --without-libpam à la commande configure dans les instructions ci-dessus (renommez aussi le fichier de sauvegarde /etc/login.defs.orig en /etc/login.defs). Si vous ne faîtes pas cela et si les erreurs persistent, vous ne pourrez plus vous connecter à votre système.

Configuration de l'accès Login

Au lieu d'utiliser le fichier /etc/login.access pour contrôler l'accès au système, Linux-PAM utilise le module pam_access.so ainsi que le fichier /etc/security/access.conf. Renommez le fichier /etc/login.access en utilisant la commande suivante :

if [ -f /etc/login.access ]; then mv -v /etc/login.access{,.NOUSE}; fi
Configuration des limitations de ressources

Au lieu d'utiliser le fichier /etc/limits pour limiter l'utilisation des ressources système, Linux-PAM utilise le module pam_limits.so ainsi que le fichier /etc/security/limits.conf. Renommez le fichier /etc/limits en utilisant la commande suivante :

if [ -f /etc/limits ]; then mv -v /etc/limits{,.NOUSE}; fi
[Attention]

Attention

Soyez certain de tester le login sur le système avant de le quitter. Des erreurs dans la configuration peuvent causer un blocage permanent demandant un démarrage depuis une source externe pour corriger le problème.

Contenu

Vous pouvez trouver une liste des fichiers installés ainsi que leurs descriptions courtes sur ../../../../lfs/view/12.2/chapter08/shadow.html#contents-shadow