我按照网上的建议设置了一个在密码尝试失败后运行的脚本。我在/etc/pam.d/common-auth
auth [default=ignore] pam_exec.so seteuid /root/script
行后
auth [success=1 default=ignore] pam_unix.so nullok_secure
我现在无法以任何用户身份登录:
$ su root
Password:
su: Authentication failure
为什么我无法再通过这条新进入的线路进行连接?
完整文件 ( /etc/pam.d/common-auth
):
#
# /etc/pam.d/common-auth - authentication settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authentication modules that define
# the central authentication scheme for use on the system
# (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the
# traditional Unix authentication mechanisms.
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules. See
# pam-auth-update(8) for details.
# here are the per-package modules (the "Primary" block)
auth [success=1 default=ignore] pam_unix.so nullok_secure
auth [default=ignore] pam_exec.so seteuid /root/script
# here's the fallback if no module succeeds
auth requisite pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth required pam_permit.so
# and here are more per-package modules (the "Additional" block)
答案1
success=1
意味着,如果成功,PAM 应该跳过下一个模块并转到下一个模块 ... 即pam_deny.so
。通过在pam_unix
和之间插入一个模块pam_deny
,跳过计数会发生变化。如果您想在 之后添加一个在失败时运行的模块,请success=2
使用。pam_unix.so