我有一台使用 pam_ldap 和 pam_krb5 设置的 CentOS 6.4 机器。它被配置为使用我们的 Active Directory 服务器进行身份验证。我可以使用 AD 帐户通过 SSH 连接到机器。
我没有设置任何类型的 keytab 文件。
我在 CentOS 机器上为 AD 用户设置了一个 crontab,它每分钟将一些数据写入文件。作业写入的文件夹位于 NFS 共享上,并且该文件夹已锁定,因此只有特定 AD 组的成员才能访问它。有问题的 AD 用户是该组的成员,并且在 CentOS 机器上没有本地帐户。
当 AD 用户未登录时,cron 如何继续有权以 AD 用户身份运行作业?
如果您使用的是启用了 kerberos 的 NFSv4(如果您是,我会非常惊讶),那么您需要创建某种用户密钥表并在 cron 作业开始时使用 kstart 之类的东西来获取 kerberos tgt。否则,您应该不需要任何 kerberos 凭据来访问 NFS 文件系统。
这个问题在 AFS 环境中一直存在,并且有一些标准的解决方案。通常,您创建一个备用主体以放入 keytab 并将两个主体映射到相同的 unix uid。(即,我在 cron 系统上为 fred/[email protected] 创建了一个 keytab)并使用适当的工具将 kerberos 主体映射到 [email protected] 的相同 unix uid。
NFSv3?没有进行身份验证。NFSv3 接受客户的话,即用户就是他们所说的那个人。这也是完全不安全的——如果我对一个盒子有 root 访问权限,我可以 su 并访问 NFS 共享上的用户文件,即使该共享是 root_squash。
Cron 实际上并没有以 DOMAIN\user 身份运行该作业,而是以 NFSv3 所关心的 UID # 身份运行它。
现在,如果您正在安装 CIFS/NFSv4 共享,它应该会失败。