Linux PAM开发示例一:让自己的程序使用PAM认证方式

本文不对PAM模块机制做深入讲解,网上一堆文章已经把这个事儿做了,这里仅仅是PAM的实现示例以记录自己的学习过程和成果。

本文仅仅实现一个PAM示例,即一个用户程序通过PAM机制进行密码认证,编写一个用户程序,编写一个pam模块动态库即可完成这个功能。

一。PAM介绍

Linux-PAM(即linux可插入认证模块)是一套共享库,使本地系统管理员可以随意选择程序的认证方式。换句话说,不用(重新编写)重新编译一个包含PAM功能的应用程序,就可以改变它使用的认证机制,这种方式下,就算升级本地认证机制,也不用修改程序。

PAM使用配置/etc/pam.d/下的文件,来管理对程序的认证方式.应用程序 调用相应的配置文件,从而调用本地的认证模块.模块放置在/lib/security下,以加载动态库的形式加载到内存,系统程序sudo,su,login等都是通过调用PAM模块实现的口令验证。

二。PAM组成

PAM是一种系统安全认证机制:

1.PAM API,即PAM库提供的API函数,用户程序使用这些api完成口令认证。

2.PAM SPI,即PAM的接口函数,这些函数由用户在PAM 模块动态库中实现,完成认证,账户管理,密码管理,会话管理等功能,被PAM API通过dlopen方式调用。

3.应用程序,即使用PAM模块进行口令认证的用户程序,例如:su,login,sudo等,应用程序调用PAM API完成口令等相关认证功能。

4.配置文件,/etc/pam.conf这个文件一般不使用了,因为使用的是/etc/pam.d/*的配置文件,每个文件表示一个用户程序的pam认证配置文件,决定使用哪个模块动态库进行认证,用户程序调用PAM API时,PAM API会查找/etc/pam.d/目录下的配置文件以加pam模块载动态库。

如su程序使用的pam配置文件/etc/pam.d/su的配置如下:

#
# The PAM configuration file for the Shadow `su' service
#

# This allows root to su without passwords (normal operation)
auth       sufficient  pam_rootok.so

简单解释:su 切换root用户时执行pam_rootok.so的验证,效果是从su切换到普通用户时不用输入密码,但是从普通用户su到root时则需要密码,这就是pam_rootok.so的作用。

该目录下配置文件名称要与自己编写的PAM模块的服务名称一致,即要与用户程序里pam_start函数的第一个参数一致。

5. PAM模块动态库

/lib/x86_64-linux-gnu/security/

自己编写的PAM动态库也放到这个目录下。

三。编写示例

1.ubuntu16.04安装pam库

sudo apt install libpam0g-dev 

2.编写pam模块动态库

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

种菜的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值