Миграция хэшей NIS yppasswd из крипты в md5
Представьте себе базу данных пользователей NIS /var/yp/input-files/passwd
состоящий из старых хэшей DES склепа. Цель состоит в том, чтобы перенести эту базу данных в md5 или sha-хэши. При смене пароля с помощью yppasswd
, он генерируется с использованием того же алгоритма, что и для существующей записи (вероятно, по старым причинам), то есть crypt остается crypt, md5 остается md5.
Наш текущий план состоит в том, чтобы написать специальный скрипт смены пароля, обертывающий yppasswd. Есть ли более элегантный способ указать yppasswd генерировать измененные пароли в формате md5 по умолчанию?
2 ответа
Я понял это сейчас:
- Загрузите nis-пакет вашего дистрибутива, например
apt-get source nis
под Debian. - Отредактируйте соответствующий yp-tools-2.9 /src/yppasswd.c
- замещать
int has_md5_passwd = 0;
отint has_md5_passwd = 1;
в началеint main (int argc, char **argv)
Затем yppasswd всегда создает хэши md5.
Последние дистрибутивы Linux поддерживают обновления паролей NIS через PAM, что означает, что вы можете использовать локальный passwd
программа вместо yppasswd
, Это также означает, что вы можете настроить алгоритм хеширования, который по-прежнему (с yp-tools 2.12) невозможен при yppasswd
,
Ваша система должна иметь /etc/pam.d/passwd
файл, который будет содержать или, что более вероятно, будет ссылаться на другой файл, содержащий строку вида:
password sufficient pam_unix.so md5 nis
Второе поле может отличаться, и в конце могут быть другие параметры, но вы хотите password
линия, которая загружает pam_unix.so
и он должен иметь по крайней мере nis
параметр, а также хеш-функцию, соответствующую вашему серверу NIS (md5
, sha256
, так далее.)
В вашем дистрибутиве, возможно, есть лучший способ настроить это, поэтому убедитесь, что ваши изменения не будут перезаписаны автоматическим процессом позже.
В системах на основе RedHat (включая, по крайней мере, RHEL, CentOS, Scientific Linux и Fedora) вам необходимо использовать authconfig
программа с по крайней мере --enablenis
параметр. Для приведенного выше сценария с хэшами MD5 будет достаточно следующей командной строки:
authconfig --enablenis --usemd5 --update
В системах Debian (и, возможно, производных Debian, но я не могу проверить в настоящий момент), правильный способ сделать это - скопировать /usr/share/pam-configs/unix
к чему-то другому (скажем, /usr/share/pam-configs/nis
), отредактируйте новый файл, присвоив ему соответствующие настройки и новое имя профиля, затем запустите pam-auth-update
, отключите профиль "Unix аутентификация" и включите ваш новый профиль.