#linux #migration #md5 #passwd #nis
#linux #миграция #md5 #passwd #nis
Вопрос:
Представьте пользовательскую базу данных NIS /var/yp/input-files/passwd
, состоящую из старых хэшей crypt DES. Цель состоит в том, чтобы перенести эту базу данных в хэши md5 или sha. При смене пароля с помощью yppasswd
он генерируется с использованием того же алгоритма, что и для существующей записи (вероятно, по устаревшим причинам), т.е. crypt остается crypt, md5 остается md5.
Наш текущий план состоит в написании специального скрипта смены пароля, обернутого yppasswd. Есть ли более элегантный способ указать yppasswd по умолчанию генерировать измененные пароли в формате md5?
Ответ №1:
Я уже понял это:
- Загрузите 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.
Комментарии:
1.Это не совсем работает с yppasswd в yp-tools 2.12. Если вы пойдете этим путем, вам нужно будет установить
int hash_id = MD5;
в верхней частиmain
и закомментировать более позднюю строку, в которой говоритсяhash_id = get_hash_id (pwd->pw_passwd);
.
Ответ №2:
Последние дистрибутивы 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» и включите свой новый профиль.