Chinaunix首页 | 论坛 | 博客
  • 博客访问: 432966
  • 博文数量: 136
  • 博客积分: 5351
  • 博客等级: 少校
  • 技术积分: 1446
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-29 15:46
文章存档

2013年(2)

2012年(18)

2011年(116)

分类: LINUX

2011-05-26 11:33:25

1.PAM(Pluggable Authentication Modules )是由Sun提出的一种认证机制。它通过提供一些
   动态链接库和 一套统一的API,将系统提供的服务 和该服务的认证方式分开,使得系统管理 员可以
   灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系 统中添加
新的认证手段.PAM最初是集成在Solaris中目前已移植 到  其它系统中,如Linux、SunOS、HP-UX 9.0等。

2.PAM的文件: 
 /usr/lib/libpam.so.* PAM核心库 
 /etc/pam.conf或者/etc/pam.d/ PAM配置文件    rhel6中是/etc/pam.d  
   /usr/lib/security/pam_*.so 可动态加载的PAM service module  
   对于RedHat,其目录不是/usr/lib,而是/lib。
 
rhel6   /etc/    目录下  只含有PAM 一个目录/etc/pam.d    和一个文件/etc/pam_ldap.conf
 
3.PAM的配置:
 PAM的配置是通过单个配置文件/etc/pam.conf。RedHat还支持另外一种配置方式,即通过配置
   目录/etc/pam.d/,且这种的优先级要高于单 个配置文件的方式。  
 1、使用配置文件/etc/pam.conf     rhel6中/etc/pam_ldap.conf   已替换 /etc/pam.conf
    该文件是由如下的行所组成的:
service-name :
                  service-name 服务的名字,比如telnet、login、ftp等,服务名字“OTHER”代表
                  所有没有在该文件中明 确配置的其它服务。 
module-type  :
                  module-type 模块类型有四种:auth、account、session、password,即对应
                  PAM所支持的四种管理方式。同一个服务可以调用多个 PAM模块进行认证,这些模块构成一个stack。
control-flag :
                 control-flag 用来告诉PAM库该如何处理与该服务相关的PAM模块的成功或失败情况。
                 它有四种可能的 值:
              required: 表示本模块必须返回成功才能通过认证,但是如果该模块返回失败的话,失败结果也
                     不会立即通知用户,而是要等到同一stack 中的所有模块全部执行完毕再将失败结果返回给应
                      用程序。可以认为是一个必要条件。
              requisite: requisite 与required类似,该模块必须返回成功才能通过认证,但是一旦该模块返
                       回失败,将不再 执行同一stack内的任何模块,而是直 接将控制权返回给应用程序。是一个
                       必要条件。注:这种只有RedHat支持,Solaris不支持。 
              sufficient:sufficient 表明本模块返回成功已经足以通过身份认证的要求,不必再执行同一stack
                        内的其它模块, 但是如果本模块返回失败的话可以 忽略。可以认为是一个充分条件。
              optional: optional表明本模块是可选的,它的成功与否一般不会对身份认证起关键作用,其返回
                     值一般被忽略。对于control-flag,从Linux-PAM-0.63版本起,支持一种新的语法,具体可参
                       看LinuxPAM文档。
                 
module-path  :
                 module-path 用来指明本模块对应的程序文件的路径名,一般采用绝对路径,如果没有给出绝对路
                 径,默认该文件在目录/usr/lib/security下 面。  
arguments: 是用来传递给该模块的参数。一般来说每个模块的参数都不相同,可以由该模块的开发者自己定
                 义,但是也有以下几个共同 的参数:
                debug  :
                      该模块应当用syslog( )将调试信息写入到系统日志文件中。
                 no_warn :
                       表明该模块不应把警告信息发送给应用程序。  
                 use_first_pass :
                        表明该模块不能提示用户输入密码,而应使用前一个模块从用户那里得到的密码。  
                 try_first_pass :
                       表明该模块首先应当使用前一个模块从用户那里得到的密码,如果该密码验证不通过,再提示
                        用户输入新的密码。  
                  use_mapped_pass:
                       该模块不能提示用户输入密码,而是使用映射过的密码。  
                  expose_account :
                        允许该模块显示用户的帐号名等信息,一般只能在安全的环境下使用,因为泄漏用户名会对安全
                        造成一定程度的威 胁。  
2、使用配置目录/etc/pam.d/(只适用于RedHat Linux)  
      该目录下的每个文件的名字对应服务名,例如ftp服务对应文件/etc/pam.d/ftp。如果名为xxxx的服务所对
      应的配置文件/etc/pam.d/xxxx不存 在,则该服务将使用默认的配置文件/et c/pam.d/other。每个文件由
      如下格式的文本行所构成:
                 module-type   control-flag    module-path arguments  
   每个字段的含义和/etc/pam.conf中的相同。
[root@acermt pam.d]# cat  xserver     //举例
#%PAM-1.0
auth        sufficient        pam_rootok.so
auth        required         pam_console.so
account    required       pam_permit.so
session      optional       pam_keyinit.so force revoke


3、配置的例子 

 例一:通过/etc/pam.d/配置服务
-rw-r--r--. 1 root root    97 Jun 23  2010 system-config-network
   直接  # vim   system-config-network  编辑文件即可。

 
阅读(1106) | 评论(0) | 转发(0) |
0

上一篇:系统故障和漏洞

下一篇:ssh 数字证书

给主人留下些什么吧!~~