c - PAM:如何更改别人的密码?

标签 c linux authentication pam change-password

我必须调用什么 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/

相关文章:

c - 什么是嵌入式系统的定时器的良好实现?

c++ - 在 C/C++ 中从 double 到 int64_t 的隐式转换是什么

c - OS X 上的 Pthread 和 gcc 编译问题

带有 shell 命令和变量的 c makefile

node.js - 如何在 Passport google auth 回调函数中获取用户个人资料数据?

linux - 普通用户chown(只换组)

asp.net - 如何在linux上启动asp.net core服务器并保持运行

linux - 等待一个可读的文件描述符和一个可写的文件描述符

angularjs - Node.js 和 AngularJS 实现身份验证和授权机制的最快、最简单的方法

jquery ajax 调用 asp.net mvc 应用程序获得两个未经授权的响应,然后确定