前言

linux下PAM模块全称是Pluggable Authentication Module for linux(可插入式授权管理模块),该由Sun公司提供,在Linux中,PAM是可动态配置的,本地系统管理员可以自由选择应用程序如何对用户进行身份验证。PAM应用在许多程序与服务上,比如登录程序(login、su)的PAM身份验证(口令认证、限制登录),passwd强制密码,用户进程实时管理,向用户分配系统资源等。


配置文件

PAM的配置文件位置 /etc/pam.conf,也可以在/etc/pam.d/文件夹下配置单独的文件,当存在/etc/pam.d文件夹时,Linux-PAM将会使用/etc/pam.d文件夹下的配置文件而忽略/etc/pam.conf配置文件。

pam.conf配置文件中,配置内容写在一行内,也可以以""作为连接符将配置内容写在多行;pam.conf以空格作为分割标记,#代表标注信息;“-”如果在配置语句前面加上该符号,在系统登录时如果该模块未被正确加载,不会将该事件记录到系统日志中,即“-”表示可选项。

如果配置文件放置在/etc/pam.d文件夹下,则配置文件中没有service选项,且配置文件的名字为service名字,文件名必须小写,配置语法区分大小写,配置规则格式为:

service type control module-path module-arguments

服务名称 类型 控制 模块路径 模块参数

type类型

account manager(account):提供账户服务验证,如账户密码是否过期,是否对该账户提供服务

authentication manager(auth):负责对用户进行认证并建立用户凭证;通常该模块通过交互式方法进行认证,比如你应当输入密码证明你是你,但并非所有的认证都是该类型

password manager(password):进授权认证机制进行更新,如更改密码

session manager(session):当开启一个新会话时,该模块负责处理会话的准备任务,而当关闭某一个会话时,该模块负责善后工作,如卸载该用户home目录。

control控制

control分为简单和复杂两种语法结构,简单语法中仅有一个关键字,而复杂语法通过[ ]引入[value=action]选项

1、control简单语法包含以下值:

required:当使用此关键字的PAM模块验证失败,最终会导致PAM-API返回失败,但是会等到后续模块全部被验证后才会返回失败

requisite:该关键字与required使用方法类似,但是当PAM验证失败时,requisite会立刻向调用程序或父PAM桟返回失败值;该关键字可以防止攻击者获得系统已存在用户信息,通常该关键字用在重要的系统环境中

sufficient:如果该模块验证成功,而且该模块前无required模块验证失败,sufficient关键字将会向调用程序或者父PAM栈返回成功值而不会再调用后续的验证模块;当调用sufficient模块失败,PAM模块不会受sufficient模块失败影响,将会继续执行验证。

optional:当配置文件中仅有service+optional这一条规则时,optional模块才会起作用

include:将指定配置文件中所有的type类型作为参数包含在此控制语句中

substack:将指定配置文件中type作为参数包含在此控制语句中,和Include不同的是,在substack中完成任务或者die,只会影响substack内控制命令,不会影响完整的stack桟

2、control复杂语法

[value1=action1 value2=action2 ...]

valueN代表对应模块中控制语句的返回值,可以是下面的值:success,open_err,symbol_err,service_err,system_err,buf_err,perm_denied,deault等,其中default表示所有未被显式提到的所有值

PAM所有的错误信息列表在 /usr/include/security/_pam_types.h文件夹中

actionN可以使下列值中的某一个:

ignore:当在模块桟中使用该参数时,该模块桟的返回值不会影响应用程序获得返回值

bad:当使用bad关键字,证明模块桟的返回值代表失败;当该模块式PAM桟中第一个模块时,该模块的状态将会在整个PAM桟中使用

die:和bad关键字作用相同,当使用该动作关键时,会立刻终止模块桟,PAM会立刻返回到调用的应用程序中

ok:该动作指示将PAM的返回值直接用于所有的模块桟中,即如果前一个桟返回的状态是PAM_SUCCESS,'OK‘中的值会重写返回值;如果返回的是失败,则此'OK'的值不会重写返回值。

done:和'OK'动作基本相同,但是PAM会立刻返回到应用程序当中

reset:清空所有模块桟的状态值并以下一个模块进行验证

N:和'OK'副作用相同,但是会跳过接下来的N个模块桟,不允许使用'0'(在某些情况是使用'0'和'OK'作用类似)

四个关键字required;requisite;sufficient;optional和以下语句有相同作用

required

[success=ok new_authtok_reqd=ok ignore=ignore default=bad]

requisite

[success=ok new_authtok_reqd=ok ignore=ignore default=die]

sufficient

[success=done new_authtok_reqd=done default=ignore]

optional

[success=ok new_authtok_reqd=ok default=ignore]

module-path

模块路径可以使应用程序使用的PAM模块的文件名,也可是是默认模块的相对路径名:/lib/security 或者/lib64/security

module-arguments

模块参数是以空格作为分隔符的列表,可以用来指定PAM特殊的动作,如果需要在参数中包含空格,需要使用"[ ]",当需要在语法中使用[]时,需使用"",如 [..[..]..]->..[..]..;语法中的任何一个错误都会导致验证失败,而且会被记录到系统日志中


