pam认证机制:简单来说就是linux系统采取的这一种对不同用户以及系统中的不同服务进行的安全认证机制。

认证流程:linux系统首先确定所需认证的服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证。

举个例子,我们登陆的时候,会向 PAM 发出验证要求的通知, PAM 经过一连串的验证后,将验证的结果回报给该程序,然后该程序就能够利用验证的结果来进行可登陆或显示其他无法使用的信息。

现在我们取 /etc/pam.d/passwd这个配置文件的内容来看一看:

我们看到有三列数据,它们分别代表了 :验证类别、控制标志、PAM 模块与该模块的参数。

你会发现在我们上面的表格当中第二列出现的是“include”这个关键词,他代表的是会调用后面的文件来作为这个类别的验证, 所以,上述的每一行都要调用/etc/pam.d/system-auth 那个文件来进行验证。

现在我们重点讲一下第一个字段验证类别和第二个字段控制标志。

验证类别:

验证类别主要分为四种:

auth:是 authentication (认证) 的缩写,所以这种类别主要用来检验使用者的身份验证,这种类别通常是需要口令来检验的, 所以后续接的模块是用来检验用户的身份。

account:账户模块接口,检查指定账户是否满足当前验证条件,检查账户是否到期等。

session:会话模块接口,用于管理和配置用户会话。会话在用户成功认证之后启动生效

password:密码模块接口,用于更改用户密码,以及强制使用强密码配置

控制标志:

required:若成功则带有 success (成功) 的标志,若失败则带有 failure 的标志,但不论成功或失败都会继续后续的验证流程。 由于后续的验证流程可以继续进行,因此相当有利于数据的登录 (log) ,这也是 PAM 最常使用 required 的原因。

requisite:若验证失败则立刻返回 failure 的标志,并终止后续的验证流程。若验证成功则带有 success 的标志并继续后续的验证流程。 这个项目与 required 最大的差异,就在于失败的时候还要不要继续验证下去。由于 requisite 是失败就终止, 因此失败时所产生的 PAM 信息就无法透过后续的模块来记录了。

sufficient:若验证成功则立刻回传 success 给原程序,并终止后续的验证流程;若验证失败则带有 failure 标志并继续后续的验证流程。 这玩意儿与 requisits 刚好相反!

optional :该模块返回的通过/失败结果被忽略。当没有其他模块被引用时,标记为optional模块并且成功验证时该模块才是必须的。

常用模块:

pam_securetty.so:

限制系统管理员 (root) 只能够从安全的 (secure) 终端机登陆;例如 tty1, tty2 等就是传统的终端机装置名称。那么安全的终端机配置呢? 就写在/etc/securetty 这个文件中。你可以查阅一下该文件, 就知道为什么 root 可以从 tty1~tty7 登陆,但却无法透过 telnet 登陆 Linux 主机了!

pam_nologin.so:

这个模块可以限制一般用户是否能够登陆主机之用。当/etc/nologin 这个文件存在时,则所有一般使用者均无法再登陆系统了!若 /etc/nologin 存在,则一般使用者在登陆时, 在他们的终端机上会将该文件的内容显示出来!所以,正常的情况下,这个文件应该是不能存在系统中的。 但这个模块对 root 以及已经登陆系统中的一般账号并没有影响。

pam_selinux.so:

SELinux 是个针对程序来进行细部管理权限的功能。由于 SELinux 会影响到用户运行程序的权限,因此我们利用 PAM 模块,将 SELinux 暂时关闭,等到验证通过后, 再予以启动!

pam_console.so:

当系统出现某些问题,或者是某些时刻你需要使用特殊的终端接口 (例如 RS232 之类的终端联机设备) 登陆主机时, 这个模块可以帮助处理一些文件权限的问题,让使用者可以透过特殊终端接口 (console) 顺利的登陆系统。

pam_loginuid.so:

我们知道系统账号与一般账号的 UID 是不同的!一般账号 UID 均大于500才合理。 因此,为了验证使用者的 UID 真的是我们所需要的数值,可以使用这个模块来进行规范!

pam_env.so:

用来配置环境变量的一个模块,如果你有需要额外的环境变量配置,可以参考/etc/security/pam_env.conf 这个文件的详细说明。

pam_unix.so:

这是个很复杂且重要的模块,这个模块可以用在验证阶段的认证功能,可以用在授权阶段的账号许可证管理, 可以用在会议阶段的登录文件记录等,甚至也可以用在口令升级阶段的检验!非常丰富的功能! 这个模块在早期使用得相当频繁喔!

