星期二, 三月 20, 2007

PAM stack && sufficient

关于 PAM 的 stack 有一个概念突然觉得有点模糊,比如 sufficient 控制标志,资料上的解释都是:如果 sufficient 回报认证通过,则不再调用其他模块。那么如果在 auth 中的 sufficient 模块通过,是否意味着就不用再做其他检查,比如 accout/session/password 的检查了。为了验证这一点,修改 /etc/pam.d/system-auth:
sh# vi /etc/shadow
root:**********:13524:0:99999:7::7:

sh# cat system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required /lib/security/$ISA/pam_env.so
auth sufficient /lib/security/$ISA/pam_unix.so likeauth nullok
auth required /lib/security/$ISA/pam_deny.so

account required /lib/security/$ISA/pam_unix.so
account sufficient /lib/security/$ISA/pam_succeed_if.so uid < 100 quiet
account required /lib/security/$ISA/pam_permit.so

password requisite /lib/security/$ISA/pam_cracklib.so retry=3
password sufficient /lib/security/$ISA/pam_unix.so nullok use_authtok md5 shadow
password required /lib/security/$ISA/pam_deny.so

session required /lib/security/$ISA/pam_limits.so
session required /lib/security/$ISA/pam_unix.so
那么现在是不能登录的,这说明 auth pam_unix.so 的 sufficient 只影响了 auth 部分,而 account 部分还是要再检查一遍的。如果注销上面的 account pam_unix.so 一行,则可以进行登录了。

没有评论: