Linux--PAM机制

Linux–PAM机制


文章目录

  • Linux--PAM机制
  • 一、PAM是什么?
  • 二、PAM模块设置语法
    • 2.1 /etc/pam.d/里面的配置文件
      • 2.1.1第一个字段:验证类别(Type)
      • 2.1.2第二个字段:验证的控制标识(control flag)
  • 三、常用模块简介
  • 总结


一、PAM是什么?

PAM(Pluggable Authentication Modules,插入式验证模块),可以说是一套应用程序编程接口(API),它提供了一连串的验证机制,只要用户将验证阶段的需求告知PAM以后,PAM就能够返回用户验证的结果(成功或是失败)。由于PAM仅仅是一套验证的机制,又可以提供给其他程序调用引用,因此无论你使用什么程序都可以使用PAM来进行验证。PAM用来验证的数据称为模块(Modules),每个PAM模块的功能都不一样。它允许系统管理员配置多个身份验证方法,并控制每个身份验证方法的顺序。PAM 使用一个层次结构来组织身份验证模块,管理员可以根据需要加载、卸载和组合这些模块,以定制系统的身份验证策略。

二、PAM模块设置语法

2.1 /etc/pam.d/里面的配置文件

对于该文件中,除注释外,每一行都是一个独立的验证流程,每一行可以区分为三个字段,分别是验证类别(type)控制标准(flag)PAM模块与该模块的参数

2.1.1第一个字段:验证类别(Type)

分为如下四种:

  • auth 是authentication(认证)的缩写,故此类别主要用来检验用户的身份,这种类别通常是需要密码来检验的,所以后续接的模块是用来检验用户身份的。
  • account(账号) 大部分用于进行authorization(授权),这种该类别主要检验用户是狗具有正确的权限。
  • session 是会话期间的意思,所以session主要管理的就是用户在这次登录(或者使用这个命令)期间,PAM所给予的环境设置,这个类别通常用于记录用户与注销时的信息。
  • password 就是密码,所以这种类别主要在提供验证的修订任务,举例来说就是修改密码。

2.1.2第二个字段:验证的控制标识(control flag)

  • required 此验证若成功则带有success的标志,若失败则有failure的标志,但无论成功或者是失败都会继续后续的验证流程。因为后续的流程都可以进行,因此相当有利于数据的记录(log),这也是PAM最常用required的原因。
  • requisite 若验证失败则立刻返回源程序failure的标志并终止后续验证,若验证成功则带有success的标志并继续后续验证流程,由于失败就终止,故失败时所产生的PAM信息就无法通过后续的模块来记录。
  • sufficient 验证成功就立刻返回success给原程序,并终止后续的验证流程。与requisite完全相反。
  • optional 这个模块大多在显示信息而已,并不用在验证方面。
    Linux--PAM机制_第1张图片

三、常用模块简介

  • /etc/pam.d/* :每个程序的PAM配置文件
  • /lib64/security/*:PAM模块文件的实际放置目录
  • /etc/security/*:其他PAM环境的配置文件
  • /usr/share/doc.pam-*/:详细的PAM说明文件

以下是部分常用模块介绍:

  • pam_securetty.so:限制系统管理员(root)只能够从安全的(secure)终端机登陆﹔那什么是终端机?例如tty1, tty2等就是传统的终端机设备名称。那么安全的终端机设置呢?就写在/etc/securetty这个文件中。你可以查阅一下该文件,就知道为什么root 可以从tty1~tty7登陆,但却无法通过telnet登陆 Linux主机
  • pam_nologin.so:这个模块可以限制一般使用者是否能够登陆主机之用。当/etc/nologin这个文件存在时﹐则所有一般使用者均无法再登陆系统了!若letc/nologin存在﹐则一般使用者在登陆时,在他们的终端机上会将该文件的内容显示出来!所以,正常的情况下﹐这个文件应该是不能存在系统中的。但这个模块对root以及已经登陆系统中的一般帐号并没有影响。(注意喔!这与letc/nologin.txt并不相同!)
  • pam_selinux.so: SELinux是个针对程序来进行细部管理权限的功能,由于SELinux会影响到使用者执行程序的权限﹐因此我们利用PAM模块﹐将SELinux暂时关闭﹐等到验证通过后,再予以启动!.
  • pam_console.so:当系统出现某些问题﹐或者是某些时刻你需要使用特殊的终端接口(例如 RS232之类的终端连线设备)登陆主机时,这个模块可以帮助处理一些文件权限的问题﹐让使用者可以通过特殊终端接口(console)顺利的登陆系统。
  • pam_loginuid.so∶我们知道系统帐号与一般帐号的UID是不同的!一般帐号UID均大于1000才合理。因此,为了验证使用者的UID真的是我们所需要的数值﹐可以使用这个模块来进行规范!
  • pam_eny.so∶用来设置环境变量的一个模块,如果你有需要额外的环境变量设置,可以参考letc/security/pam_env.conf这个文件的详细说明。
  • pam_unix.so:这是个很复杂且重要的模块﹐这个模块可以用在验证阶段的认证功能﹐可以用在授权阶段的帐号授权管理,可以用在会议阶段的登录文件记录等,甚至也可以用在密码更新阶段的检验!非常丰富的功能!这个模块在早期使用得相当频繁
  • pam_pwquality.so:可以用来检验密码的强度!包括密码是否在字典中﹐密码输入几次都失败就断掉此次连线等功能,都是这模块提供的!最早之前其实使用的是pam_cracklib.so这个模块,后来改成pam_pwquality.so这个模块,但此模块完全相容于pam_cracklib.so,同时提供了/etc/security/pwquality.conf这个文件可以额外指定默认值!比较容易处理修改!

总结

以上就是这节的学习内容,介绍了Linux中的PAM(Pluggable Authentication Modules)机制,唐怡佳继续加油~

你可能感兴趣的:(Linux,嵌入式,linux,服务器,运维)