PAM编程

本文介绍了Linux中PAM(Pluggable Authentication Modules)编程的相关内容,包括pam_conv函数的作用和内存管理,main函数的调用规则,PAM模块函数的使用,以及PAM配置文件的设置。在PAM模块函数中,当pam_authenticate被调用时,会查找对应的配置文件并执行相应的模块函数。这些函数通常编译为.so文件,存放在/lib/security目录下。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pam编程:
        1 头文件:
        #include <security/pam_misc.h>        //提供 misc_conv支持, 编译的时候,要加 -lpam_misc
        #include <security/pam_appl.h>        //用于 客户端程序

        #include <security/pam_modules.h>
        #include <security/pam_ext.h>        // 这两个是编写 pam_modules时用到的.

        2. 概念:
        pam: PAM(Pluggable Authentication Modules),可插拔认证模块.
        优点:可以任意配置认证方式.比如,用户程序使用的是linux自己的认证方式,对应的模块是pam_unix.so.当想使用apm_ldap.so时,只要在该应用程序使用的配置文件中,使用的模块改为pam_ldap.so就行了.配置文件那块,有很复杂的配置方法.可以实现,多种认证互相结合的方式.
        只是用户是否合法性的认证,无用户对应权限的分发.比如,用户a,是不是合法用户可以知道,但用户a是否可以访问某个目录,则无法知道.

        3.流程
        
        应用程序 --> 调用pam_**()函数(e.g. pam_authenticate)--> 配置文件(/etc/pam.d/下) ->配置文件中对应pam_**.so -> 调用模块中pam_sm_***()函数
        使用pam的应用程序,会调用pam_authenticate等等的函数,然后,pam机制会找到对应的配置文件,从这些配置文件中,找到所调用的模块.然后,pam机制会调用对应模块的pam_sm_authenticate()函数.实现用户与模块间的数据交互.
        其中,关于应用程序与模块的数据交流,是通过pam_conv()来实现,它是个回调函数,该函数由用户端来定义并实现.
        例如:应用程序的用户与密码信息,会在应用程序所定义的pam_conv函数中所给出,当模块需要用户名与密码信息时,会主动调用该回调函数,通过该回调函数,取得用户与密码信息.然后,完成对应的用户与密码的验证工作.
        

        4. 函数:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值