PAM验证C中的用户

太阳能1

好的,所以我是一个非常糟糕的编码人员,我想知道(如标题所示)如何使用C使用PAM对Linux用户进行身份验证。我真正了解的唯一一件事就是包括所需的pam_appl.hpam_misc.h头文件。到地方pam_startpam_end在我的代码的某个地方,并没有多少人。那么我将如何实现所需的呢?

埃德温·巴克

您需要使用该pam_authenticate功能。

使用PAM所需的答案要比平均StackOverflow答案要长一些。但是,幸运的是,有一本关于该主题的完整在线书籍。http://www.linux-pam.org/Linux-PAM-html/Linux-PAM_ADG.html

如果您只想获取一个代码段,则可以从此代码段开始

#include <security/pam_appl.h>
#include <security/pam_misc.h>
#include <stdio.h>

static struct pam_conv conv = {
    misc_conv,
    NULL
};

int main(int argc, char *argv[])
{
    pam_handle_t *pamh=NULL;
    int retval;
    const char *user="nobody";

    if(argc == 2) {
        user = argv[1];
    }

    if(argc > 2) {
        fprintf(stderr, "Usage: check_user [username]\n");
        exit(1);
    }

    retval = pam_start("check_user", user, &conv, &pamh);

    if (retval == PAM_SUCCESS)
        retval = pam_authenticate(pamh, 0);    /* is user really user? */

    if (retval == PAM_SUCCESS)
        retval = pam_acct_mgmt(pamh, 0);       /* permitted access? */

    /* This is where we have been authorized or not. */

    if (retval == PAM_SUCCESS) {
        fprintf(stdout, "Authenticated\n");
    } else {
        fprintf(stdout, "Not Authenticated\n");
    }

    if (pam_end(pamh,retval) != PAM_SUCCESS) {     /* close Linux-PAM */
        pamh = NULL;
        fprintf(stderr, "check_user: failed to release authenticator\n");
        exit(1);
    }

    return ( retval == PAM_SUCCESS ? 0:1 );       /* indicate success */
}

它将与正确的PAM设置一起使用,包括

  You need to add the following (or equivalent) to the
  /etc/pam.d/check_user file:
  # check authorization
  auth       required     pam_unix.so
  account    required     pam_unix.so
 */

如上述书籍中所述。可以在http://www.linux-pam.org/Linux-PAM-html/adg-example.html找到此代码段的原始源

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在PAM会话/ PAM会话中对用户进行外部身份验证

来自分类Dev

PAM是用户身份验证方法吗?

来自分类Dev

如何在pam策略中为不同的用户或组设置不同的身份验证要求?

来自分类Dev

如何在 pam 策略中为不同的用户或组设置不同的身份验证要求?

来自分类Dev

在Linux PAM模块中检索用户命令

来自分类Dev

psql:严重:用户的PAM身份验证失败

来自分类Dev

在Python / C中验证Windows Server用户

来自分类Dev

持久化多因素用户数据以在CentOS 7中进行自定义pam身份验证

来自分类Dev

在SimpleMembership中验证用户

来自分类Dev

SSRS中的用户验证

来自分类Dev

在PAM中设置用户特定的密码哈希回合

来自分类Dev

PAM如何检查非特权进程中的用户密码?

来自分类Dev

验证C#中的远程Active Directory用户

来自分类Dev

在没有PAM的情况下验证用户身份的正确方法是什么?

来自分类Dev

pam_ldap在验证用户身份时不尝试简单绑定

来自分类Dev

验证QTableView中的用户输入

来自分类Dev

验证流星中的用户密码

来自分类Dev

无法在laravel中验证用户

来自分类Dev

无法在Django中验证用户

来自分类Dev

在python中验证restframework用户

来自分类Dev

C:用户输入验证函数

来自分类Dev

在AD B2C中更改用户密码后如何验证用户ID令牌

来自分类Dev

如何在C程序中通过PAM查询sssd?

来自分类Dev

使用公钥和PAM的SSH中的2因子身份验证

来自分类Dev

使用公钥和PAM的SSH中的2因子身份验证

来自分类Dev

如何停止特定用户在auth.log中的sudo PAM消息?

来自分类Dev

如何停止特定用户在auth.log中的sudo PAM消息?

来自分类Dev

C中的套接字FTP:身份验证获得530“请以用户身份登录并通过”,匿名

来自分类Dev

如何在C#中验证Windows应用程序的咸密码和用户名?

Related 相关文章

  1. 1

    在PAM会话/ PAM会话中对用户进行外部身份验证

  2. 2

    PAM是用户身份验证方法吗?

  3. 3

    如何在pam策略中为不同的用户或组设置不同的身份验证要求?

  4. 4

    如何在 pam 策略中为不同的用户或组设置不同的身份验证要求?

  5. 5

    在Linux PAM模块中检索用户命令

  6. 6

    psql:严重:用户的PAM身份验证失败

  7. 7

    在Python / C中验证Windows Server用户

  8. 8

    持久化多因素用户数据以在CentOS 7中进行自定义pam身份验证

  9. 9

    在SimpleMembership中验证用户

  10. 10

    SSRS中的用户验证

  11. 11

    在PAM中设置用户特定的密码哈希回合

  12. 12

    PAM如何检查非特权进程中的用户密码?

  13. 13

    验证C#中的远程Active Directory用户

  14. 14

    在没有PAM的情况下验证用户身份的正确方法是什么?

  15. 15

    pam_ldap在验证用户身份时不尝试简单绑定

  16. 16

    验证QTableView中的用户输入

  17. 17

    验证流星中的用户密码

  18. 18

    无法在laravel中验证用户

  19. 19

    无法在Django中验证用户

  20. 20

    在python中验证restframework用户

  21. 21

    C:用户输入验证函数

  22. 22

    在AD B2C中更改用户密码后如何验证用户ID令牌

  23. 23

    如何在C程序中通过PAM查询sssd?

  24. 24

    使用公钥和PAM的SSH中的2因子身份验证

  25. 25

    使用公钥和PAM的SSH中的2因子身份验证

  26. 26

    如何停止特定用户在auth.log中的sudo PAM消息?

  27. 27

    如何停止特定用户在auth.log中的sudo PAM消息?

  28. 28

    C中的套接字FTP:身份验证获得530“请以用户身份登录并通过”,匿名

  29. 29

    如何在C#中验证Windows应用程序的咸密码和用户名?

热门标签

归档