想象一下由旧的密码DES哈希组成的NIS用户数据库/var/yp/input-files/passwd
。目的是将此数据库迁移到md5或sha哈希。使用yppasswd
更改密码时,使用与现有条目相同的算法生成密码(可能是出于遗留原因),即 crypt保留crypt,md5保留md5 。
我们目前的计划是编写一个包含yppasswd的特殊密码更改脚本。有没有更优雅的方法告诉yppasswd默认以md5格式生成更改的密码?
答案 0 :(得分:2)
我现在想通了:
apt-get source nis
。int has_md5_passwd = 0;
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服务器的哈希函数(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身份验证”配置文件并启用新的配置文件。