快速业务通道

LINUX PAM验证机制

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-20
用户输入的密码,作为用户的新密码更新shadow文件pam_cracklib.so模块:

  password类型: 这个模块可以插入到一个程序的密码栈中,用于检查密码的强度.

  这个模块的动作是提示用户输入密码,并与系统中的字典进行比对,检查其强度.

  pam_loginuid.so模块:

  session类型:用来设置已通过认证的进程的uid.以使程序通过正常的审核(audit).

  pam_securetty.so模块:

  auth类型: 如果用户要以root登录时,则登录的tty在在/etc/securetty中法之前.

Empire CMS,phome.net

  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>

Empire CMS,phome.net

  /* 文件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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号