linux pam配置文件,Linux PAM认证详解

2023-11-11 14:40

本文主要是介绍linux pam配置文件,Linux PAM认证详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PAM简介

PAM是 PLUGGABLE AUTHENTICATION MODULES 的缩写。

它是一套共享库.它可以让系统管理员选择应用程序怎样去认证用户,而不需要知道应用程序的内部的实现细节,也不需要重新编译代码。

在PAM出现之前,一般的应用程序,在要去认证用户时,它们会将某种特定的认证方式硬编码到程序内部。比如,传统的UNI*操作系统上的用户登入程序,它先获得用户的用户名和密码,然后,将用户输入的密码进行计算得到密文,最后,将得到的密文和/etc/shadow文件中的该用户所在行的第二个字段进行比较,如果相同,则认证通过,否则,认证失败。

这种认证过程的缺点在于,你无法方便地去改变登入程序所使用的这种认证方式(除非你自己去修改源代码,然后编译)。

随着计算机速度的飚升,和网络并行计算的的普及,越来越多的旧的认证机制变得非常得脆弱;同时,也出于用户管理方便的需要,我们有时侯需要去改变应用程序的认证过程 。

这时候,传统的应用程序的认证机制就显得很不方便。PAM 就在这时候诞生了。

如果某个应用程序使用了PAM,当它需要进行用户认证的时候,只需要把认证过程简单得交给PAM模块,然后,由PAM模块对用户进行认证,PAM再将认证的结果返回给应用程序。应用程序并不知道PAM到底使用了使么方法对用户进行了认证,这个由系统管理员来决定。管理员可以天真地使用simple trust (pam_permit)来进行认证,也可以使用非常复杂的认证方式,如网膜认证、声纹认证等。

下面是认证的过程图解。

1405524342_2003.jpg

上图中,左边是应用程序(application) X, 它简单地调用PAM模块所提供的接口 (interfaces), 然后中间的PAM模块读取PAM config file(PAM配置文件, 这些配置文件通常是/etc/pam.conf或者是/etc/pam.d/*)来决定使用什么认证方式。之后,PAM进行用户,最后,PAM将认证结果返回给应用程序。对于应用程序来讲,认证过程是怎么进行的,它并不知道。应用程序到底使用什么认证方式,是由管理员修改配置文件来决定的。

从图中可以看出,PAM的功能被分为四个部分: (1) authentication(认证), (2)account(账号管理), (3) password (密码管理), 和 (4)session (对话管理)。

以下解释这四个功能的具体任务以及PAM提供给应用程序的接口:

1405524342_2159.jpg

配置文件的修改:配置文件的格式为:

复制代码 代码如下:

#服务名 模块类型 控制标志 模块路径 模块参数

login auth required pam_unix_auth.so nowarn

login session required pam_unix_session.so

login account required pam_unix_account.so

模块类型分别对应上述四种managements中的一种。PAM在认证时,就按照从上往下的顺序,依次进行每一个认证。

pam.conf中的 “控制标志” 实际上是指明这些 Stacked module 的工作方式。

它可取的值如下:

(a) required:

该模块的让正必须通过,失败者立即返回错误信息。

(b) optional:

表示可以忽略它的错误而继续下面一个模块。

(c)sufficient:

表明通过该模块的认证已经是足够了, 下面的模块就不用被调用了, 认证也就到此结束,PAM立即返回成功的消息。

在linux下, 也可以用/etc/pam.d中的文件来配置.这些文件的格式与pam.conf

类似,只是在文件中没有包含服务名. 其服务名就是它的文件名。

如上述的login也可以配置如下:

复制代码 代码如下:

/etc/pam.d/login

auth required pam_unix.so debug

auth required pam_kerb.so use_mapped_pass

auth optional pam_rsa.so use_first_pass

这篇关于linux pam配置文件,Linux PAM认证详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/390759

相关文章

Java实现优雅日期处理的方案详解

《Java实现优雅日期处理的方案详解》在我们的日常工作中,需要经常处理各种格式,各种类似的的日期或者时间,下面我们就来看看如何使用java处理这样的日期问题吧,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言一、日期的坑1.1 日期格式化陷阱1.2 时区转换二、优雅方案的进阶之路2.1 线程安全重构2

Java中的JSONObject详解

《Java中的JSONObject详解》:本文主要介绍Java中的JSONObject详解,需要的朋友可以参考下... Java中的jsONObject详解一、引言在Java开发中,处理JSON数据是一种常见的需求。JSONObject是处理JSON对象的一个非常有用的类,它提供了一系列的API来操作J

HTML5中的Microdata与历史记录管理详解

《HTML5中的Microdata与历史记录管理详解》Microdata作为HTML5新增的一个特性,它允许开发者在HTML文档中添加更多的语义信息,以便于搜索引擎和浏览器更好地理解页面内容,本文将探... 目录html5中的Mijscrodata与历史记录管理背景简介html5中的Microdata使用M

html5的响应式布局的方法示例详解

《html5的响应式布局的方法示例详解》:本文主要介绍了HTML5中使用媒体查询和Flexbox进行响应式布局的方法,简要介绍了CSSGrid布局的基础知识和如何实现自动换行的网格布局,详细内容请阅读本文,希望能对你有所帮助... 一 使用媒体查询响应式布局        使用的参数@media这是常用的

HTML5表格语法格式详解

《HTML5表格语法格式详解》在HTML语法中,表格主要通过table、tr和td3个标签构成,本文通过实例代码讲解HTML5表格语法格式,感兴趣的朋友一起看看吧... 目录一、表格1.表格语法格式2.表格属性 3.例子二、不规则表格1.跨行2.跨列3.例子一、表格在html语法中,表格主要通过< tab

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Java使用SLF4J记录不同级别日志的示例详解

《Java使用SLF4J记录不同级别日志的示例详解》SLF4J是一个简单的日志门面,它允许在运行时选择不同的日志实现,这篇文章主要为大家详细介绍了如何使用SLF4J记录不同级别日志,感兴趣的可以了解下... 目录一、SLF4J简介二、添加依赖三、配置Logback四、记录不同级别的日志五、总结一、SLF4J

Java使用ANTLR4对Lua脚本语法校验详解

《Java使用ANTLR4对Lua脚本语法校验详解》ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件,下面就跟随小编一起看看Java如何使用ANTLR4对Lua脚本... 目录什么是ANTLR?第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Gramm