/var/yp/input-files/passwd
想象一个由旧的 crypt DES 散列组成的NIS 用户数据库。目的是将此数据库迁移到 md5 或 sha 哈希。使用 更改密码时yppasswd
,它使用与现有条目相同的算法生成(可能出于遗留原因),即crypt 保持 crypt, md5 保持 md5。
我们目前的计划是编写一个包装 yppasswd 的特殊密码更改脚本。有没有更优雅的方法告诉 yppasswd 默认以 md5 格式生成更改的密码?
我现在想通了:
apt-get source nis
在 Debian 下。int has_md5_passwd = 0;
为int has_md5_passwd = 1;
int main (int argc, char **argv)
yppasswd 然后总是创建 md5 哈希。
最近的 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 身份验证”配置文件并启用您的新配置文件。