从密码到md5的NIS yppasswd哈希的迁移

时间:2011-05-26 09:56:33

标签: linux migration md5 passwd nis

想象一下由旧的密码DES哈希组成的NIS用户数据库/var/yp/input-files/passwd。目的是将此数据库迁移到md5或sha哈希。使用yppasswd更改密码时,使用与现有条目相同的算法生成密码(可能是出于遗留原因),即 crypt保留crypt,md5保留md5

我们目前的计划是编写一个包含yppasswd的特殊密码更改脚本。有没有更优雅的方法告诉yppasswd默认以md5格式生成更改的密码?

2 个答案:

答案 0 :(得分:2)

我现在想通了:

  1. 下载您发布的nis-package,例如Debian下的apt-get source nis
  2. 编辑相应的yp-tools-2.9 / src / yppasswd.c
  3. int has_md5_passwd = 0;
  4. 的开头,将int has_md5_passwd = 1;替换为int main (int argc, char **argv) 然后

    yppasswd总是创建md5哈希值。

答案 1 :(得分:1)

最近的Linux发行版通过PAM支持NIS密码更新,这意味着您可以使用本地passwd程序而不是yppasswd。这也意味着您可以配置哈希算法,该算法仍然是yppasswd无法实现的(从yp-tools 2.12开始)。

您的系统应该有一个/etc/pam.d/passwd文件,该文件将包含或更可能引用包含该行格式的另一个文件:

password  sufficient  pam_unix.so md5 nis

第二个字段可能有所不同,最后可能还有其他参数,但您希望password行加载pam_unix.so并且至少应该包含nis参数以及适合您的NIS服务器的哈希函数(md5sha256等)。

但是,您的发行版可能有更好的配置方式,因此请确保稍后自动化过程不会覆盖您的更改。

在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身份验证”配置文件并启用新的配置文件。