我想知道卸载使用apt install
.
我有“libpam-shield”https://packages.debian.org/stable/admin/libpam-shield安装在服务器(debian 9,运行 ssh、imap)上,用于阻止重复验证失败的 IP。 (我曾经apt install libpam-shield
从 Debian 稳定存储库安装它。)后来我决定不再使用它,所以我使用apt remove libpam-shield
.然而,即使在此之后,该文件/etc/pam.d/common-auth
仍包含未注释的行auth optional pam_shield.so
,这会导致在以下位置重复出现警告行/var/log/auth.log
:
PAM unable to dlopen(pam_shield.so): /lib/security/pam_shield.so: cannot open shared object file: No such file or directory
PAM adding faulty module: pam_shield.so
因此,我注释掉了上面提到的行common-auth
,但这开始导致 imap 和 ssh 身份验证尝试出现身份验证错误。
grep shield -r /etc/pam*
没有显示pam_shield
提到的任何其他位置。我还应该在 PAM 配置文件中进行哪些其他更改才能消除有关未找到的错误pam_shield.so
?我卸载后重新启动服务器libpam-shield
。
补充:以下是来自 的行/etc/pam.d/common-auth
。
auth [success=3 default=ignore] pam_unix.so nullok_secure
auth optional pam_shield.so
auth [success=1 default=ignore] pam_ldap.so use_first_pass
auth requisite pam_deny.so
auth required pam_permit.so
答案1
看着PAM 文档:
对于更复杂的语法,有效的控制值具有以下形式:
[值1=操作1 值2=操作2 ...]
[...]
actionN 可以采用以下形式之一:
[...]
N(无符号整数)
相当于 ok,但具有跳过堆栈中接下来的 N 个模块的副作用。请注意,不允许 N 等于 0(在这种情况下,它与 ok 相同)。
所以成功=n跳过n行。因此,如果删除该auth optional pam_shield.so
行,则必须少跳过一行,因此将第一行变为:
auth [success=2 default=ignore] pam_unix.so nullok_secure
目标是跳到pam_permit.so成功或下一个方法(除了pam_shield,我想知道它是否不应该放在后面pam_ldap效果很好,但我对此了解不够)。
但实际上所有这些都应该通过使用(从包中)命令在包删除时自动管理pam-auth-update
处理自动重新配置。也许在移除包裹的过程中出现了问题。
在我所有的安装和卸载尝试中libpam 屏蔽和libpam LDAP以任何顺序,配置总是按预期处理(删除包时相关行消失),所以我很困惑为什么它对你来说是错误的。
我建议:
- 确保你不会搬起石头砸自己的脚。始终有一种方法来保留或恢复访问权限
- 重新安装并重新卸载该软件包libpam 屏蔽尝试让发行版完成正确的设置。
- 跑步
pam-auth-update
。它不应该再在提供的列表中提及“PAM 防护:阻止尝试密码猜测的 IP”,否则仍然存在问题。如果仍然提到它,您可以选择禁用它,这样无论如何都会重建正确的配置。
更新:另外,正如手册页中所解释的那样:
该脚本尽一切努力尊重 /etc/pam.d/common-* 的本地更改。对模块选项列表的本地修改将被保留,并且在堆栈的托管部分中添加模块将导致 pam-auth-update 将配置文件视为本地修改,并且不会对配置文件进行进一步更改,除非给出--强制选项。
如果手动更改与 中的评论发生冲突/etc/pam.d/common-auth
,那么可能pam 身份验证更新将避免更改它。仍然可以使用以下命令将其重置为默认包处理:
pam-auth-update --force