Shadow a cependant besoin d'être installé dans LFS et il n'y a aucune raison de le réinstaller sauf si vous avez installé Linux-PAM. Si c'est votre cas, ceci permettra aux programmes comme login et su d'utiliser PAM.
Correctif pour le lien avec PAM : http://www.linuxfromscratch.org/patches/blfs/5.1/shadow-4.0.4.1-pam-1.patch
Réinstallez shadow en lançant les commandes suivantes:
patch -Np1 -i ../shadow-4.0.4.1-pam-1.patch &&
LIBS="-lpam -lpam_misc" ./configure --libdir=/usr/lib \
--enable-shared --with-libpam --without-libcrack &&
echo '#define HAVE_SETLOCALE 1' >> config.h &&
make &&
make install &&
mv /bin/sg /usr/bin &&
mv /bin/vigr /usr/sbin &&
rm /bin/groups &&
mv /usr/lib/lib{misc,shadow}.so.0* /lib &&
ln -sf ../../lib/libshadow.so.0 /usr/lib/libshadow.so &&
ln -sf ../../lib/libmisc.so.0 /usr/lib/libmisc.so
--without-libcrack : cette option indique à shadow de ne pas utiliser libcrack. Ceci est voulu car Linux-PAM contient déjà libcrack.
/etc/pam.d/login, /etc/pam.d/passwd, /etc/pam.d/su, /etc/pam.d/shadow et /etc/pam.d/useradd
Ajoutez les fichiers de configuration PAM suivants dans /etc/pam.d (ou ajoutez-les dans /etc/pam.conf avec le champ additionnel pour le programme).
cat > /etc/pam.d/login << "EOF" # Début /etc/pam.d/login auth requisite pam_securetty.so auth requisite pam_nologin.so auth required pam_env.so auth required pam_unix.so account required pam_access.so account required pam_unix.so session required pam_motd.so session required pam_limits.so session optional pam_mail.so dir=/var/mail standard session optional pam_lastlog.so session required pam_unix.so # Fin /etc/pam.d/login EOF cat > /etc/pam.d/passwd << "EOF" # Début /etc/pam.d/passwd password required pam_unix.so md5 shadow # Fin /etc/pam.d/passwd EOF cat > /etc/pam.d/shadow << "EOF" # Début /etc/pam.d/shadow auth sufficient pam_rootok.so auth required pam_unix.so account required pam_unix.so session required pam_unix.so password required pam_permit.so # Fin /etc/pam.d/shadow EOF cat > /etc/pam.d/su << "EOF" # Début /etc/pam.d/su auth sufficient pam_rootok.so auth required pam_unix.so account required pam_unix.so session required pam_unix.so # Fin /etc/pam.d/su EOF cat > /etc/pam.d/useradd << "EOF" # Début /etc/pam.d/useradd auth sufficient pam_rootok.so auth required pam_unix.so account required pam_unix.so session required pam_unix.so password required pam_permit.so # Fin /etc/pam.d/useradd EOF cat > /etc/pam.d/chage << "EOF" # Début /etc/pam.d/chage auth sufficient pam_rootok.so auth required pam_unix.so account required pam_unix.so session required pam_unix.so password required pam_permit.so # Fin /etc/pam.d/chage EOF
Actuellement, /etc/pam.d/other est configuré pour permettre à ceux disposant d'un compte sur la machine d'utiliser les programmes qui n'ont pas un fichier de configuration spécifique. Après avoir testé PAM pour vérifier que sa configuration est correcte, il peut être changé par ceci:
cat > /etc/pam.d/other << "EOF" # Begin /etc/pam.d/other auth required pam_deny.so auth required pam_warn.so account required pam_deny.so session required pam_deny.so password required pam_deny.so password required pam_warn.so # End /etc/pam.d/other EOF
Enfin, éditez /etc/login.defs en ajoutant '#' au début des lignes suivantes:
DIALUPS_CHECK_ENAB LASTLOG_ENAB MAIL_CHECK_ENAB PORTTIME_CHECKS_ENAB CONSOLE MOTD_FILE NOLOGINS_FILE PASS_MIN_LEN SU_WHEEL_ONLY MD5_CRYPT_ENAB CONSOLE_GROUPS ENVIRON_FILE
Ceci fait que login arrête de réaliser ces fonctions, car elles seront maintenant réalisées par les modules PAM.