pam_cracklib.so:

可以用来检验口令的强度!包括口令是否在字典中,口令输入几次都失败就断掉此次联机等功能,都是这模块提供的! 这玩意儿很重要!

Linux中pam认证详解,linux中pam认证解析相关推荐

  1. linux环境下ps命令行,Linux下ps命令详解 Linux下ps命令的详细使用方法

    Linux下ps命令详解 Linux上进程有5种状态:1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运 ...

  2. linux中create命令详解,linux中 pmap 命令详解

    通过查看帮助,返回了如下信息: Usage: pmap [options] pid [pid ...] Options: -x, --extended show details -X show eve ...

  3. linux中which命令详解,Linux下which命令使用详解(转)

    我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索: which 查看可执行文件的位置. whereis 查看文件的位置. locate 配合数据库查看文件位置. f ...

  4. linux中的ps fx命令,Linux下ps命令详解 Linux下ps命令的详细使用方法

    Linux下ps命令详解 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断 ...

  5. linux中jstack命令详解,Linux jstack命令详解

    jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息. 如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack ...

  6. linux中dd命令详解,Linux中DD命令详解

    Linux中DD命令详解 1.dd命令简介 功能:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换.可以用该命令实现DOS下的diskcopy命令的作用.先用dd命令把软盘上的 ...

  7. linux中groupadd命令详解,linux groupadd命令权限群组详解

    首页 > Linux教程 > 常用命令 > group/user 群组和用户 linux groupadd命令权限群组详解 linux中groupadd命令用于创建一个新的工作组,新 ...

  8. linux的vi命令详解,Linux上Vi命令详解

    Linux下Vi命令详解 补充一点:在vi中使用命令的方法是:冒号+命令+回车,如:q 回车代表退出.================================================= ...

  9. linux 命令行 time,详解Linux time 命令的使用

    1.命令简介 time 用于统计命令执行所消耗的时间及相关系统资源等信息.time 可以显示的资源有四大项,分别是: Time resources Memory resources IO resour ...

  10. linux下awk命令详解,Linux文件处理awk命令-linux awk命令详解-嗨客网

    Linux文件处理awk命令详解教程 Linux awk命令说明 awk 是一个强大的文本分析工具,相对于 awk 有 3 个不同版本: awk.nawk 和 gawk,未作特别说明,一般指 gawk ...

最新文章

  1. 芯盾时代:致力于身份认证安全的领军者
  2. Blink Coordinate Spaces
  3. 向一个有N个元素的顺序表中插入一个元素,平均要移动的次数为多少
  4. android 输入法遮挡布局解决方案
  5. 联想e550笔记本怎么样_预算5000-6000元笔记本电脑推荐(学生/入门/小白选购)*十二月更新...
  6. 安装 VMware Workstation Pro 16 并创建 ubuntu 20.04 虚拟机
  7. java perm 查看_高级 Java 必须掌握:JVM 分析工具和查看命令,超详细
  8. hibernate jpa_JPA / Hibernate实体状态转换的初学者指南
  9. Java 12:开关表达式
  10. linux git添加密钥,centos – 无法在Gitlab上创建项目或添加ssh密钥
  11. 【性能优化】如何让APK瘦成一道闪电
  12. 区块链java开源框架_github上的java三大开源区块链类库?
  13. FastStone Capture注册破解码
  14. 一名优秀的前端大牛《司徒正美》
  15. 杭州电子科技大学计算机考研录取名单,杭州电子科技大学2017年硕士研究生一志愿考生复试名单公布...
  16. 一天搞懂机器学习PPT笔记-1
  17. OV9281+RK3399Pro 双摄像头移植
  18. stl文件怎么用Java读取_vtk对stl文件进行下采样
  19. 命令行工具 DOT和DOH测试
  20. C++:应用有限差分法求解 稳平流扩散方程 v*ux-k*uxx=0 in 一个空间维度,具有恒定的速度 v 和扩散系数 k(附完整源码)

热门文章

  1. 【彩彩只能变身队】用户需求分析(一)—— 调查问卷
  2. 新手村之BOSS战-入门综合练习2
  3. TCP、UDP及IP协议总结
  4. 《C++ Primer Plus》14.2 私有继承 学习笔记
  5. 第三回 Bootstrap3.x 起步
  6. [Buzz Today]2012.09.01
  7. ecshop dizcuz会员整合
  8. [原创] 共享两个有用的网页布局表格
  9. android菜单动画,利用 android studio 制作一个菜单动画
  10. 编历修改工作表中的控件属性(更新条形码)