PAM——完全禁用密码登录

PAM——完全禁用密码登录

我正在努力提高整个 IT 基础设施的安全性,因此我开始使用智能卡进行登录。我已成功使用私钥和 x.509 证书配置 PIV 智能卡并进行设置pam_pkcs#11这样智能卡登录就可以工作。正如文档中所述,我添加了以下内容:

auth    [success=2 default=ignore]      pam_pkcs11.so

至此etc/pam.d/common-auth,智能卡登录就可以工作了。但现在,如果读卡器和智能卡被移除,系统将退回到密码登录(在本例中为 gnome)。

所以我的目标是完全禁用密码登录,无论是否有图形界面。如果读卡器和智能卡未连接,则应无法登录。

我读到过一些文章说passwd -l $(whoami)某个帐户的密码会被设置为非活动状态,但我觉得这不对。

是否可以使用 来做到这一点pam,以便对整台机器禁用密码登录?

顺便说一句:现在我使用的是 ubuntu 19.10

答案1

该模块似乎pam_unix.so负责standard Unix authentication

PAM_UNIX(8)                           Linux-PAM Manual                           PAM_UNIX(8)

NAME
       pam_unix - Module for traditional password authentication

SYNOPSIS
       pam_unix.so [...]

DESCRIPTION
       This is the standard Unix authentication module. It uses standard calls from the
       system's libraries to retrieve and set account information as well as authentication.
       Usually this is obtained from the /etc/passwd and the /etc/shadow file as well if
       shadow is enabled.

因此,要完全禁用基于密码的身份验证,我认为注释目录pam_unix.so中包含的每一行/etc/pam.d就足够了。

答案2

有时您需要为用户设置无密码登录以进行自动登录、shell 脚本编写,以便您无需提供任何密码。这可以通过使用来实现密码命令与-d删除已分配密码的选项。

例子:

密码 -d 用户名

完成此更改后,/etc/shadow 字段中的密码字段将更改为空,以便无需密码即可从任何计算机登录到本地计算机。更新:一些用户指出这仅适用于本地登录,但对于远程登录这将不起作用。

答案3

以下是尝试禁用 PAM 时出现的问题的解决方案:

我是我的计算机的唯一用户,因此不喜欢 PAM,但如果您想避免 PAM,请使用其他地方描述的禁用命令(“跳过身份验证”)。一般来说,您必须拥有 root 登录才能执行此处描述的任何操作。

以下内容已使用 Ubuntu v.20.04.3 LTS 进行测试;它并不强烈依赖于系统,下面描述的过程应该适用于任何最新的 Ubuntu 操作系统。

不幸的是,Ubuntu 的当前版本在缺少某些 PAM 文件的情况下将无法运行:当这些文件被删除或禁用时,Ubuntu 将无法启动 - 并且尝试在 Ubuntu“恢复模式”下重新启动也不起作用。我不知道为什么 Ubuntu 中会设计这种对 PAM 的完全依赖;这似乎是某种设计错误。

无论如何,在本文中,我将描述如何从致命的 PAM 错误中恢复,而无需重新安装 Ubuntu 操作系统。

预赛

首先,您必须创建一张 Ubuntu 重新安装 DVD——它通常是一个可以从互联网上免费下载的 iso 文件(也可以由不同的供应商以象征性的价格出售)。还可以通过使用某些可下载应用程序(例如 K3b)修改不可引导 DVD 来创建可引导 DVD。

创建此可启动 DVD 后,您应该对其进行测试以确保它能够自行启动。启动后,它应该提示您尝试或安装 Ubuntu。退出或关闭计算机以避免更改任何内容。

其次,您也可以选择养成定期(例如每周)备份整个 Ubuntu 操作系统的习惯。然后,如果您必须重新安装 Ubuntu,您也可以安装最近备份的数据。

从操作系统错误中恢复

恢复的关键是永远不要在不知道操作系统在没有它们的情况下运行的情况下删除操作系统文件。当考虑删除操作系统文件(例如,PAM 文件)时,始终应保留已安装的文件,并通过首先重命名该文件来禁用该文件,然后重新启动并测试效果。

我首选的重命名是将 (file).exe 更改为 (file).exe_JMW_WAS,因为名为 (whatever).exe_JMW_WAS 的文件不是 Ubuntu(或 Windows)可执行文件。对所有 *_JMW_WAS 进行查找可以轻松纠正重命名错误(我使用“find / -name *_JMW_WAS -print”)。

禁用多个已安装的 PAM 文件将阻止重新启动;但是,如何纠正这样的错误呢?禁用或删除某些 PAM 文件后,正常重新启动将挂起,甚至恢复模式重新启动也会打印致命错误消息并且永远不会继续。

第一:不要删除任何PAM文件;相反,重命名它以防止执行。

第二:如果发生灾难,请尝试 Ubuntu 恢复模式。如果您发现恢复模式不起作用,请使用重新安装 DVD 重新启动。

经过一段时间的延迟后,这张 DVD 将为您提供 (a) 尝试 Ubuntu 或 (b) 安装 Ubuntu 的选项。选择试用选项。

经过一段时间的延迟后,您将看到一些要运行的手动命令;选择“文件”命令。

文件显示有一个最终的“其他位置”选项,它将列出已安装的操作系统。此列表将包括您无法启动的 Ubuntu 操作系统以及 Windows(如果已安装)。

以 root 身份登录并使用可用的终端命令,您现在可以选择无法启动的文件 Ubuntu 操作系统并 cd 到包含 PAM 或您之前错误修改或禁用的其他文件的 /etc 或 /lib 目录 - 并且,当然,您重命名但没有删除。

将相应的文件重命名回原来的可执行文件名称,瞧!您的 Ubunto 操作系统现在将正常重启!

相关内容