3

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

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

4

2 回答 2

2

我现在想通了:

  1. 下载您的发行版的 nis 包,例如apt-get source nis在 Debian 下。
  2. 编辑对应的yp-tools-2.9/src/yppasswd.c
  3. 在开头替换int has_md5_passwd = 0;int has_md5_passwd = 1;int main (int argc, char **argv)

yppasswd 然后总是创建 md5 哈希。

于 2011-05-30T16:08:06.327 回答
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 服务器的参数以及散列函数(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 身份验证”配置文件并启用您的新配置文件。

于 2013-01-25T20:31:25.627 回答