同样在 Ubuntu 上 - 域用户有时会从登录屏幕消失

同样在 Ubuntu 上 - 域用户有时会从登录屏幕消失

我正在使用 Likewise 在运行 Ubuntu 10.04 的笔记本电脑上对 Windows 域进行身份验证。除了一件事外,一切似乎都运行良好。

通常,机器启动后,会出现一个登录屏幕(我想是 gdm),其中列出了一些帐户。我的个人帐户未列在 /etc/passwd 中,但它通常会出现,我只需单击它,输入密码,然后登录即可。

但大约 50% 的启动都会导致我的登录名从 gdm 列表中消失。如果我单击“其他...”并输入我的用户名或我的 DOMAIN\username,身份验证总是被拒绝。我根本无法使用该用户登录,尽管其他“本地”用户确实可以登录。

目前的解决方法似乎是重新启动笔记本电脑,如果幸运的话,下次 gdm 启动时,我的用户名就会可见,我就可以登录。

我已经尝试了一些建议:

  • 将 ntp 时间源设置为与域控制器相同的服务器,因为有人建议 Kerberos 客户端在时间方面非常严格。这似乎没有解决问题
  • 创建具有相同 uid 的本地用户帐户。这会导致我的名字始终出现在 gdm 用户列表中,但仍然有大约一半的时间我的身份验证尝试被拒绝,我必须重新启动

第二点尤其让我想到,启动后幕后某些东西无法正确初始化。将其搁置几分钟并不能改变行为 - 只有重新启动才能解决问题。

登录失败后,/var/log/auth.log 报告:

gdm-session-worker[1477]: pam_succeed_if(gdm:auth): error retrieving information about user <DOMAIN>\<username>
gdm-session-worker[1477]: pam_unix(gdm:auth): check pass; user unknown
gdm-session-worker[1477]: pam_unix(gdm:auth): authentication failure; logname= uid=0 euid=0 tty=:0 ruser= rhost=

另外,在 /var/log/syslog 中,我看到:

gdm-session-worker[1477]: [module:pam_lsass]pam_sm_authenticate error [login:<DOMAIN>\<username>][error code:2]

进一步挖掘后发现,当用户名消失时,lsassd 进程似乎拒绝启动。此外,在这种情况下,尝试重新启动 lsassd 会失败,但我找不到诊断方法。但上述问题似乎是 lsassd 无法启动造成的(或至少与之有关)。


之后...

确定 lsassd 无法启动后,我尝试使用以下命令从控制台手动运行它:

$ sudo /usr/sbin/lsassd --loglevel debug

这似乎运行了大约 12 秒并产生以下输出:

20100804112201:VERBOSE:0x7fd589e03760:[lsassd_main()libmain.c:132] 日志记录已开始
20100804112201:INFO:0x7fd589e03760:[LsaSrvVerifyNetLogonStatus() libmain.c:364] LsaSrvVerifyNetLogonStatus 调用 LWNet API 返回 2
20100804112201:DEBUG:0x7fd589e03760:[LsaSrvVerifyNetLogonStatus() libmain.c:365] 错误代码:2(符号:ERROR_FILE_NOT_FOUND)

 -- 重复 11 次 --

20100804112213:错误:0x7fd589e03760:[LsaSrvStartupPreCheck() libmain.c:307] LSA 启动预检查在等待 12 秒后无法使用 NetLogonD [代码:40116]
20100804112213:DEBUG:0x7fd589e03760:[LsaSrvStartupPreCheck() libmain.c:308] 错误代码:40116(符号:LW_ERROR_FAILED_STARTUP_PREREQUISITE_CHECK)
20100804112213:错误:0x7fd589e03760:[LsaSrvStartupPreCheck() libmain.c:350] LSA 进程因启动时检查主机名时出错而退出 [代码:40116]
20100804112213:DEBUG:0x7fd589e03760:[lsassd_main() libmain.c:158] 错误代码:40116(符号:LW_ERROR_FAILED_STARTUP_PREREQUISITE_CHECK)
20100804112213:错误:0x7fd589e03760:[lsassd_main() libmain.c:240] LSA 进程因错误退出 [代码:40116]
20100804112213:DEBUG:0x7fd589e03760:[LsaSrvLogServiceFailureEvent()lsaevent.c:338] 错误代码:382312514(符号:)
20100804112213:VERBOSE:0x7fd589e03760:[LsaSrvLogServiceFailureEvent()lsaevent.c:357] 无法发布服务失败事件。
20100804112213:VERBOSE:0x7fd589e03760:[LsaSrvLogServiceFailureEvent()lsaevent.c:358] 错误代码:[382312514]
20100804112213:VERBOSE:0x7fd589e03760:[lsassd_main()libmain.c:208] Lsa 主要清理
20100804112213:INFO:0x7fd589e03760:[lsassd_main()libmain.c:224] LSA 服务退出...

查看 libmain.c 源代码,第一个错误似乎直接出现在调用该函数之后:

LWNetGetCurrentDomain()

可能是与域控制器通信时出现了某种问题?如何调试 LWNet?

相关内容