我想知道密码策略“您的新密码必须至少有n个字符与旧密码不同”是如何工作的。
我的理解是,操作系统从来不实际存储旧密码本身,而是它们的哈希代码。如果只有两个字符串的哈希码,就无法知道这两个字符串有多少不同。
我猜对了吗,只有当passwd程序显式地同时询问您的旧密码时,它才能工作吗?
如果根用户更改了其他人的密码,那么“不同字符的数量”策略就不能在这里应用了吗?
发布于 2017-10-20 13:54:27
这些策略通常是通过在询问旧密码时应用它们来实现的。
另一种选择是用暴力强迫旧的。当你输入你的新的,现代计算机没有问题,暴力所有的密码,这两个字符与新的不同。据我所知,这并不用于典型linux发行版中的常规身份验证,但可能有一些PAM模块实现了这一点。
改变密码的通常方法是假设超级用户知道他在做什么。passwd程序不要求使用旧密码,并且允许您根据自己的风险重写规则,比如最小长度。
发布于 2017-10-20 09:44:31
你是对的。如果密码是以散列形式存储的,操作系统绝对不可能知道新密码与旧密码有何不同。
策略检查是从工具中完成的,它可以工作,因为该工具还要求您提供旧密码,然后根据一组策略规则检查差异。
发布于 2017-10-20 13:47:54
如果根用户更改了其他人的密码,那么“不同字符的数量”策略就不能在这里应用了吗?
管理用户通常可以直接操作密码数据库,因此该用户可以有效地忽略所有密码策略。
例如,root可以提供将逐字设置的散列密码(使用usermod -p),或者编辑/etc/shadow并在那里设置散列密码。
这也是为什么管理用户应该保持更高的标准,并在为用户分配密码时训练自己使用密码生成器的另一个原因。
https://serverfault.com/questions/879410
复制相似问题