Shadow-4.1.5.1

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 se construire correctement sur une plateforme LFS-7.2.

Informations sur le paquet

Dépendances de Shadow

Requises

Linux-PAM-1.1.6 ou CrackLib-2.8.19

Notes utilisateur : http://wiki.linuxfromscratch.org/blfs/wiki/shadow

Installation de Shadow

[Important]

Important

Les commandes d'installation indiquées ci-dessous valent pour les installations où on a installé Linux-PAM (avec ou sans installation CrackLib) et Shadow devra être réinstallé pour supporter l'installation 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.*@DICTPATHt/lib/cracklib/pw_dict@' etc/login.defs

Réinstallez Shadow en lançant les commandes suivantes :

sed -i 's/groups$(EXEEXT) //' src/Makefile.in &&
find man -name Makefile.in -exec sed -i 's/groups.1 / /' {} ; &&
sed -i -e 's/ ko//' -e 's/ zh_CN zh_TW//' man/Makefile.in &&

sed -i -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD SHA512@'        -e 's@/var/spool/mail@/var/mail@' etc/login.defs &&

sed -i -e 's@PATH=/sbin:/bin:/usr/sbin:/usr/bin@&:/usr/local/sbin:/usr/local/bin@'        -e 's@PATH=/bin:/usr/bin@&:/usr/local/bin@' etc/login.defs &&

./configure --prefix=/usr --sysconfdir=/etc &&
make

Ce paquet n'est pas fourni avec une suite de tests.

Maintenant, en tant qu'utilisateur root :

make install &&
mv -v /usr/bin/passwd /bin

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 ... {} ; : Cette commande est utilisée pour supprimer l'installation des pages de man groups pour que ceux existant et issus du paquet Coreutils ne sont pas remplacés.

sed -i -e '...' -e '...' man/Makefile.in : Cette commande désactive l'installation des pages de manuel chinoises et coréennes, vu que Man-DB ne peut pas les formatter correctement.

sed -i -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD SHA512@' -e 's@/var/spool/mail@/var/mail@' etc/login.defs : Au lieu d'utiliser la méthode 'DES' par défaut, cette commande modifie l'installation pour utiliser la méthode plus sécurisé 'SHA512' de chiffrement des mots de passe 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 emplacement /var/mail.

sed -i -e 's@PATH=/sbin:/bin:/usr/sbin:/usr/bin@&:/usr/local/sbin:/usr/local/bin@' -e 's@PATH=/bin:/usr/bin@&:/usr/local/bin@' etc/login.defs : Cette commande sed ajoute au PATH /usr/local/bin pour les utilisateurs normaux et pour l'utilisateur root et /usr/local/sbin pour l'utilisateur root seulement.

mv -v /usr/bin/passwd /bin : Le programme passwd peut être nécessaire aux moments où le système de fichiers /usr n'est pas monté pour qu'il soit déplacé dans la partition racine.

Configuration de Shadow

