使用 PAM 的硬编码密码

使用 PAM 的硬编码密码

我有一个应用程序,使用 PAM 作为身份验证源,提示输入登录用户的密码。该应用程序的当前 PAM 配置如下:

@include common-auth
@include common-account

我希望此应用程序使用我定义并硬编码的自定义密码,而不是登录用户的密码。我该如何实现?

答案1

不要导入系统的身份验证机制,而是配置pam_userdb或者自己编写一个简单的自定义 PAM 模块。将其作为堆栈中唯一的模块加载:

auth requisite pam_userdb.so db=/etc/security/myapp.passwd.db

@include common-account

答案2

一个(可能稍微简单一点的)替代方法是使用pam_pwd文件. 它本质上允许针对用户指定的文件进行身份验证,格式类似于默认/etc/passwd文件。

pam_pwdfile 似乎尚未开发,但它可能已经可以工作,不需要新功能。Debian 档案中也有它,这为其提供了安全支持(如果需要的话)。

要使用它,请安装它(例如libpam-pwdfile在 Debian 上)并在你的 pam 配置中添加如下一行:

auth        required    pam_pwdfile.so pwdfile=/path/to/passwd_file

查看自述了解详情。

/path/to/passwd文件应包含用户名和哈希密码列表,以冒号分隔,每行一个用户。哈希密码可以从您的/etc/shadow文件中获取,也可以使用mkpasswd或生成openssl。例如,要获取 SHA-512 哈希密码,请使用以下任一命令:

$ mkpasswd -m SHA-512
$ openssl passwd -6

示例passwd文件如下所示。这显示了 SHA-512 和解密散列密码:

  user1:$6$usgsi1RNu7wI$4rly97OA5ot5nsVSusW1jmwdjpHY7qbzGOX.E/TPfJqDuFnmMoCGVd1p1U/ew7e599QQLPnfkW0yLyuyaoAPl0
user2:NxR.0DdgI2Jnc

类似的替代 pam-module 是pam_fshadow,但这个模块似乎没有被 Debian 打包,所以我没有进一步调查它。

相关内容