PAM为Linux的安全认证模块,其详细介绍、工作原理及认证方法可参考网址:
https://blog.csdn.net/yuanlaijike/article/details/78726606, 本文主要介绍PAM的移植以及移植以后的环境配置。本次移植的硬件环境为ARM -a8平台,编译器为armv7-linux-gcc ,PAM源码下载地址为:
https://github.com/linux-pam/linux-pam/releases,本文采用的版本是1.3.1。此外,PAM模块还需要libcrack.so库和crackelib-dict字典的支持,该库也需要从网上下载,本文采用的crack库 版本为2.9.2。在源码准备好以后就可以进行交叉编译。
1、编译crack库:
1)解压源码,进入crack源码目录,配置编译环境:./configure --host=armv7-linux --prefix=xxx ,xxx表示安装绝对路径;
2) make
3) make install
4)在xxx安装路径下会生成相关文件,将libcrack.so库文件(注意:该库至关重要,若没有该库文件,PAM则不会生成pam_cracklib.so文件,该文件用于口令功能)拷贝至编译器系统库,将include下的文件拷贝至编译器系统include目录
2、编译PAM 模块
1)解压源码,进入PAM源码目录,配置编译环境:./configure --host=armv7-linux --prefix=xxx ,xxx表示安装绝对路径;
2) make ,在编译时若出现有几处未定义函数,可将其屏蔽,不会对PAM 功能造成太大影响
3) make install
4)在xxx安装路径下会有几个文件,将lib目录下的libpam.so和libpam_misc.so库文件拷贝至编译器系统库,将include目录下 的文件拷贝至编译器include目录下
至此,可以在虚拟机上进行代码的编译,编译方法为
armv7-linux-gcc pam_test.c -lpam -lpam_misc -ldl
-ldl 显式加载动态库的动态函数库
3、移植
1) 将crack 源码编译出来的crack.so文件拷贝至目标机/lib目录
2) 进入PAM安装目录,将lib下的libpam.so和libpam_misc.so库文件拷贝至目标机/lib目录,将 lib下的security目录拷贝至目标机/lib, 将etc目录下的pam.d目录和security目录拷贝至目标机/etc目录
3)解压字典文件cracklib_dict.zip,在目标机/usr目录下 mkdir dict ,将解压出来的字典文件pw_dict.* 拷贝至目标机/usr/dict 目录
至此,移植工作已经完成,接下来就可根据需要配置文件,实现想要的功能。
4、配置文件
配置文件放置在/etc/pam.d目录下,每个文件即代表一个服务类型,配置文件格式为:
工作类别 控制模式 模块路径(默认路径为 /lib/security) 模块参数
详情可参考
http://blog.51cto.com/7424593/1924260