我正在使用 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?