PAM可以说是一套应用程序编程接口,它提供了一连串的验证机制,只要用户将验证阶段的需求告知PAM后,PAM就能够回报用户验证结果(成功或失败)。

PAM通过一个与程序相同文件名的配置文件来进行一连串的认证分析需求。以passwd为例,当你执行passwd后,这个程序调用PAM的流程:

1、用户开始执行/usr/bin/passwd这支程序,并输入密码

2、passwd调用PAM模块进行验证

3、PAM模块会到/etc/pam.d/中寻找与程序(passwd)同名的配置文件

4、依据/etc/pam.d/passwd内的设置,引用相关的PAM模块逐步进行验证分析

5、验证结果(成功、失败或其他信息)回传给passwd这个程序

6、passwd这支程序会根据PAM回传的结果决定下一个操作

看看/etc/pam.d/passwd这个配置文件

  1. [root@mkk ~]# cat /etc/pam.d/passwd
  2. #%PAM-1.0
  3. auth       include      system-auth
  4. account    include      system-auth
  5. password   include      system-auth
  6. 验证类型 控制标准 PAAM模块与该模块参数

第一个字段:验证类型(type)

验证类型分为四种:

auth:是authention(认证)的缩写,所以这个种类型主要用来检验用户的身份验证。

account:account(账号)则大部份是在进行授权,主用用来检验用户是否具有正确的权限

session:session是会议期间的意思,所以session管理的就是用户在这次登陆(或使用这个命令)期间PAM所给予的环境设置

password:password就是密码,主要用于提供验证的修订工作,就是修改密码。

第二个字段:验证的控制标示

验证的控制标示主要也分四种控制方式:

required:这类标示为,不论验证成功或失败都继续验证

requisite:这类标示为,失败则不在进行验证,只有成功才继续验证

sufficient:这类标示为,验证成功则不进行验证,验证失败就继续验证

optional:这类标示,更多是显示信息,而不进行验证

常见模块简介

首先看看我们的登陆(login)模块

  1. [root@mkk ~]# cat /etc/pam.d/login
  2. #%PAM-1.0
  3. auth [user_unknown=ignore success=ok ignoreignore=ignore default=bad] pam_securetty.so
  4. auth       include      system-auth
  5. account    required     pam_nologin.so
  6. account    include      system-auth
  7. password   include      system-auth
  8. # pam_selinux.so close should be the first session rule
  9. session    required     pam_selinux.so close
  10. session    include      system-auth
  11. session    required     pam_loginuid.so
  12. session    optional     pam_console.so
  13. # pam_selinux.so open should only be followed by sessions to be executed in the user context
  14. session    required     pam_selinux.so open
  15. session    optional     pam_keyinit.so force revoke
  16. [root@mkk ~]# cat /etc/pam.d/system-auth
  17. #%PAM-1.0
  18. # This file is auto-generated.
  19. # User changes will be destroyed the next time authconfig is run.
  20. auth        required      pam_env.so
  21. auth        sufficient    pam_unix.so nullok try_first_pass
  22. auth        requisite     pam_succeed_if.so uid >= 500 quiet
  23. auth        required      pam_deny.so
  24. account     required      pam_unix.so
  25. account     sufficient    pam_succeed_if.so uid < 500 quiet
  26. account     required      pam_permit.so
  27. password    requisite     pam_cracklib.so try_first_pass retry=3
  28. password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
  29. password    required      pam_deny.so
  30. session     optional      pam_keyinit.so revoke
  31. session     required      pam_limits.so
  32. session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
  33. session     required      pam_unix.so

上面使用了非常多的PAM模块,每个模块功能都不太相同,详细的模块情报可以在系统中在找到

/etc/pam.d/*:每个程序个别的PAM模块配置文件;

/lib/security/*:PAM模块文件的实际放置目录;

/etc/security/*:其他PAM环境的配置文件;

/usr/share/doc/pam-*/:详细的PAM说明文件。

简单的介绍比较常用的模块

pam_securetty.so:

限制系统管理员(root)只能够从安全的终端机登陆。所谓的安装终端可以在/etc/securetty这个配置文件中设置

pam_nologin.so

这个模块可以设置一般用户能否登陆系统,样/etc/nologin这个文件存在时,则所有一般用户均无法登陆系统,但对root没有影响。

pam_selinux.so

SElinux是针对程序来进行详细管理权限的功能

pam_console.so

当系统出现某些问题时,或某些时刻你需要使用特殊的终端接口登陆主机时,这个模块可以帮你处理文件权限问题,让用户可以通过特殊终端接口顺利登陆系统

pam_loginuid.so

验证用户的UID真的是我们需要的数值,可以用这个模块来进行规范

pam_env.so

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

pam_UNIX.so

这个模块可以用于验证阶段的认证功能,可以用于授权阶段的账号可许证管理,可以用于会议阶段的日志文件记录等。

pam_cracklib.so

