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

相关文章

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

Debezium 与 Apache Kafka 的集成方式步骤详解

《Debezium与ApacheKafka的集成方式步骤详解》本文详细介绍了如何将Debezium与ApacheKafka集成,包括集成概述、步骤、注意事项等,通过KafkaConnect,D... 目录一、集成概述二、集成步骤1. 准备 Kafka 环境2. 配置 Kafka Connect3. 安装 D

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

Spring Cloud LoadBalancer 负载均衡详解

《SpringCloudLoadBalancer负载均衡详解》本文介绍了如何在SpringCloud中使用SpringCloudLoadBalancer实现客户端负载均衡,并详细讲解了轮询策略和... 目录1. 在 idea 上运行多个服务2. 问题引入3. 负载均衡4. Spring Cloud Load

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

在 Spring Boot 中使用 @Autowired和 @Bean注解的示例详解

《在SpringBoot中使用@Autowired和@Bean注解的示例详解》本文通过一个示例演示了如何在SpringBoot中使用@Autowired和@Bean注解进行依赖注入和Bean... 目录在 Spring Boot 中使用 @Autowired 和 @Bean 注解示例背景1. 定义 Stud