从crypt到md5的NIS yppasswd哈希迁移

3
想象一下一个NIS用户数据库 /var/yp/input-files/passwd,由旧的crypt DES哈希组成。目标是将此数据库迁移到md5或sha哈希。使用yppasswd更改密码时,使用与现有条目相同的算法生成密码(可能是出于遗留原因),即crypt保持不变,md5保持md5
我们当前的计划是编写一个特殊的密码更改脚本来包装yppasswd。是否有一种更优雅的方法告诉yppasswd默认生成md5格式的更改密码?
2个回答

2
我现在已经想通了:
  1. 下载你的发行版的nis包,例如在Debian下使用apt-get source nis
  2. 编辑相应的yp-tools-2.9/src/yppasswd.c文件。
  3. int main (int argc, char **argv)的开头用int has_md5_passwd = 1;替换int has_md5_passwd = 0;

yppasswd现在总是创建md5哈希值。


这在 yp-tools 2.12 中与 yppasswd 并不完全兼容。如果您选择这种方法,则需要在 main 的顶部设置 int hash_id = MD5;,并注释掉后面的一行 hash_id = get_hash_id (pwd->pw_passwd); - asciiphil

1
最近的Linux发行版通过PAM支持NIS密码更新,这意味着您可以使用本地的passwd程序而不是yppasswd。这也意味着您可以配置哈希算法,而这在yppasswd中仍然不可能(截至yp-tools 2.12)。
您的系统应该有一个/etc/pam.d/passwd文件,其中将包含或更可能是引用另一个包含以下形式行的文件:
password  sufficient  pam_unix.so md5 nis

第二个字段可能会有所不同,而且末尾可能会有其他参数,但是您需要加载 pam_unix.sopassword 行,它应该至少具有适合您的 NIS 服务器的哈希函数(md5sha256 等)和 nis 参数。
但是,您的发行版可能有更好的配置方式,因此请确保您的更改不会在以后的自动化过程中被覆盖。
在 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身份验证”配置文件并启用您的新配置文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接