LINUX PAM验证机制
用户输入的密码,作为用户的新密码更新shadow文件pam_cracklib.so模块:
password类型: 这个模块可以插入到一个程序的密码栈中,用于检查密码的强度. 这个模块的动作是提示用户输入密码,并与系统中的字典进行比对,检查其强度. pam_loginuid.so模块: session类型:用来设置已通过认证的进程的uid.以使程序通过正常的审核(audit). pam_securetty.so模块: auth类型: 如果用户要以root登录时,则登录的tty在在/etc/securetty中法之前.
pam_rootok.so模块: auth类型: pam_rootok模块用来认证用户id是否为0.为0返回”PAM_SUCCESS”. pam_console.so模块: session类型: 当用户登录到终端时,改变终端文件文件的权限.在用户登出后,再将它们修改回来. pam_permit.so模块: auth,account,password,session类型: pam_permit模块任何时候都返回成功. pam_env.so模块 : auth类型: pam_env允许设置环境变量.默认下,若没有指定文件,将依据/etc/security/pam_env.conf进行环境变量的设置. pam_xauth.so模块: session类型: pam_xauth用来在用户之间转发xauth-key. 如果不进行pam_xauth,当用户调用su成为另一个用户时,这个用户将不可以再访问原来用户的X显示,新用户没有访问显示的key.pam_xauth解决了当会话建立时,从原始用户到目标用户转发key和用户退出时销毁key的问题. 实验: 注销/etc/pam.d/su中的"session optional /lib/security/$ISA/pam_xauth.so"行在桌面终端执行su切换到另一个用户时,执行xterm会报错,提示无法访问DISPLAY. 删除注释后,再使用su切换到另一个用户时,执行xterm,会正常打开一个xterm终端窗口. pam_stack.so模块: auth,account,password,session: pam_stack可以调用另一个服务.也就是多个服务可以包含到一个设置中.当需要修改时,只修改一个文件就可以了. pam_warn.so模块: auth,account,password,session: pam_warn用来记录服务,终端,用户,远程用户和远程主机的信息到系统日志.模块总是返回PAM_IGNORE,意指不希望影响到认证处理. 2.编写PAM配置文件 以root身份执行: # vi /etc/pam.d/pamtest #提示用户输入密码 auth required pam_unix.so # 验证用户账号是否可用 account required pam_unix.so # 向系统日志输出一条信息 account required pam_warn.so
四.基于PAM机制的应用程序 1.编写C源码 #include <security/pam_appl.h> #include <security/pam_misc.h> #include <security/pam_modules.h> #include <stdio.h>
/* 文件pamtest.c 此程序从命令行接收一个用户名作为参数,然后对这个用户名进行auth和account验证. */ // 定义一个pam_conv结构,用于与pam通信 static struct pam_conv conv = { misc_conv, NULL }; // 主函数 int main(int argc, char *argv[]) { pam_handle_t *pamh=NULL; int retval; const char *user="nobody"; const char *s1=NULL; if(argc == 2) user = argv[1]; else exit(1); if(argc > 2) { fprintf(stderr, "Usage: pamtest0 [username]n"); exit(1); } printf("user: %sn",user); retval = 0; //调用pamtest配置文件 retval = pam_start("pamtest", user, &conv, &pamh); if (retval == PAM_SUCCESS) //进行auth类型认证 r |
||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |