我必须调用什么 PAM 来重置用户密码?我想不通。
背景:
我正在开发嵌入式 Linux 设备。客户安装此设备,并创建用户帐户。如果其中一个二级用户帐户被锁定,或者如果用户忘记了密码,我们需要一种方法让用户 #1 可以为用户 #2 重置密码。我们向 PAM 的转换是新的,我现在正在切换到它。以下是我为验证用户身份所做的调用:
pam_start();
pam_authenticate();
pam_acct_mgmt();
pam_end();
我看到 pam_chauthtok()
用于更改我自己的密码,但我不明白是否 - 或者如何? -- 我可以使用它或另一个类似的调用来为另一个用户帐户分配一个新密码。
最佳答案
拥有独立用户的全部意义在于他们不能做诸如更改彼此密码之类的事情。为了使用 PAM 更改用户的密码,您需要成为该用户。最简单的方法是拥有一个 setuid-root 二进制文件,或者一个以 root 身份运行的守护进程,它调用 setuid
等成为所需的用户,然后执行更改密码的操作。
当然,这会使您的整个系统面临很大的风险,特别是如果您还不熟悉这些问题(从您的问题中可以清楚地看出),所以我会三思而后行是否需要此功能,如果是这样,您是否应该聘请专家来处理它。
关于c - PAM:如何更改别人的密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9303911/