Contenu
Vous pouvez trouver une liste des fichiers installés ainsi que leurs descriptions courtes sur ../../../../lfs/view/11.3-systemd/chapter08/shadow.html#contents-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.
This package is known to build and work properly using an LFS 11.3 platform.
Téléchargement (HTTP) : https://github.com/shadow-maint/shadow/releases/download/4.13/shadow-4.13.tar.xz
Somme de contrôle MD5 : b1ab01b5462ddcf43588374d57bec123
Taille du téléchargement : 1,7 Mo
Estimation de l'espace disque requis : 45 Mo
Estimation du temps de construction : 0.2 SBU
Linux-PAM-1.5.2 ou CrackLib-2.9.8
Notes utilisateur : https://wiki.linuxfromscratch.org/blfs/wiki/shadow
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
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 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 && ./configure --sysconfdir=/etc \ --disable-static \ --with-group-name-max-length=32 && make
Ce paquet n'a pas de suite de tests.
Maintenant, en tant qu'utilisateur root
:
make exec_prefix=/usr 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
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 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 : Au lieu d'utiliser la méthode
« DES » par défaut, cette commande modifie l'installation
pour utiliser la méthode plus sécurisée de hashage des mots de
passe « SHA512 », qui autorise aussi les mots de passe
d'une longueur supérieure à huit caractères. Le nombre de tours est
aussi augmenté pour éviter les attaques par force brute. 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.
--with-group-name-max-length=32
:
Le nom d'utilisateur utilise au maximum 32 caractères. Faites la
même chose pour le nom du groupe.
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.
/etc/pam.d/*
or alternatively
/etc/pam.conf
, /etc/login.defs
et /etc/security/*
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.5.2 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 :
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
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 :
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 date of last login - Disabled by default
#session optional pam_lastlog.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
cat > /etc/pam.d/passwd << "EOF"
# Begin /etc/pam.d/passwd
password include system-password
# End /etc/pam.d/passwd
EOF
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
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
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
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
À 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.
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
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
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.
Vous pouvez trouver une liste des fichiers installés ainsi que leurs descriptions courtes sur ../../../../lfs/view/11.3-systemd/chapter08/shadow.html#contents-shadow