Linux中pam模块详解

news/2024/10/21 23:15:50/

pam简介 
Linux-PAM(linux可插入认证模块)是一套共享库,使本地系统管理员可以随意选择程序的认证方式。换句话说,不用重新编译一个包含PAM功能的应用程序,就可以改变它使用的认证机制。这种方式下,就算升级本地认证机制,也不用修改程序. PAM使用配置/etc/pam.d/下的文件,来管理对程序的认证方式.应用程序 调用相应的配置文件,从而调用本地的认证模块.模块放置在/lib/security下,以加载动态库的形式进,像我们使用su命令时,系统会提示你输入root用户的密码.这就是su命令通过调用PAM模块实现的。


PAM的配置文件介绍

  • 写在/etc/pam.conf文件中

  • 将PAM配置文件放到/etc/pam.d/目录下 

  •  
    如上图: 
    第一列代表模块类型 
    第二列代表控制标记 
    第三列代表模块路径 
    第四列代表模块参数

  • 640?wx_fmt=jpeg


PAM的模块类型 
Linux-PAM有四种模块类型,分别代表四种不同的任务,它们是:认证管理(auth),账号管理(account),会话管理(session)和密码(password)管理,一个类型可能有多行,它们按顺序依次由PAM模块调用.

管理方式 说明 
auth 用来对用户的身份进行识别.如:提示用户输入密码,或判断用户是否为root等. 
account 对帐号的各项属性进行检查.如:是否允许登录,是否达到最大用户数,或是root用户是否允许在这个终端登录等. 
session 这个模块用来定义用户登录前的,及用户退出后所要进行的操作.如:登录连接信息,用户数据的打开与关闭,挂载文件系统等. 
password 使用用户信息来更新.如:修改用户密码.

PAM的控制标记 
PAM使用控制标记来处理和判断各个模块的返回值.(在此只说明简单的认证标记)

控制标记 说明 
required 表示即使某个模块对用户的验证失败,也要等所有的模块都执行完毕后,PAM 才返回错误信息。这样做是为了不让用户知道被哪个模块拒绝。如果对用户验证成功,所有的模块都会返回成功信息。 
requisite 与required相似,但是如果这个模块返回失败,则立刻向应用程序返回失败,表示此类型失败.不再进行同类型后面的操作. 
sufficient 表示如果一个用户通过这个模块的验证,PAM结构就立刻返回验证成功信息(即使前面有模块fail了,也会把 fail结果忽略掉),把控制权交回应用程序。后面的层叠模块即使使用requisite或者required 控制标志,也不再执行。如果验证失败,sufficient 的作用和optional相同。 
optional 表示即使本行指定的模块验证失败,也允许用户接受应用程序提供的服务,一般返回PAM_IGNORE(忽略).

模块路径 
模块路径.即要调用模块的位置. 如果是64位系统,一般保存在/lib64/security,如: pam_unix.so同一个模块,可以出现在不同的类型中.它在不同的类型中所执行的操作都不相同.这是由于每个模块针对不同的模块类型,编制了不同的执行函数.


常用PAM模块介绍 
PAM模块 管理类型 说明 
pam_unix.so auth 提示用户输入密码,并与/etc/shadow文件相比对.匹配返回0 
pam_unix.so account 检查用户的账号信息(包括是否过期等).帐号可用时,返回0. 
pam_unix.so password 修改用户的密码. 将用户输入的密码,作为用户的新密码更新shadow文件

pam_shells.so (auth,account) 如果用户想登录系统,那么它的shell必须是在/etc/shells文件中

pam_deny.so (account,auth,password,session) 该模块可用于拒绝访问

pam_deny.so (account,auth,password,session)模块任何时候都返回成功

pam_securetty.so auth 如果用户要以root登录时,则登录的tty必须在/etc/securetty之中

pam_listfile.so (account,auth,password,session) 访问应用程的控制开关

pam_cracklib.so password 这个模块可以插入到一个程序的密码栈中,用于检查密码的强度

pam_limits.so session 定义使用系统资源的上限,root用户也会受此限制,可以通过/etc/security/limits.conf或/etc/security/limits.d/*.conf来设定

640?wx_fmt=jpeg



http://www.ppmy.cn/news/345131.html

相关文章

PAM(3)

写到这一篇才发现自己了解的远没有预期的多.. 上一次说了对话函数,对话函数是PAM模块与使用PAM进行认证的应用程序进行信息交互的桥梁,通过对话函数PAM模块可以获得用户的输入信息(明文、密文), 还有两套很重要的函数 pam_set_data(pam_handle_t *pamh, const char …

podman简介

podman简介掌握docker,跟上云时代的步伐 Podman是一个开源项目,可在大多数Linux平台上使用并开源在GitHub上。Podman是一个无守护进程的容器引擎,用于在Linux系统上开发,管理和运行Open Container Initiative(OCI)容器…

Impala

应用场景 在使用Hive的过程中,编写了HQL语句,发现HQL执行过程是非常慢的,因为hive采用的是把HQL转化成hadoop的MapReduce任务,然后编译,打包成jar包,分发到各个server上去执行,这个过程会很慢很慢!而impala也可以执行SQL,但是比Hive快很多,而Impala根本不用Hadoop的M…

pam

Pluggable Authentication Modules:可插入验证模块 比如一台服务器开着FTP、SSH等服务,那么新建一个用户默认就享有对以上的服务的操作权限,那么如果一个用户的帐号密码泄露会涉及到多个服务。 PAM最大的特点是实现了服务程序和认证机制的分…

PAM简介

PAM简介PAM是 PLUGGABLE AUTHENTICATION MODULES 的缩写.它是一套共享库.它可以让系统管理员选择应用程序怎样去认证用户,而不需要知道应用程序的内部的实现细节,也不需要重新编译代码。在PAM出现之前,一般的应用程序,在要去认证用…

Pacman基本使用

安装软件 pacman -S (软件名):安装软件,若有多个软件包,空格分隔pacman -S --needed (软件名):安装软件,若存在,不重新安装最新的软件pacman -Sy (软件名):安装软件前&a…

PAM4科普

PAM4科普 Bit Per SymbolGbps和Gbaud关系Unit Interval(UI)奈奎斯特频率 Data Rate(Gb/s Gagabit Per Second)PAMn LevelsBit Per SymbolSymbol Rate(Symbol Transfer Per Second)Unit Interval(UI)Nyquist FreqSNR Delta 图片来自于Intel发表的文章&am…

pam.d是干什么的

PAM(Pluggable Authentication Modules )是由Sun提出的一种认证机制。它通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需…