总结

pam认证机制还是挺好用了,OpenVPN就可以调用这个目录,去数据库取用户用户名密码进行验证,方便管理。

CentOS-pam认证机制简介的更多相关文章

  1. PAM认证机制

    PAM:Pluggable Authentication Modules 认证库:文本文件,MySQL,NIS,LDAP等 Sun公司于1995 年开发的一种与认证相关的通用框架机制 PAM 是关注如 ...

  2. PAM认证机制详情

    PAM(Pluggable Authentication Modules)认证机制详情 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.      一.介绍PAM PAM(Plugga ...

  3. AIDE,sudo,TCP_Wrappers,PAM认证等系统安全访问机制

    AIDE 高级入侵检测环境:是一个入侵检测工具,主要用途是检查文件的完整性,审计计算机上的那些文件被更改过了. AIDE能够构造一个指定文件的数据库,它使用aide.conf作为其配置文件.AIDE数 ...

  4. IPC 机制简介

    IPC 机制简介 概述 在Unix早期发展中,做出重大贡献的两大主力Bell实验室和伯克利大学(BSD)在IPC(InterProcess Communication)方面的侧重点有所不同.前者对Un ...

  5. centos6.5下vsftpd服务的安装及配置并通过pam认证实现虚拟用户文件共享

    FTP的全称是File Transfer Protocol(文件传输协议),就是专门用来传输文件的协议.它工作在OSI模型的第七层,即是应用层,使用TCP传输而不是UDP.这样FTP客户端和服务器建立 ...

  6. PAM认证

    PAM认证 摘自: http://www.cnblogs.com/shenxm/p/8451889.html PAM(Pluggable Authentication Modules) Sun公司于1 ...

  7. 什么是PAM认证

    PAM(Pluggable Authentication Modules )是由 Sun 提出的一种用于实现应用程序的认证机制.其核心是一套共享库,目的是提供一个框架和一套编程接口,将认证工作由程序员 ...

  8. Vsftpd: 基于PAM认证的虚拟用户和匿名用户

    目录 环境说明效果说明及截图①. 安装组件②. 系统账户建立③. 编辑vsftpd的配置文件④. 生成虚拟用户的数据库文件⑤. 生成一个使用vsftpd_login.db数据文件的PAM认证文件⑥. ...

  9. 11. MGR技术架构及数据同步、认证机制 | 深入浅出MGR

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. GreatSQL是MySQL的国产分支版本,使用上与MySQL一致. 目录 1. MGR架构 2. 事务数据同步.认证过程 ...

随机推荐

  1. 使用EasyUI,关于日期格式的文本框按照正常方式获取不到值的问题

    这是个小菜在实际工作中遇到的问题,相信很多EasyUI新手很可能也遇到这样的问题,因此小菜觉得有必要拿出来分享一下. 这个问题要从EasyUI的datebox组件说起,小菜用这个组件的时候,发现用$( ...

  2. Oracle——单行函数

    两种 SQL 函数 单行函数 字符函数 大小写控制函数 SELECT employee_id, last_name, department_id FROM employees WHERE last_n ...

  3. spark源码阅读之network(1)

    spark将在1.6中替换掉akka,而采用netty实现整个集群的rpc的框架,netty的内存管理和NIO支持将有效的提高spark集群的网络传输能力,为了看懂这块代码,在网上找了两本书看< ...

  4. 用JQuery获取输入框中的光标位置

    (function ($, undefined) { $.fn.getCursorPosition = function () { var el = $(this).get(0); var pos = ...

  5. 数据库去重与join连表

    join连表删除的效率与检测存在之后删除的效率比,后者的效率低了很多

  6. Reporting Service服务SharePoint集成模式安装配置(1、虚拟机+ 2、AD域环境配置)

    研究 Reporting Service SharePoint 集成模式安装有一段时间,最初其实只是想知道Power View 技术是怎么回事,能实现什么效果.(当然也可以通过Excel 配置好 Po ...

  7. ElasticSearch 笔记(二)

    记录一些核心概念 1) Near Realtime (NRT): 近实时,包括 2 个方面,① 数据从写入 Elasticsearch 到可被搜索.分析的延迟 ( 大约 1 秒 ); ② 从 es 中 ...

  8. android canvas中rotate()和translate()两个方法详解

    rotate()和translate() 1.看到这个题目的时候,有人会觉得这不就是一个对画布的旋转和平移的嘛,但是其中的细节的地方还是需要深究一下的. 例如:有个需求将TextView的文字竖直显示 ...

  9. centos7 .net core 使用supervisor守护进程,可以后台运行

    1.安装supervisor yum install supervisor 2.配置supervisor vi /etc/supervisord.conf 拉到最后,这里的意思是 /etc/super ...

  10. Block Formatting Contexts (块级格式化上下文) 详解

         最近在学习BootStrap框架,发现里面清除浮动的类 .clearfix 跟平时自己用的不太一样.它的样式是这样的: .clearfix:before { content: " ...