首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单的PAM示例

简单的PAM示例
EN

Stack Overflow用户
提问于 2011-05-24 12:56:12
回答 1查看 14.5K关注 0票数 4

我想使用PAM开发一个身份验证模块,但我在运行一个简单的示例时遇到了问题。

对于初学者,我想做一个简单的SSH登录系统,如果用户输入用户名backdoor,那么用户将在没有密码的情况下登录(就像在TRON Legacy中一样)。

我试着使用this guide作为模板,但是我不能让它工作。到目前为止,我的代码如下:

代码语言:javascript
复制
PAM_EXTERN int pam_sm_setcred( pam_handle_t *pamh, int flags, int argc, const char **argv ) {
    return PAM_SUCCESS ;
}

PAM_EXTERN int pam_sm_authenticate( pam_handle_t *pamh, int flags,int argc, const char **argv ) {
    int retval;

    printf("I'm here");

    const char* pUsername;
    retval = pam_get_user(pamh, &pUsername, "Username: ");
    if (retval != PAM_SUCCESS) {
        return retval;
    }

    if (strcmp(pUsername, "backdoor") != 0) {
        return PAM_AUTH_ERR;
    }
    return PAM_SUCCESS;
}

当我使用backdoor登录时,权限被拒绝。我已尝试创建用户帐户,但仍提示输入密码。

当我使用有效用户登录时,我看到"I'm here“打印输出。有没有更好的方法来调试这样的东西,或者主要是试错?

编辑:

我在@include common-auth之后将其添加到我的/etc/pam.d/sshd

auth sufficient mypam.so

这是在另外两个.so文件之后出现的,但我非常确定它每次都会被执行。

我没有修改pam.conf (那里没有任何东西)。我认为从SSH开始将是最简单的,因为我不必每次都注销。

编辑:

我终于把它修好了。结果如下:

https://github.com/beatgammit/simple-pam

它是开源的,所以如果你感兴趣,请看一看!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-25 01:10:30

首先,如果前一个所需的模块发生故障,则仍然会失败。因为您说您已经在common-auth的include下面放了足够的行,所以您可能会看到一个失败,因为common-auth中的某些必需模块已经拒绝了访问。另外,你已经有了sshd的阻碍。

我会把所有这些东西都去掉,这样你就知道你的测试实际上是对你的pam模块的测试,而不是与其他东西的进一步交互。我将从一个简单的测试程序开始,比如使用/etc/pam.d/ here用户列出您的模块,而不是pam_unix。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6105836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档