我知道密码存储在/etc/shadow
然而,在登录过程中,我假设 Linux 将您的用户名和密码作为参数,使用相同的算法加密您的密码,并将其与存储在影子中的密码进行比较。
我的问题是,这个过程在哪里发生? (代码)我尝试搜索 PAM,但也找不到任何有用的东西。
答案1
答案2
我知道密码存储在 /etc/shadow 中
正如 Gilles 已经说过的,只有密码哈希值存储在 中/etc/shadow
,而且,这只是可能的位置之一,它们可能全局存储在ldap
服务器或NIS
表上。
然而,在登录过程中,我假设 Linux 将您的用户名和密码作为参数,使用相同的算法加密您的密码,并将其与存储在影子中的密码进行比较。
该过程比这灵活得多。根据PAM
配置,系统可能会按顺序检查多个模块,如果其中一个模块成功并被声明为足够,或者如果一个模块失败并被声明为必需,则系统将停止。模块能够与尝试登录的用户建立对话,因此提供的不一定是一对用户名/密码。例如,使用rlogin
( pam_rhosts_auth
) 时,无需提供任何密码即可授予用户访问权限。必须警告他密码即将过期、提示他更改过期密码以及类似的交互任务。
我的问题是,这个过程在哪里发生? (代码)我尝试搜索 PAM,但也找不到任何有用的东西。
Gilles 也已经回答了这个问题,pam_unix
正在处理/etc/passwd
et/etc/shadow
文件条目。