NIS yppasswd 哈希值从 crypt 迁移到 md5

发布于 2024-11-09 23:42:58 字数 263 浏览 4 评论 0原文

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

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

Imagine a NIS user database /var/yp/input-files/passwd consisting of old crypt DES hashes. The aim is to migrate this database to md5 or sha hashes. When changing a password using yppasswd, it is generated using the same algorithm as for the existing entry (probably for legacy reasons), i.e. crypt stays crypt, md5 stays md5.

Our current plan is to write a special password change script wrapping yppasswd. Is there a more elegant way to tell yppasswd to generate changed passwords in md5 format by default?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

北渚 2024-11-16 23:42:58

我现在已经弄清楚了:

  1. 下载您的发行版的nis-package,例如Debian下的apt-get source nis
  2. 编辑相应的 yp-tools-2.9/src/yppasswd.c
  3. int main (int argc, char **argv)

yppasswd 然后总是创建 md5 哈希值。

I figured it out by now:

  1. Download the nis-package of your distribution e.g. apt-get source nis under Debian.
  2. Edit corresponding yp-tools-2.9/src/yppasswd.c
  3. Replace int has_md5_passwd = 0; by int has_md5_passwd = 1; in the beginning of int main (int argc, char **argv)

yppasswd then always creates md5 hashes.

鸠书 2024-11-16 23:42:58

最近的 Linux 发行版支持通过 PAM 更新 NIS 密码,这意味着您可以使用本地 passwd 程序而不是 yppasswd。这也意味着您可以配置哈希算法,而使用 yppasswd 仍然无法配置哈希算法(从 yp-tools 2.12 开始)。

您的系统应该有一个 /etc/pam.d/passwd 文件,该文件将包含或更可能引用另一个包含以下形式的行的文件:

password  sufficient  pam_unix.so md5 nis

第二个字段可能不同,并且最后可能还有其他参数,但您需要加载 pam_unix.sopassword 行,并且它至少应该具有 nis 参数以及适合您的 NIS 服务器的散列​​函数(md5sha256 等)。

但是,您的发行版可能有更好的配置方法,因此请确保您的更改不会被以后的自动化过程覆盖。

在 RedHat 衍生系统(至少包括 RHEL、CentOS、Scientific Linux 和 Fedora)上,您需要使用至少带有 --enablenis 参数的 authconfig 程序。对于上述使用 MD5 哈希值的场景,以下命令行就足够了:

authconfig --enablenis --usemd5 --update

在 Debian 系统(可能还有 Debian 衍生版本,但我目前无法检查)上,执行此操作的正确方法似乎是复制 /usr/share/pam-configs/unix 到其他内容(例如,/usr/share/pam-configs/nis),编辑新文件以为其提供适当的设置和新的配置文件名称,然后运行 ​​pam-auth-update,禁用“Unix 身份验证”配置文件并启用新的配置文件。

Recent Linux distributions support NIS password updates through PAM, which means you can use the local passwd program instead of yppasswd. This also means that you can configure the hash algorithm, which is still (as of yp-tools 2.12) not possible with yppasswd.

Your system should have an /etc/pam.d/passwd file, which will either contain or, more likely, refer to another file that contains a line of the form:

password  sufficient  pam_unix.so md5 nis

The second field might differ, and there might be other parameters at the end, but you want the password line that loads pam_unix.so and it should have at least the nis parameter as well as a hash function appropriate to your NIS server (md5, sha256, etc.)

Your distribution might have a better way of configuring this, though, so make sure your changes aren't going to be overwritten by an automated process later.

On RedHat-derived systems (including at least RHEL, CentOS, Scientific Linux, and Fedora), you need to use the authconfig program with at least the --enablenis parameter. For the above scenario with MD5 hashes, the following command line would be sufficient:

authconfig --enablenis --usemd5 --update

On Debian systems (and possibly Debian derivatives, but I can't check at the moment), the proper way to do this appears to be to copy /usr/share/pam-configs/unix to something else (say, /usr/share/pam-configs/nis), edit the new file to give it appropriate settings and a new profile name, then run pam-auth-update, disable the "Unix authentication" profile and enable your new profile.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文