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

相关文章

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五