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

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

嵌入式linux pam,PAM介绍(一)相关推荐

  1. 从入门到入土:[linux实践]-pam|编写基于libpam的用户认证程序|编写基于PAM认证的应用程序|详细说明|实验步骤|实验截图

    写在前面: 此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 编写基于libpam的用户认证程序|编写基于PAM认证的应用 ...

  2. linux oracle pam,Linux技术之深入Linux PAM 体系结构(一)

    本文阐述了 Linux-PAM 的概念,同时还与读者一道分析了 Linux-PAM 的体系结构,作者希望籍此以加深读者对 Linux-PAM 的理解,以便对其有更深层的把握. 一.什么是Linux-P ...

  3. linux 扩展pam支持第三方认证

    利用PAM支持第三方认证 linux pam的介绍 Linux pam是由sun公司开发的一款开源软件.PAM全称为Pluggable Authentication Modules,可动态插入删除的认 ...

  4. 嵌入式linux入门-常用命令介绍

    使用芯片手册的时候,会时常的看到芯片中有的位填写的数字有保留,那是为了以后芯片升级和扩展使用的,现在是不使用.如GPF4占用的[9:8] 00 = Input,01 = Output, 10 = EI ...

  5. linux设置板卡时间,嵌入式VS-RK3288板卡 Linux 修改BOOTDELAY介绍

    嵌入式VS-RK3288板卡 Linux 修改BOOTDELAY介绍 uboot进入kernel中间的延时时间可以通过BOOTDELAY这个宏来控制.修改uboot/common/Kconfig文件 ...

  6. 嵌入式linux/鸿蒙开发板(IMX6ULL)开发(一) 嵌入式Linux开发基本概念以及开发流程介绍

    文章目录 1.linux开发初了解 1.1 嵌入式Linux开发的基本概念 1.1.1关于Git的背景介绍 1.1.2关于repo的背景介绍 1.1 3 一些关于此背景知识的介绍 1.1.4关于Lin ...

  7. 利用Yocto构建嵌入式Linux教程02--Yocto的一些基本概念介绍

    本教程选用的Yocto版本为3.0.4,使用的Linux发行版为Ubuntu 18.04 (LTS),图中所有示例为实际测试截图,有问题请给我留言.微信公众号:嵌入式Linux那些事儿 在Yocto项 ...

  8. 嵌入式 Linux 的基础知识介绍

    ​ 嵌入式Linux是Linux内核的改编版,用于嵌入式系统.嵌入式Linux最流行的例子是Android 操作系统. 但是,需要大量硬件资源来支持嵌入式 Linux,特别是如果它将部署在实时机器对机 ...

  9. linux系统pam配置文件,【PAM】 How to Configure and Use PAM in Linux?

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

  10. 嵌入式 Linux 启动流程和 bootloader 介绍

    目录 嵌入式 Linux 启动流程 简介 启动流程 Bootloader 简介 市面上可见的 bootloader 入式 Linux 启动流程 简介 对于一个 SoC 芯片而言,bootloader ...

最新文章

  1. ubuntu kylin 18.04 安装 Qt Creator 5.11
  2. oracle10g提权,Oracle 10g提权测试
  3. Dom4j 写文件不全
  4. 解决 Windows 和 Ubuntu 时间不一致的问题--转载
  5. orleans/Documentation
  6. Servlet 3的异步Servlet功能
  7. 通过FTP备份IOS
  8. 《恋上数据结构第1季》动态扩容数组原理及实现
  9. jQuery-1.9.1源码分析系列(八) 属性操作
  10. Anylogic学习--------选项列表
  11. 第一章:Django介绍
  12. 递归函数python有什么特点_递的笔顺 笔画数:10 拼音:dì 部首:辶 - 智慧山
  13. Linux系统常用测试工具
  14. python实现ks算法_Python计算KS值并绘制KS曲线
  15. python绘制单线图_施工角度简析如何画好管道单线图
  16. 利用python爬取网易云歌手top50歌曲歌词
  17. eplan php文件夹,EPLAN P8 导入部件库的方法-mdb文件
  18. React Navigation——底部导航栏设计
  19. 基于多机CUP分布式训练
  20. ajax.updater 返回值,使用 Ajax.Updater() 类

热门文章

  1. Android测试之logcat日志
  2. 圣朱妮佩洛|San Junipero(5)
  3. 示波器表笔旁边的夹子是什么_示波器探头的地线夹子应该要靠近测量点
  4. 半钧先生:分享一波超赞的冬至文案,句句暖到心!
  5. 使用keil软件创建一个STM32工程
  6. 什么是量化交易-量化交易demo
  7. 用计算机用语说唯美的话,古风说说唯美句子
  8. snail mock_HTML5 2D游戏开发,Snail Bait简介
  9. java八大数据类型_java的八大基本数据类型分别是什么?
  10. GM、VP、FVP、CIO都是什么职位