PAM模块初识

1. 简介

​ PAM(Pluggable Authentication Modules)是由Sun提出的一种认证机制。

​ PAM模块的中文全称为可拔插认证模块,从名字就可以看出该模块的一些特性和作用——即可拔插和用于系统认证

​ 准确的来说,PAM模块通过一套动态链接库和一套统一的API,将系统提供的服务和其认证分离,并将其认证统一托管给PAM模块,来实现更加快捷方便的统一管理不同服务之间的认证机制,另外,使用PAM模块也便于向系统中添加新的认证手段。

​ PAM模块最初集成在Solaris中,目前已经移植到其他系统中。

2. 结构

​ PAM模块大致可以分为三个部分。

​ 应用开发者使用PAM SPI(Service Module API)来编写认证模块,将不同的认证机制加入到系统中。

​ 系统管理员通过PAM配置文件来制定认证策略。

​ PAM库(libpam)则负责读取配置文件,并以此为根据将服务程序的相应的认证方法联系起来。

3. PAM具体配置

​ PAM的配置文件包括/etc/pam.conf和/etc/pam.d/这两个,其中后者是一个文件夹,并在其中有多个以服务名为名的文件来对不同的服务进行配置(且在RedHat中,后者配置的优先级高于前者)。

​ 在pam.conf中,配置主要有以下几列来完成。

service-namemodule-typecontrol-flagmodule-patharguments
服务名管理方式应当如何处理结果服务程序路径传入参数

下面对这几部分进行解释。

  1. service-name

    正如其名,该列填入的参数正是服务名。而如果该列为OTHER则代表其后的配置适用于任何没有在该pam模块中配置的应用。

  2. modeule-type

    这一列需要填入PAM所支持的四种管理方式之一,分别是auth,account,session,password,同一个服务可以调用多个PAM模块进行认证,这些模块构成一个stack。

    PAM支持的四种管理方式:

    1. 认证管理(authentication management)

      主要是接受用户名和密码,进而对该用户的密码进行认证,并负责设置用户的一些秘密信息。

    2. 账户管理(account management)

      主要是检查账户是否被允许登录系统,账号是否已经过期,账号的登录是否有时间段的限制等。

    3. 密码管理(password management)

      主要是用来修改账户的密码。

    4. 会话管理(session management)

      主要是提供对会话的管理和记账(accounting)。

  3. control-flag

    这一列需要告诉PAM库如何处理与服务相关的PAM模块的成功或失败情况。他有四种可能的值:required,requisite,sufficient,optional。

    required表示本模块必须返回成功才能通过认证,但是如果模块返回失败,失败结果也不会立即通知用户,而是要等到同一stack中的所有模块全部执行完毕再将失败结果返回给应用程序。

    requisite与required类似,该模块必须返回成功才能通过认证,但是一旦该模块返回失败,将直接将控制权返回给应用程序。

    注:requisite只有RedHat支持,Solaris不支持。

    sufficient表示本模块返回成功已经足以通过身份认证的要求,不必再执行统一stack内的其他模块,但是如果本模块返回失败的话可以忽略。

    optional表示本模块是可选的,他的成功与否一般不会对身份认证起到关键作用,其返回值一般被忽略。

  4. module-path用来指明本模块对应的应用程序的路径名,一般使用绝对路径,而如果没有使用绝对路径的话,默认是/usr/lib/security下的相对路径。

  5. argument是用来传递给 该模块的参数,一般来说每个 模块的参数都不相同,可以由该模块的开发者自己定义,但也有以下几个共同的参数:

    ​ debug 该模块应当用syslog()将调试信息写入到系统日志文件中。

    ​ no_warn表明该模块不应把警告信息发送给应用程序。

    ​ use_first_pass表明该模块不能提示用户输入密码,而应使用前一个模块从用户那里得到的密码。

    ​ try_first_pass表明该模块首先应当使用前一个模块从用户那里得到的密码,如果该密码验证不通过,再提示用户输入新的密码。

    ​ use_mapped_pass该模块不能提示用户输入密码,而是使用映射过的密码。

    ​ expose_account允许该模块显示用户的账号名等信息,一般只能在安全的环境下使用,因为泄露用户名会对安全造成一定程度的威胁。

​ 而如果使用/etc/pam.d/来进行配置:

​ 该目录下的每个文件名对应服务名,而其配置文件中并不存在service-name这一栏,其余部分则与使用pam.conf的配置完全相同。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"*** libpam missing" 是一个错误信息,表明缺少了一个名为 "*** libpam" 的库文件。 libpam 是一种用于 Linux 和类Unix操作系统上进行身份验证和访问控制的库。它提供了一个可编程的身份验证模块PAM),允许系统管理员根据需要配置和定制用户登录时的身份验证方式。 当系统出现 "*** libpam missing" 错误时,可能是由以下原因之一引起的: 1. 未正确安装 libpam 库:在某些情况下,系统可能没有正确安装 libpam 或安装的版本不兼容。可以通过重新安装 libpam 库来解决此问题。 2. 缺少所需的依赖项:libpam 可能依赖其他库或软件包,如果缺少这些依赖项,就会出现 "*** libpam missing" 错误。解决方法是安装所需的依赖项。 3. 错误的配置文件:某些情况下,libpam 相关的配置文件可能被修改或删除,导致出现错误。解决方法是检查相关配置文件的完整性,并在需要时进行修复。 为了解决 "*** libpam missing" 错误,可以执行以下几个步骤: 1. 确认 libpam 是否正确安装:使用适当的包管理器检查系统是否已正确安装 libpam。 2. 检查依赖项:查看 libpam 的依赖关系并确保所需的依赖项已正确安装。可以查阅相关文档或使用包管理器来查找和安装缺少的依赖项。 3. 恢复配置文件:检查 libpam 相关的配置文件是否被修改或删除,并根据需要进行修复或恢复。 总之,"*** libpam missing" 错误表示缺少 libpam 库文件,可能是由于未正确安装、缺少依赖项或错误的配置文件引起的。通过重新安装、安装依赖项和修复配置文件,可以解决这个问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值