我们有几台 Linux 服务器,它们使用 PAM 和 Kerberos 5 在 Windows Active Directory 服务器上验证 Linux 用户密码。我们使用的 Linux 发行版是 CentOS 6。
在一个系统上,我们有几个版本控制系统,如 CVS 和 Subversion,它们都通过 PAM 对用户进行身份验证,以便用户可以使用他们的普通 Unix 或 Windows AD 帐户。
自从我们开始使用 Kerberos 进行密码验证以来,我们发现客户端计算机上的 CVS 建立连接的速度通常要慢得多。CVS 会对每个请求(例如 cvs diff、log、update...)进行用户身份验证。
是否可以缓存 kerberos 使用的凭据,这样每次用户执行 cvs 操作时就不需要询问 Windows AD 服务器?
我们的 PAM 配置 /etc/pam.d/system-auth 如下所示:
auth required pam_env.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth sufficient pam_krb5.so use_first_pass
auth required pam_deny.so
account required pam_unix.so broken_shadow
account sufficient pam_succeed_if.so uid < 500 quiet
account [default=bad success=ok user_unknown=ignore] pam_krb5.so
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password sufficient pam_krb5.so use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_krb5.so
答案1
答案2
任何通过 PAM 进行的身份验证都会存在此问题。避免此问题的唯一方法是对服务本身进行 Kerberos 化,而不是使用 pam 堆栈来实现身份验证。
一种方法是使用 ssh 访问 cvs 存储库并使用 kerberos 对 ssh 进行身份验证。(google ssh GSSAPI)。
如果您不想允许 ssh 访问托管 cvs 存储库的服务器,可以使用 CVS 服务器的 Kerberized 版本。有关示例,请参阅