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

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

症状

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

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

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

    `I have no name$`
    

    或者

    lkyrala$ ssh lkyrala@ah-lkyrala2u 
    You don't exist, go away!
    

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

解决方法

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

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

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

  3. 按住电源按钮重置电脑

更新日期:2012 年 10 月 4 日

我们的网络管理员怀疑 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

看起来域“Domain”不知为何丢失了。为什么这里的 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

所以这让我怀疑 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

相关内容