嵌入式linux pam,PAM介绍(一)

PAM介绍

[root@station203 ~]# uname -a

Linux station203.example.com 2.6.18-53.el5 #1 SMP Wed Oct 10 16:34:02 EDT 2007 i686 i686 i386 GNU/Linux

这里针对的RHEL5系统。

PAM(Pluggable Authentication Modules )是由Sun提出的一种认证机制。它通过提供一些动态链接库和一套统一的API,将系统

提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序

,同时也便于向系统中添加新的认证手段。 PAM模块是一种嵌入式模块,修改后即时生效。

pam的重要文件:

/usr/lib/libpam.so.*         ## PAM核心库

/etc/pam.conf            ## PAM配置文件

/etc/pam.d/*             ## PAM各个模块的配置文件

/lib/security/pam_*.so     ## 可动态加载的PAM模块(各个系统可能不同)

检查摸个程序是不是支持pam,可以用下面的命令来测试:

[root@station203 ~]# ldd `which login` | grep pam

libpam.so.0 => /lib/libpam.so.0 (0x005de000)

libpam_misc.so.0 => /lib/libpam_misc.so.0 (0x00964000)

## 大概就是上面这个样子

PAM配置文件的每一行的格式:

Module-type Control-flag Module-path Arguments

模块类型    控制字符     模块路径    模块参数

Module-type:

auth:确定有关用户认证的两方面。第一,他确认用户就是他们自己,这通过应用程序提示用户输入密码或者其他正式身份的办法

。第二,这类模块会赋予成员资格。

account:处理非认证级的账号管理。典型的用法是基于一天的不同时间来限制、允许访问某服务。限制当前可用的系统资源(最大

用户数)或者限制特定用户—root只能从控制台登陆。

session:一系列有关动作,只在用户得到/失去服务时要做的事。这包括记录用户的登录/退出、挂载必要的目录等。

password:设置密码。

Control-flag:

required:表示本模块必须返回成功才能通过认证,但是如果该模块返回失败的话,失败结果也不会立即通知用户,而是要等到同

一stack中的所有模块全部执行完毕再将失败结果返回给应用程序。可以认为是一个必要条件。

requisite:与required类似,该模块必须返回成功才能通过认证,但是一旦该模块返回失败,将不再执行同一stack内的任何模块

,而是直接将控制权返回给应用程序。是一个必要条件。注:Solaris不支持。

sufficient:表明本模块返回成功已经足以通过身份认证的要求,不必再执行同一stack内的其它模块,但是如果本模块返回失败的

话可以忽略。可以认为是一个充分条件。

optional:表明本模块是可选的,它的成功与否一般不会对身份认证起关键作用,其返回值一般被忽略。

另外还有一个flag:include,从字面就知道什么意思了。包含另外一个配置文件。

下面简单画一下他们的过程:

required:(bad)

第一步OK->下一步false->下一步OK->下一步OK       结果是:失败

所有认证都OK                    结果是成功

requisite:(die)

第一步OK->下一步false->后面就不再进行了        结果:失败

所有认证都OK                    结果成功

sufficient:(ignore)

第一步OK->后面就不再进行了            结果成功

第一步false->(忽略)继续下面的验证        结果不一定,看后面的验证结果

optional:(ignore)

这个模块不会对结果有什么影响,可以认为忽略

Module-path:

REHL5的PAM module存放目录默认是在/lib/security。在各个模块的配置文件里,不用些绝对路径,直接写这个默认目录下面的模

块名就可以了。当然,也可以写绝对路径。

Arguments:

各个模块的参数都不一样,具体的要开发者的man手册。无效参数不会对结果有影响,但是会被日志记录下来。

首先,看看/lib/security有没有这个模块,再:man 模块名(不要后缀)

[root@station203 security]# man -k pam            ## 查看系统里面有哪些pam模块

config-util          (5)  - Common PAM configuration file for configuration utilities

group.conf [group]   (5)  - configuration file for the pam_group module

/$LIB/security/pam_krb5/pam_krb5_storetmp [pam_krb5_storetmp] (8)  - Temporary file helper

limits.conf [limits] (5)  - configuration file for the pam_limits module

............省略...............

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PAM (Pluggable Authentication Modules) 是一种用于 Linux 和其他类 Unix 操作系统的身份验证的模块化体系结构。它允许管理员为各种应用程序和服务配置身份验证方法,包括本地系统身份验证、LDAP、Kerberos 等等。PAM 是一个可插拔的模块化架构,因此管理员可以选择使用现有的模块或编写自己的模块来满足他们的需求。 PAM 的工作原理是通过在用户登录时向操作系统提供一个身份验证的钩子,该钩子在用户登录之前和之后运行。这个钩子可以是一个共享库或者一个可执行文件,它会根据用户的身份验证请求调用相应的 PAM 模块来完成身份验证过程。每个 PAM 模块都是独立的,可以自定义配置,也可以通过配置文件进行全局配置。 PAM 的身份验证过程包括以下步骤: 1. 读取用户的身份验证请求。 2. 调用 PAM 库中的相应函数,运行 PAM 模块。 3. PAM 模块根据用户身份验证请求的类型进行身份验证。 4. PAM 模块返回身份验证结果,PAM 库根据结果进行操作。 5. 如果身份验证成功,PAM 库会创建用户的会话并将其绑定到用户的 shell。如果身份验证失败,PAM 库会拒绝用户的请求并返回错误信息。 总的来说,PAM 是一个灵活的、可扩展的身份验证框架,可以实现各种各样的身份验证方法。它可以使管理员更容易地管理和配置身份验证,同时保证系统的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值