Linux–PAM机制
文章目录
一、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
这个模块大多在显示信息而已,并不用在验证方面。
三、常用模块简介
/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)机制,唐怡佳继续加油~