La configuration stock de Shadow pour l'outil useradd peut ne pas être désirable pour votre installation. Un paramètre par défaut a pour conséquence que useradd crée un fichier de boîte aux lettres pour chaque nouvel utilisateur créé. useradd donnera l'appartanenance de ce groupe au groupe mail avec les droits 0660. Si vous préféreriez que ces fichiers boîtes aux lettres ne soient pas créés par useradd, lancez la commande suivante en tant qu'utilisateur root :

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

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/* ou sinon /etc/pam.conf, /etc/login.defs, et /etc/security/*

Informations de configuration

La configuration de 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.1.6 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 arrêter 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 champ en premier supplémentaire à chaque ligne.

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

'system-account'
cat > /etc/pam.d/system-account << "EOF"
# Début de /etc/pam.d/system-account
 
account     required       pam_unix.so

# Fin de /etc/pam.d/system-account
EOF
'system-auth'
cat > /etc/pam.d/system-auth << "EOF"
# Début de /etc/pam.d/system-auth

auth        required       pam_unix.so

# Fin de /etc/pam.d/system-auth
EOF
'system-passwd' (avec CrackLib)
cat > /etc/pam.d/system-password << "EOF"
# Début de /etc/pam.d/system-password
  
# vérifie la force des nouveaux mots de passe (man pam_cracklib)
password  required    pam_cracklib.so   type=Linux retry=3 difok=5                                         difignore=23 minlen=9 dcredit=1                                         ucredit=1 lcredit=1 ocredit=1                                         dictpath=/lib/cracklib/pw_dict
# utilisation de sha512 hash pour le cryptage, et utilisation des jetons
# d'authentication (chosen password) initialisé par pam_cracklib
# (ou un des précédents modules)
password  required    pam_unix.so       sha512 shadow use_authtok

# Fin de /etc/pam.d/system-password
EOF
[Note]

Note

Dans sa configuration par défaut, en fonction des droits, pam_cracklib permettra des mots de passe avec plusieurs casses aussi brefs que 6 caractères, même avec la valeur minlen réglé sur 11. Vous devriez relire la page de man de pam_cracklib(8) et déterminer si ces valeurs par défaut sont acceptables pour la sécurité de votre système.

'system-passwd' (without cracklib)
cat > /etc/pam.d/system-password << "EOF"
# Début de /etc/pam.d/system-password

# utilisation de sha512 hash pour le cryptage, et essaie d'utiliser un des jetons d'authentification
# défini précédement (chosen password) initialisé par un des modules anterieurs
password  required    pam_unix.so       sha512 shadow try_first_pass

# Fin de /etc/pam.d/system-password
EOF
'system-session'
cat > /etc/pam.d/system-session << "EOF"
# Début de /etc/pam.d/system-session

session   required    pam_unix.so

# Fin de /etc/pam.d/system-session
EOF
'login'
cat > /etc/pam.d/login << "EOF"
# Début de /etc/pam.d/login

# Initialise le delai après un echec avant un nouveau prompt à 3 seconds
auth      optional    pam_faildelay.so  delay=3000000

# Vérifie pour être certain que l'utilisateur est autorisé à se loguer
auth      requisite   pam_nologin.so

# Vérifie pour être certain que root est autorisé à se loguer
# Désactivé par défaut. Vous devez créer le fichier /etc/securetty
# pour que ce module fonctionne. Voir man 5 securetty.
#auth      required    pam_securetty.so

# Appartenances aux groupes supplémentaires - désactivé par défaut
#auth      optional    pam_group.so

# Inclure les paramètres d'authentification par défaut
auth      include     system-auth

# Vérifie l'acces pour l'utilisateur
account   required    pam_access.so

# Inclure les paramètres pour le compte par défaut
account   include     system-account

# Initialise les variables d'environnement par défaut pour l'utilisateur
session   required    pam_env.so

# Initialise les limites de ressource pour l'utilisateur
session   required    pam_limits.so

# Affiche la date du dernier login - Désactivé par défaut
#session   optional    pam_lastlog.so

# Affiche le message du jour - Désactivé par défaut
#session   optional    pam_motd.so

# Vérifie les mails de l'utilisateur - Désactivé par défaut
#session   optional    pam_mail.so      standard quiet

# Inclure la session par defaut et les paramètres du mot de passe
session   include     system-session
password  include     system-password

# Fin de /etc/pam.d/login
EOF
'passwd'
cat > /etc/pam.d/passwd << "EOF"
# Début de /etc/pam.d/passwd

password  include     system-password

# Fin de /etc/pam.d/passwd
EOF
'su'
cat > /etc/pam.d/su << "EOF"
# Début de /etc/pam.d/su

# Autorise toujours root
auth      sufficient  pam_rootok.so
auth      include     system-auth

# Inclure les paramètres pour le compte par défaut
account   include     system-account

# Initialise les variables d'environnement par défaut pour l'utilisateur
session   required    pam_env.so

# Inclure la session par défaut
session   include     system-session

# Fin de /etc/pam.d/su
EOF
'chage'
cat > /etc/pam.d/chage << "EOF"
# Début de /etc/pam.d/chage

# Autorise toujours root
auth      sufficient  pam_rootok.so

# Inclure les valeurs système par défaut pour l'authentification du compte et la session
auth      include     system-auth
account   include     system-account
session   include     system-session

# Permet toujours les mises à jour de l'authentification
password  required    pam_permit.so

# Fin de /etc/pam.d/chage
EOF
'chfn', 'chgpasswd', 'chgpasswd', 'chsh', 'groupadd', 'groupdel', 'groupmems', 'groupmod', 'newusers', 'useradd', 'userdel' et 'usermod'
for PROGRAM in chfn chgpasswd chpasswd chsh groupadd groupdel                groupmems groupmod newusers 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

À cette étape, vous devriez faire un simple test pour voir si Shadow fonctionne comme prévu. Ouvrez un autre terminal et connectez-vous en tant qu'utilisateur, puis su en root. Si vous ne voyez pas d'erreurs, tout va bien et vous devriez poursuivre le reste de la configuration. Si vous avez reçu des erreurs, arrêtez-vous maintenant et vérifiez à deux reprises les fichiers de configuration ci-dessus à la main. Vous pouvez aussi lancer la suite de tests à partir du paquet Linux-PAM pour vous aider à déterminer le problème. Si vous n'arrivez pas à trouver et à corriger l'erreur, vous devriez recompiler Shadow en ajoutant le paramètre --without-libpam à la commande configure cdans les instructions ci-dessus (déplacez aussi le fichier de sauvegarde /etc/login.defs.orig dans /etc/login.defs). Si vous n'arrivez pas à faire cela et si les erreurs demeurent, vous ne pourrez pas vous connecter à votre système.

Autre

Actuellement, /etc/pam.d/other est configuré pour autoriser n'importe qui à ayant un compte sur la machine à utiliser des programmes utilisant PAM sans fichier de configuration pour ce programme. Après avoir testé la bonne configuration de Linux-PAM, installez un fichier other plus restrictif afin que les fichiers de configuration spécifiques au programme soient requis :

cat > /etc/pam.d/other << "EOF"
# Début de /etc/pam.d/other

auth        required        pam_warn.so
auth        required        pam_deny.so
account     required        pam_warn.so
account     required        pam_deny.so
password    required        pam_warn.so
password    required        pam_deny.so
session     required        pam_warn.so
session     required        pam_deny.so

# Fin de /etc/pam.d/other
EOF
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 :

[ -f /etc/login.access ] && mv -v /etc/login.access{,.NOUSE}
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 :

[ -f /etc/limits ] && mv -v /etc/limits{,.NOUSE}

Contenu

Vous pouvez trouver une liste des fichiers installés ainsi que leurs descriptions courtes sur http://lfs.traduc.org/view/lfs-stable/chapter06/shadow.html#contents-shadow.

Last updated on : 2012-08-01 01:44:40 +020