如何检查 Linux 中是否配置了 PAM 模块

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何检查 Linux 中是否配置了 PAM(可插拔认证模块,Pluggable Authentication Modules)模块。我们将探索 PAM 配置文件的标准位置,并检查其内容,以了解不同服务如何利用 PAM 进行认证和其他安全功能。

你将首先列出 /etc/pam.d/ 目录的内容,以识别特定服务的 PAM 配置文件。接下来,你将学习如何使用 cat 命令查看这些配置文件的内容,以了解应用于某个服务的特定 PAM 模块和规则。最后,你将探索 /lib/security 目录,查看系统上可用的 PAM 模块文件。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") subgraph Lab Skills linux/ls -.-> lab-558745{{"如何检查 Linux 中是否配置了 PAM 模块"}} linux/cat -.-> lab-558745{{"如何检查 Linux 中是否配置了 PAM 模块"}} end

使用 ls /etc/pam.d 检查 PAM 配置

在这一步,我们将开始探索 PAM(可插拔认证模块,Pluggable Authentication Modules)。PAM 是一个强大的框架,它允许系统管理员配置应用程序如何对用户进行认证。应用程序无需自行处理认证,而是可以使用 PAM,它提供了一种集中且灵活的方式来管理认证、授权和账户管理。

可以将 PAM 视为一组可互换的认证构建块。你可以插入不同的模块来处理不同的认证方法(如密码、智能卡,甚至生物识别技术),而无需更改应用程序本身。

PAM 的配置文件通常位于 /etc/pam.d/ 目录中。该目录中的每个文件通常对应一个使用 PAM 的特定服务或应用程序,例如 loginsudossh 等。

让我们列出 /etc/pam.d/ 目录的内容,看看该系统上存在哪些 PAM 配置文件。我们将使用 ls 命令,该命令用于列出目录内容。

如果终端尚未打开,请打开它。记住,你可以在桌面左侧找到 Xfce Terminal 图标。

输入以下命令并按回车键:

ls /etc/pam.d/

你应该会看到一个文件列表,类似于以下内容(确切的列表可能会因系统配置略有不同):

atd
chfn
chpasswd
chsh
cron
...
sudo
su
systemd-user
...

这里列出的每个文件都是特定服务的 PAM 配置文件。例如,sudo 文件包含 sudo 命令的 PAM 配置,而 login 文件包含用户登录的配置。

通过列出这些文件,你可以了解系统上哪些服务正在使用 PAM 进行认证和其他与安全相关的任务。

点击 继续 进入下一步。

使用 cat /etc/pam.conf 验证 PAM 设置

在上一步中,我们查看了 /etc/pam.d/ 目录下的各个 PAM 配置文件。虽然大多数现代系统使用 /etc/pam.d/ 目录结构,但一些较旧的配置或特定设置可能仍会使用单一的集中式配置文件:/etc/pam.conf

如果 /etc/pam.conf 文件存在且被使用,它会包含不同服务、模块类型、控制标志以及要使用的特定 PAM 模块的规则。该文件中的每一行通常为特定服务定义一条规则。

让我们检查 /etc/pam.conf 文件是否存在,并使用 cat 命令查看其内容。cat 命令用于显示文件内容。

在终端中输入以下命令并按回车键:

cat /etc/pam.conf

在这个系统上,你可能会看到输出表明该文件不存在或为空。这是因为,如前所述,系统主要使用 /etc/pam.d/ 目录进行 PAM 配置。

cat: /etc/pam.conf: No such file or directory

此输出证实了系统依赖 /etc/pam.d/ 目录下的各个文件,而不是单一的 /etc/pam.conf 文件。在处理不同的 Linux 发行版或较旧的系统时,理解这种区别很重要。

尽管 /etc/pam.conf 在这个特定系统上未被使用,但了解其存在和用途对于全面理解 PAM 很有价值。

点击 继续 进入下一步。

检查 /lib/security 中的 PAM 模块

在前面的步骤中,我们查看了 PAM 配置文件。这些文件告诉 PAM 针对不同的服务要使用哪些模块。现在,让我们来看看实际的 PAM 模块在系统中的存储位置。

PAM 模块通常是共享库(以 .so 结尾的文件),其中包含用于特定认证、授权、账户或会话管理任务的代码。这些模块通常位于 /lib/x86_64-linux-gnu/security//lib/security/ 这样的目录中。在这个系统中,它们位于 /lib/x86_64-linux-gnu/security/

让我们列出 /lib/x86_64-linux-gnu/security/ 目录的内容,以查看可用的 PAM 模块。我们将再次使用 ls 命令。

在你的终端中输入以下命令并按回车键:

ls /lib/x86_64-linux-gnu/security/

你会看到一长串文件,每个文件代表一个不同的 PAM 模块。文件名通常以 pam_ 开头,后面跟着模块的名称,以 .so 结尾。

pam_access.so
pam_cap.so
pam_chauthtok.so
pam_cracklib.so
...
pam_unix.so
pam_usw.so
pam_winbind.so

例如,pam_unix.so 是一个用于传统 Unix 密码认证的常用模块。pam_cracklib.so 用于检查密码强度。

探索这个目录能让你了解通过 PAM 在这个系统上可用的不同认证和安全功能。/etc/pam.d/ 中的配置文件会引用这些 .so 文件,以定义每个服务的认证过程。

理解 /etc/pam.d/ 中的配置文件与 /lib/x86_64-linux-gnu/security/ 中的模块文件之间的关系,是理解 PAM 工作原理的关键。

点击 继续 完成本次实验。

总结

在本次实验中,我们开始探索 Linux 中的 PAM(可插拔认证模块,Pluggable Authentication Modules)。我们了解到,PAM 为管理各种服务的认证、授权和账户管理提供了一个灵活的框架。我们首先使用 ls 命令列出 /etc/pam.d/ 目录的内容,以识别不同服务(如 sudologinssh)的各个 PAM 配置文件。这让我们初步了解了系统上哪些服务正在使用 PAM。