LINUX PAM验证机制
一.PAM简介 Linux-PAM(linux可插入认证模块)是一套共享库,使本地系统管理员可以随意选择程序的认证方式. 换句话说,不用(重新编写和)重新编译一个包含PAM功能的应用程序,就可以改变它使用的认证机制. 这种方式下,就算升级本地认证机制,也不用修改程序. PAM使用配置文件/etc/pam.conf(或/etc/pam.d/下的文件),来管理对程序的认证方式.应用程序调用相应的配置文件,从而调用本地的认证模块.模块放置在/lib/security下,以加载动态库的形式进行调用(dlopen(3)). 像我们使用su命令时,系统会提示你输入root用户的密码.这就是su命令通过调用PAM模块实现的. 二. PAM的配置文件介绍 1.PAM配置文件的格式 PAM配置文件有两种写法: 一种是写在/etc/pam.conf中.格式如下: ftpd auth required pam_unix.so nullok ftpd:表示服务名,即针对哪一个服务进行的认证配置. required:为模块类型.PAM有四中模块类型,分别代表不同的任务类型. pam_unix.so:为模块路径.即要调用模块的位置. nullok:为模块参数,即传递给模块的参数. 另一种写法是,将PAM配置文件放到/etc/pam.d/目录下,使用应用程序名作为配置文件名.如: vsftpd,login等.配置文件的格式与pam.conf类似,只是少了最左边的服务名列.如:/etc/pam.d/cups #%PAM-1.0 auth required pam_stack.so service=system-auth account required pam_stack.so service=system-auth 2.PAM的模块类型 Linux-PAM有四种模块类型,分别代表四种不同的任务.它们是:认证管理,账号管理,会话管理和密码管理.一个类型可能有多行,它们按顺序依次由PAM模块调用. auth 用来对用户的身份进行识别.如:提示用户输入密码,或判断用户是否为root等. account 对帐号的各项属性进行检查.如:是否允许登录,是否达到最大用户数,或是root用户是否允许在这个终端登录等. session 这个模块用来定义用户登录前的,及用户退出后所要进行的操作.如:登录连接信息,用户数据的打开与关闭,挂载文件系统等.
password 使用用户信息来更新.如:修改用户密码. 3.PAM的控制标记 PAM使用控制标记来处理和判断各个模块的返回值. required 这个标记表示需要模块返回一个成功值.如果返回失败,则继续进行同类型的下一个操作,当所有此类型的模块都执行完后.才返回失败值. requisite 与required相似,但是如果这个模块返回失败,则立刻向应用程序返回失败,表示此类型失败. 不再进行同类型后面的操作. sufficient 如果此模块返回成功,则直接向应用程序返回成功,表示此类型成功.不再进行同类型后面的操作.如果失败,也不会影响这个类型的返回值. optional 使用这个标记的模块,将不进行成功与否的返回.一般返回一个PAM_IGNORE(忽略). 4.模块路径 模块路径.即要调用模块的位置. 一般保存在/lib/security/下,如: pam_unix.so同一个模块,可以出现在不同的类型中.它在不同的类型中所执行的操作都不相同.这是每个模块针对不同的模块类型,编制了不同的执行函数. 5.模块参数 模块参数,即传递给模块的参数.参数可以有多个,之间用空格分隔开,如: password required pam_unix.so nullok obscure min=4 max=8 md5
三.编写PAM配置文件 1.PAM模块介绍 pam_unix.so模块: auth类型: 提示用户输入密码,并与/etc/shadow文件相比对.匹配返回0(PAM_SUCCESS). account类型: 检查用户的账号信息(包括是否过期等).帐号可用时,返回0. password类型: 修改用户的密码. 将 |
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |