小编Zim*_*lim的帖子

通过 Linux PAM 更改密码,无需以 root 身份运行应用程序

我正在编写的应用程序将具有一些密码更改功能。但是我想知道是否可以不以 root 身份运行帐户管理部分。

现在我遇到了一个问题,如果我以我试图管理的用户身份运行,我将无法更改密码。我通过首先使用给定的密码进行身份验证来验证密码是否正确。(单独调用身份验证模块的另一部分。)只有当我调用chauthtok为用户更改它时pamtest,它才会导致对话函数的调试输出:

START PAM CHANGE PASSWORD
PAM_CONV start [('Changing password for pamtest.', 4)]
PAM_CONV iter: Changing password for pamtest. 4
PAM_CONV end: [('', 0)]
PAM_CONV start [('(current) UNIX password: ', 1)]
PAM_CONV iter: (current) UNIX password:  1
PAM_CONV end: [(u'5ACN5pbmDFBVMHp', 0)]
PAM_CONV start [('Enter new UNIX password: ', 1)]
PAM_CONV iter: Enter new UNIX password:  1
PAM_CONV end: [(u'pdJb7ffsQTHWw4V', 0)]
PAM_CONV start [('Retype new UNIX password: ', 1)]
PAM_CONV iter: Retype new UNIX password: …
Run Code Online (Sandbox Code Playgroud)

pam shadow non-root-user

5
推荐指数
1
解决办法
6523
查看次数

如何使用 PAM 验证用户,即不是启动应用程序的用户

我目前正在为应用程序开发身份验证模块。决定通过使用 PAM 来做到这一点。我已经完成了这项工作,但它只能验证启动应用程序的用户。

这意味着,如果我以用户“appname”的身份启动应用程序,则身份验证只会告诉我,如果用户是“appname”而不是“some_user”则成功

如果我 su 到那个“some_user”并在那个终端中启动应用程序,那么我可以验证“some_user”而不是“appname”

我在 common-auth 中打开了 pam_unix 的调试标志。拒绝时产生以下输出:

unix_chkpwd[4107]: check pass; user unknown
unix_chkpwd[4107]: password check failed for user (pamtest)
[app]: pam_unix(other:auth): authentication failure; logname=[appname] uid=1000 euid=1000 tty= ruser=[appname] rhost=  user=pamtest
Run Code Online (Sandbox Code Playgroud)

authentication pam

3
推荐指数
1
解决办法
2万
查看次数

标签 统计

pam ×2

authentication ×1

non-root-user ×1

shadow ×1