为什么 Mac OSX Lion 会丢失登录/网络凭据?

Lar*_*ala 13 networking authentication mac-osx opendirectory

症状

在工作中,我们安装了 OSX 10.7.3,每隔一段时间我就会看到以下行为:

  1. 如果屏幕被锁定,则不接受同一用户/通行证的多次尝试。

  2. 如果屏幕已解锁,则打开新的 bash 术语可能会产生如下提示:

    `I have no name$`
    
    Run Code Online (Sandbox Code Playgroud)

    或者

    lkyrala$ ssh lkyrala@ah-lkyrala2u 
    You don't exist, go away!
    
    Run Code Online (Sandbox Code Playgroud)

即使我们的 Mac 正常工作,这里的每个人也必须登录两次。启动后第一次总是失败,但第二次(使用相同的密码,不更改任何内容,再次按回车键)成功。奇怪的?

解决方法

有一些变通方法可以解决眼前的问题,但不会阻止它再次发生:

  1. 等待(可能一两个小时),问题有时会自行消失。

  2. 杀死'opendirectoryd'并让它重新启动。(来自Apple 支持社区:用户 ID(不是数据)突然删除?

  3. 按住电源按钮重置计算机

更新 10/4/2012

我们的网络管理员怀疑与 lockd 有牵连。lockd 显然使用 UDP,当网络拥塞时,数据包会丢失,从而导致挂起行为。他们正在研究减少拥堵的措施。如果有问题的文件访问恰好是 Active Directory 身份验证句柄,那么所有这些不同的部分开始组合在一起。

讨论

现在,上面的证据指出了 opendirectory 和登录凭据的问题。其他一些人报告有这些登录问题,但很难确定实际问题出在哪里(Mac 或网络环境?)。

我应该补充一点,大多数网络都是 Windows 机器,但我们也有不少 Mac 和 Linux 机器,但我不确定网络身份验证如何从各个域映射到其他域的详细信息......所有我知道我们的网络凭据在 Windows 域以及 mac 和 linux 登录中都有效——所以有些东西正在连接不同的系统,或者使用相同的全局身份验证系统。

附加细节

不幸的是,我没有设置这台 Mac,我们的 IT 部门做了,所以我不完全确定身份验证是如何工作的。我确实知道这是网络登录(这在我使用 Mac 的经验中是不寻常的,它们通常具有连接到外部资源的本地帐户)但在这里,我们的主文件夹在网络上,而不是本地。在我的 linux 安装下,连接到网络涉及 yp/NIS,(它允许我们从任何机器自动挂载我们的网络文件系统的一部分),并且 opendirectoryd.log 似乎证实了这涉及...

/var/log/opendirectoryd.log* 显示:

2012-04-04 01:29:12.370 EDT - ddddd.dddddd.dddddd.dddddd - Client: automount, UID: 0, EUID: 0, GID: 0, EGID: 0
2012-04-04 01:29:12.370 EDT - ddddd.dddddd.dddddd.dddddd, Node: /NIS/Domain, Module: nis - could not determine map for rectype 'mounts' attribute 'byname'
2012-04-04 01:32:04.504 EDT - failed to get YP map list
Run Code Online (Sandbox Code Playgroud)

看起来域“域”不知何故丢失了。为什么这里的 UID == 0?这看起来很糟糕,不是吗?

我知道不久前在 Linux 下,我发现 NIS 广播已被禁用或阻止,所以我从某人那里收集了 IP 并手动设置了 ypserver IP,/etc/yp.conf并修复了 Linux 中的丢失。也许这里正在发生类似的事情?

我尝试在 Mac 的 yp 手册页中查找信息:

然后发现这篇文章详细说明了现有服务器的设置位置:

但是,检查 ypserver 设置显示两个服务器 IP 都为 NIS 正确设置。

检查/var/log/system.log显示:

Aug 28 00:30:08 mymac ypbind[22991]: direct: sendto: No route to host
Aug 28 00:30:08 mymac ypbind[22991]: direct: sendto: No route to host
Aug 28 00:30:08 mymac ypbind[22991]: Can't contact any servers listed in /var/yp/binding/Domain.ypservers.  Aborting
Aug 28 00:30:08 mymac com.apple.launchd[1] (com.apple.nis.ypbind[22991]): Exited with code: 1
Aug 28 00:30:08 mymac com.apple.launchd[1] (com.apple.nis.ypbind): Throttling respawn: Will start in 10 seconds
Aug 28 00:30:08 mymac xpchelper[22990]: getpwuid_r() failed for UID: uuuu, ret: 0, errno: 0
Run Code Online (Sandbox Code Playgroud)

所以这让我怀疑 nfs.conf 设置等。其他一些人认为这是由于 lockd 中的某些东西。

研究

类似问题的报告

小智 1

您是否将 Mac 绑定到 OSX 服务器或 Active Directory?如果是后者,请检查域名是否以 .local 结尾。如果确实如此,则 OSX 上存在一些已知的多播干扰问题。这里的过程可能适合您:http ://www.macwindows.com/TIP-Lion-dot-local-AD-disable-multicast.html

有些 Mac 根本不喜欢 AD 网络。我有几台具有基本相同规格的 iMac,大多数都很好,但有 2 台不断失去与域控制器的连接,并且不断出现与 kerberos 票证相关的问题。在这种情况下,将 Mac 从域中断开,然后使用 Centrify Express 重新连接即可解决该问题。您可以在他们的网站上找到该代理:http://www.centrify.com/express/free-active-directory-tools-for-linux-mac.asp#agents