PAM模块简介

PAM模块简介
PAM(Pluggable Authentication Modules,插入式验证模块)是 Linux 系统中的一种模块化认证机制,可以通过 PAM 模块来控制系统用户的身份验证和授权,同时也可以控制用户访问系统时可以使用的服务和资源。PAM 模块可以支持多种认证方式,如本地密码、LDAP、Kerberos 等,同时也支持多种授权方式,如限制登录时间、限制登录来源 IP 等。

PAM 模块的主要作用是将认证机制与服务分离开来,使得管理员可以通过添加或删除 PAM 模块来控制用户访问系统时的身份验证和授权。PAM 模块的配置文件为/etc/pam.d/目录下的文件,每个文件对应一个服务,例如 ssh、login 等。在 PAM 配置文件中,可以指定使用哪些 PAM 模块来进行认证和授权,以及这些模块的顺序和参数。
PAM 模块可以极大地增强 Linux 系统的安全性和灵活性,可以根据具体需求来配置 PAM 模块,以实现更加精细的访问控制和认证机制。

PAM模块设置语法
PAM借由一个与程序相同的文件名的配置文件来完成一连串的认证分析需求,我们同样以passwd这个命令调用PAM来说明。当你执行passwd后,这个程序调用PAM的流程是:

用户开始执行PAM模块进行验证
passwd调用PAM模块进行验证
PAM模块会到/etc/pam.d/找寻与程序(passwd)同名的配置文件
根据/etc/pam.d/passwd内的设置,引用相关的PAM模块逐步进行验证分析。
将验证结果(成功、失败以及其他信息)返回给passwd这个程序
passwd这个程序会根据PAM返回的结果决定下一个操作(重新输入新密码或通过验证)
由上面的说明得知,我们知道重点其实是/etc/pam.d/里面的配置文件,以及配置文件所调用的PAM模块进行的验证工作。前面我们谈到passwd命令,那我们来看看/etc/pam.d/passwd这个配置文件的内容是怎么样的吧

[root@localhost ~]# cat /etc/pam.d/passwd
#%PAM-1.0
auth include system-auth # 每一行都是一个验证的过程
account include system-auth
password substack system-auth
-password optional pam_gnome_keyring.so use_authtok
password substack postlogin

验证类别 # 控制标准 # PAM模块与该模块的参数

1
2
3
4
5
6
7
8
当执行 cat /etc/pam.d/passwd 命令时,会输出 /etc/pam.d/passwd 文件的内容。该文件是 Linux 系统中的一个 PAM(Pluggable Authentication Modules)配置文件,用于指定用户修改密码时使用的 PAM 模块。具体输出内容如下:

#%PAM-1.0
auth include system-auth
account include system-auth
password substack system-auth
-password optional pam_gnome_keyring.so use_authtok
password substack postlogin

模块类型 # 控制标志 # 模块路径

1
2
3
4
5
6
7
其中,#%PAM-1.0 是 PAM 配置文件的头部信息,指定了 PAM 的版本号为 1.0。
接下来是几行 PAM 模块的配置,每行的格式为:

module_type control_flag module_path [module_arguments]

module_type:模块类型,包括 auth、account、password、session 等。
control_flag:控制标志,用于指定模块的行为,包括 include、substack、required、sufficient、optional 等。
module_path:模块路径,指定使用的 PAM 模块的路径。
module_arguments:模块参数,指定传递给 模块的参数信息。
1
2
3
4
5
6
7
对于 /etc/pam.d/passwd 文件中的模块配置,具体含义如下:

第二行 auth include system-auth:指定使用 system-auth 配置文件中的 auth 模块进行用户身份验证。

第三行 account include system-auth:指定使用 system-auth 配置文件中的 account 模块进行账户检查。

第四行 password substack system-auth:指定使用 system-auth 配置文件中的 password 模块进行密码验证和更改,但只是作为子堆栈,即在最终确认密码更改前,要求先通过 system-auth 模块的认证。

第五行 -password optional pam_gnome_keyring.so use_authtok:指定使用 pam_gnome_keyring.so 模块来管理 GNOME Keyring 密码。当用户在 GNOME 环境下使用 passwd 命令修改密码时,该模块会将新密码同步到 GNOME Keyring 中。注意,这里使用了 - 号来标记该模块为可选模块,如果该模块无法正常工作,系统不会报错,而是继续执行后面的模块。

第六行 password substack postlogin:指定使用 postlogin 模块作为子堆栈,即在用户密码已经更改成功后,执行 postlogin 模块的相关操作,如打印最后一次登录信息等。

Linux PAM模块中的控制标志用于控制PAM模块认证过程中的行为。这些控制标志分为四种类型,分别是required、requisite、sufficient和optional。

required:表示必须通过认证才能进行后续操作,如果认证失败,则直接返回失败并且不会执行后续的认证方法。

requisite:表示必须通过认证才能进行后续操作,如果认证失败,会立即返回失败且不会执行后续的认证方法。与required不同的是,如果前面的requisite标志返回失败,后续的requisite标志也不会继续执行。

sufficient:表示认证成功即可通过,如果认证成功,则直接返回成功并且不会执行后续的认证方法。如果前面的sufficient标志返回成功,则后面的标志将不会继续执行。

optional:表示不一定要通过认证,如果认证失败,则会继续执行后续的认证方法,但是如果认证成功,则后续的认证方法将不会继续执行。

你可能感兴趣的:(java,后端,linux)