Пакет shadow был установлен в LFS и нет смысла переустанавливать его, если Вы не установили Linux-PAM. Если установили, то это позволит программам, таким как login и su, использовать PAM.
Адрес (FTP): ftp://ftp.pld.org.pl/software/shadow/old/shadow-4.0.4.1.tar.bz2
Контрольная сумма: 3a3d17d3d7c630b602baf66ae7434c61
Размер: 814 KB
Требуемое дисковое пространство: 14.1 MB
Расчетное время сборки: 0.42 SBU
Патч для исправления компоновки с PAM: http://www.linuxfromscratch.org/blfs/downloads/6.0/shadow-4.0.4.1-pam-1.patch .
Переустановим Shadow запуском следующих команд:
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 &&
sed -i '/extern char/d' libmisc/xmalloc.c &&
make
А теперь, как пользователь root:
make install &&
mv /bin/sg /usr/bin &&
mv /bin/vigr /usr/sbin &&
mv /usr/bin/passwd /bin &&
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: Этот ключ скажет Shadow не использовать libcrack. Это желательно, поскольку Linux-PAM уже содержит libcrack.
sed -i '/extern char/d' libmisc/xmalloc.c: Это устраняет проблему компиляции при использовании GCC-3.4.x.
/etc/pam.d/login, /etc/pam.d/passwd, /etc/pam.d/su, /etc/pam.d/shadow, /etc/pam.d/useradd и /etc/pam.d/chage (альтернативно /etc/pam.conf).
Добавьте следующие файлы конфигурации Linux-PAM в /etc/pam.d/ (или добавтье их в /etc/pam.conf с дополнительными полями для программы).
cat > /etc/pam.d/login << "EOF" # Begin /etc/pam.d/login authrequisitepam_securetty.so authrequisitepam_nologin.so authrequired pam_env.so authrequired 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 # End /etc/pam.d/login EOF cat > /etc/pam.d/passwd << "EOF" # Begin /etc/pam.d/passwd passwordrequired pam_unix.so md5 shadow # End /etc/pam.d/passwd EOF cat > /etc/pam.d/shadow << "EOF" # Begin /etc/pam.d/shadow authsufficientpam_rootok.so authrequiredpam_unix.so account requiredpam_unix.so session requiredpam_unix.so passwordrequiredpam_permit.so # End /etc/pam.d/shadow EOF cat > /etc/pam.d/su << "EOF" # Begin /etc/pam.d/su authsufficientpam_rootok.so authrequiredpam_unix.so account requiredpam_unix.so session requiredpam_unix.so # End /etc/pam.d/su EOF cat > /etc/pam.d/useradd << "EOF" # Begin /etc/pam.d/useradd authsufficientpam_rootok.so authrequiredpam_unix.so account requiredpam_unix.so session requiredpam_unix.so passwordrequiredpam_permit.so # End /etc/pam.d/useradd EOF cat > /etc/pam.d/chage << "EOF" # Begin /etc/pam.d/chage authsufficientpam_rootok.so authrequiredpam_unix.so account requiredpam_unix.so session requiredpam_unix.so passwordrequiredpam_permit.so # End /etc/pam.d/chage EOF
Если у Вас установлены cracklib, замените /etc/pam.d/passwd на следующее:
cat > /etc/pam.d/passwd << "EOF" # Begin /etc/pam.d/passwd passwordrequiredpam_cracklib.so \ retry=3difok=8minlen=5dcredit=3ocredit=3ucredit=2lcredit=2 passwordrequiredpam_unix.so md5 shadow use_authtok # End /etc/pam.d/passwd EOF
На этом месте Вы должны выполнить простой тест, чтобы увидеть, работает ли Shadow, как Вы ожидаете. Откройте другой терминал и зарегистрируйтесь, как обычный пользователь, затем su для root. Если нет никаких ошибок, то все хорошо, и Вы можете продолжать дальнейшую конфигурацию. Если Вы получили ошибки, остановитесь и дважды проверьте вышеописанные файлы конфигурации. Если Вы не можете найти и устранить ошибки, Вы должны перекомпилировать shadow, заменив --with-libpam на --without-libpam в вышеописанных инструкциях. Если Вам не удалось сделать это, а ошибки остались, Вы не сможете зарегистрироваться в Вашей системе.
На данный момент файл /etc/pam.d/other отконфигурирован для разрешения любому пользователю с логином на машине использовать программы, которые не имеют их собственного файла конфигурации. После проверки Linux-PAM на правильность конфигурации, он может быть изменен на следующее:
cat > /etc/pam.d/other << "EOF" # Begin /etc/pam.d/other authrequiredpam_deny.so authrequiredpam_warn.so account requiredpam_deny.so session requiredpam_deny.so passwordrequiredpam_deny.so passwordrequiredpam_warn.so # End /etc/pam.d/other EOF
В конце отредактируйте /etc/login.defs добавлением '#' в начало следующих строк:
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
Это остановит login от выполнеия этих функций, поскольку теперь они будут выполнены модулями PAM. Дополнительно добавте '#' в начало следующих строк, если у Вас установлена библиотека cracklib:
OBSCURE_CHECKS_ENAB CRACKLIB_DICTPATH PASS_CHANGE_TRIES PASS_ALWAYS_WARN
Последнее обновление 2005-03-04 14:08:15 -0700.