我正在开发一个项目,需要根据历史密码检查用户密码的唯一性,并将旧密码添加到历史密码列表中。为了实现这一点,我想用pam_pwhistory模块读取和写入opasswd文件。我根本不想更新用户的密码,只是为了检查它是否是唯一的,并将他们现有的密码写入opasswd文件。刚刚提示用户输入密码,我可以访问新密码,因此我不想再次提示用户。
据我所知,有两种方法可以做到这一点:
- 使用pam函数(pam_start,pam_chauthtok,pam_end),并解释提示'(当前)UNIX密码:','新密码:'和'重新输入新密码:'。仅在此链接的PAM链中包含pam_pwhistory.so。这种感觉非常难看,因为这些提示显然是互动的,并且可以在将来重新命名。我还想避免在必要时维护额外的PAM配置文件。
- 使用pamc直接与pam_pwhistory模块通信。我对这种方法没有太多运气,似乎没有很好的记录。我应该使用这个API吗?
- 有第三种选择吗?你会怎么做?
醇>
非常感谢您的帮助!