pam:登录(不成功)时的操作

pam:登录(不成功)时的操作

我知道如何通过向/etc/profile.但只有登录成功后才会执行。我希望即使登录失败也能执行操作。例如运行一个脚本script.sh

我怀疑,这可以在 中设置pam,但我不知道从哪里开始。

答案1

您可以使用pam_exec模块和一些PAM技巧来做到这一点。PAM各个发行版的配置通常有很大不同,因此您必须了解您的配置并尝试调整它。

对于 Debian(使用 7.1 进行测试)编辑/etc/pam.d/common-auth(为了清晰起见,省略了注释)

  • auth    [success=1 default=ignore]    pam_unix.so nullok_secure
    auth    requisite                     pam_deny.so
    auth    required                      pam_permit.so
    
  • auth    [success=2 default=ignore]    pam_unix.so nullok_secure
    auth    optional                      pam_exec.so /common-auth-pam_exec
    auth    requisite                     pam_deny.so
    auth    required                      pam_permit.so
    

实际上发生的是,如果pam_unix.so成功,它将跳过以下 2 个模块并跳转到pam_permit.so始终会成功的模块。如果身份验证失败,PAM首先继续执行我们的脚本,然后执行pam_deny.该模块总是会失败,并且由于它设置了requisite控制标志,因此不会执行其他模块。

为了完整起见,程序通过pam_exec使用调用进程的真实用户 ID 运行而生成(setuid选项使其使用有效用户 ID 运行),并且进程环境如下所示

PAM_SERVICE=login
PAM_RHOST=
PAM_USER=<username_here>
PAM_TYPE=auth
PAM_TTY=/dev/tty1

相关内容