我继承了这个 pam 配置并对其进行审核,同时还添加了 pam_access。
我正在尝试具体理解auth
pam_succeed_if
和auth
pam_localuser
线条。
#%PAM-1.0
# This file is auto-generated, but maintained in ansible.
# Changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth required pam_faildelay.so delay=2000000
# vvvvvv
auth [default=1 ignore=ignore success=ok] pam_succeed_if.so uid >= 200 quiet
auth [default=1 ignore=ignore success=ok] pam_localuser.so
# ^^^^^^
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 200 quiet_success
auth sufficient pam_sss.so forward_pass
auth required pam_deny.so
account required pam_access.so
account required pam_unix.so broken_shadow
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 200 quiet
account [default=bad success=ok user_unknown=ignore] pam_sss.so
account required pam_permit.so
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password sufficient pam_sss.so use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
-session optional pam_systemd.so
# session optional pam_oddjob_mkhomedir.so umask=0077
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_sss.so
我一直很难找到该[...]
部分的文档,特别是它的default=1
作用。它跳过下一行是我的理解吗?
如果我们的 uid >= 200,那么我们通过 OK,继续,跳过 pam_localuser,然后检查 pam_unix。
如果我们的 uid < 200,那么我们就会转向 pam_localuser。
在 pam_localuser 中,如果为 true,我们会跳过 pam_unix(???这样可以吗???)
这似乎过于复杂,我不太明白本节的重点是什么。
有人可以解释一下意图吗?
答案1
一个正整数来default
跳过规则,
modules/pam_succeed_if/pam_succeed_if.8.xml
根据
linux-pam项目:
<para>
Given that the type matches, only loads the othermodule rule if
the UID is over 500. Adjust the number after default to skip
several rules.
</para>
<programlisting>
type [default=1 success=ignore] pam_succeed_if.so quiet uid > 500
type required othermodule.so arguments...
</programlisting>
其他操作是非严格正整数,通常通过文本标签,例如default=die
或default=ignore
;这些令牌操作列在 中libpam/pam_tokens.h
。
pam_localuser
跳过pam_unix
,因为大概 uid < 200 是不需要通过密码哈希等进行身份验证的本地系统帐户,这些是auth
部分规则。通常此类角色帐户还将具有false
或nologin
shell 集。