可以用来检验密码强度

pam_limits.so

可以参考/etc/security/limits.conf内的说明

转载于:https://blog.51cto.com/aixecc/817180

linux PAM模块相关推荐

  1. linux pam模块 cron,Linux-PAM 1.1.2 中文文档 - 6.32. pam_tally-登录计数器(统计)模块 | Docs4dev...

    pam_tally.so [file = * +2+ *] [onerr = [* +3+ * | * +4+ *]] [magic_root] [even_deny_root_account] [d ...

  2. linux pam 解锁_linux中pam模块

    一.pam简介 Linux-PAM(linux可插入认证模块)是一套共享库,使本地系统管理员可以随意选择程序的认证方式. 换句话说,不用(重新编写)重新编译一个包含PAM功能的应用程序,就可以改变它使 ...

  3. linux学习-用户的特殊 shell 与 PAM 模块

    特殊的 shell, /sbin/nologin 『无法登入』指的是:『这个使用者无法使用 bash 或其他 shell 来登入系统』而已, 并不是说这个账号就无法使用其他的系统资源! 让某个具有 / ...

  4. linux修改su的PAM配置文件,linux pam安全认证模块su命令的安全隐患

    PAM安全认证 1.su命令的安全隐患 默认情况下,任何用户都允许使用su命令,从而有机会反复尝试其他用户(如root)的登录密码,带来安全风险.为了增强sum命令的使用控制,可以借助PAM认证模块, ...

  5. Linux系统的PAM模块认证文件含义说明总结

    在Linux中执行有些程序时,这些程序在执行前首先要对启动它的用户进行认证,符合一定的要求之后才允许执行,例如login, su等.在Linux中进行身份或是状态的验证程序是由PAM来进行的,PAM( ...

  6. Linux中PAM模块详解

    一.pam简介 Linux-PAM(linux可插入认证模块)是一套共享库,使本地系统管理员可以随意选择程序的认证方式.换句话说,不用重新编译一个包含PAM功能的应用程序,就可以改变它使用的认证机制. ...

  7. Linux——用户的特殊shell与PAM模块

    问题:我们能否建立一个仅能使用的mail server相关邮件服务的账号,而该账号并不能登入Linux主机 1.特殊的shell./sbin/nologin 由于系统账号不需要登入,我们就给这个无法登 ...

  8. linux su命令免密,使用PAM模块实现普通用户之间su免密切换

    这里将告诉您使用PAM模块实现普通用户之间su免密切换,教程操作步骤:参考自:Allow user1 to "su - user2" without password /d/fil ...

  9. 嵌入式linux pam,Linux PAM 之cracklib模块

    pam的重要文件如下: /usr/lib/libpam.so.*         ## PAM核心库 /etc/pam.conf            ## PAM配置文件 /etc/pam.d/* ...

最新文章

  1. PowerDesigner显示mysql数据表注释
  2. android 横向滑动事件,android左右手势滑动事件处理
  3. C/C++头文件规整
  4. Python在大部分领域都能胜任,为什么很多企业转向了Golang?
  5. TLE5012B ESP32驱动程序、硬件电路设计、4线SPI通信,驱动完美兼容4线SPI不用改MOSI开漏推挽输出
  6. matlab空域图像增强,图像处理的MATLAB实现实验一 空域图像增强.doc
  7. 查看Linux是Redhat 还是centos 还是...
  8. android 多线程 handler使用方法
  9. 计算机组成原理与汇编语言参考答案,计算机组成原理与汇编语言试题及答案
  10. 申请清华大学计算机类的理由,选择清华大学的十大理由(网络收集整理)
  11. 运放参数的详细解释和分析-part18,压摆率(SR)
  12. leetcode 1175. Prime Arrangements(python)
  13. 使用VMware虚拟机搭建爱快路由器PPPoE服务器环境
  14. 耳部穴位取穴 耳朵对应身体各部位反射图
  15. 2017-2018 ACM-ICPC, Asia Daejeon Regional Contest (大部分题解)
  16. 第四章——软件测试流程和规范
  17. JSON.parse()和JSON.stringify()和数组遍历方法
  18. [Unity3D]添加音效说明
  19. 微信小程序项目实例——体质计算器
  20. 谷歌云端硬盘快速下载方法_如何在Google云端硬盘中禁用“快速访问”快捷方式...

热门文章

  1. Android中Alertdialog对话框点击消失?
  2. SQL SERVER 优化 50法
  3. Android Jetpack - Emoji表情符号初探
  4. js实现简单的循环打字效果(思路分享)
  5. Mysql中where条件一个单引号引发的性能损耗
  6. WPF 4 Ribbon 开发 之 标签工具栏(Tab Toolbar)
  7. linux通过rinetd工具进行端口映射/转发/重定向
  8. MOQ TIP1:简介加基础
  9. DrawerLayout侧滑详解
  10. 【20160924】GOCVHelper综述