2011-05-26 39 views
3

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

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

回答

2

我想通了现在:

  1. 下载分发的NIS-例如包Debian下的apt-get source nis
  2. 编辑相应的YP-工具-2.9/src目录/ yppasswd.c
  3. 通过int has_md5_passwd = 1;int main (int argc, char **argv)

yppasswd年初更换int has_md5_passwd = 0;则始终创建MD5哈希值。

+0

这并不完全适用于yp-tools 2.12中的yppasswd。如果你走这条路线,你需要在'main'的顶部设置'int hash_id = MD5;'并注释掉'hash_id = get_hash_id(pwd-> pw_passwd);'后面的行。 – asciiphil 2013-01-25 20:35:30

1

最近的Linux发行版通过PAM支持NIS密码更新,这意味着您可以使用本地passwd程序而不是yppasswd。这也意味着您可以配置散列算法,该算法仍然(如yp-tools 2.12)不可能与yppasswd一起使用。

您的系统应该有一个/etc/pam.d/passwd文件,要么含有,或者更可能的是,指的是包含一行形式的另一个文件:

password sufficient pam_unix.so md5 nis 

第二场可能会有所不同,而有可能是其他参数在最后,但你要加载的password线pam_unix.so,它应该至少具有nis参数以及适用于您的NIS服务器(md5sha256等)

您的分布可能哈希函数HAV尽管如此,更好的配置方式是确保您的更改不会被稍后的自动化过程覆盖。

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