9.4. 登录问题

登录问题是指机器实际上已引导到期望的欢迎屏幕或登录提示下,但是拒绝接受用户名和密码,或者虽然接受了用户名和密码,但是未能正确地运行(无法启动图形桌面、发生错误或转到了命令行等)。

9.4.1.  用户无法登录 - 有效的用户名和密码组合失败

如果系统配置为使用网络鉴定或目录服务,但由于某些原因无法从其已配置的服务器上检索到结果,则通常会发生此问题。只有作为唯一本地用户的根用户仍能登录到这些机器。以下是机器似乎能够运行但是无法正确处理登录的常见原因:

  • 网络出现故障。有关此问题的进一步说明,请转到第 9.5 节 “网络问题”

  • DNS 在当时不起作用(这使得 GNOME 或 KDE 不起作用,并使系统无法向安全服务器发出经验证的请求)。如果是这种情况,则表现为机器对任何操作的响应都需要极其长的时间。有关该主题的详细信息,请参见 第 9.5 节 “网络问题”

  • 如果系统配置为使用 Kerberos,则系统的本地时间与 Kerberos 服务器时间之间的差异可能超过了可接受的值(通常为 300 秒)。如果 NTP(网络时间协议)未正确地起作用,或者本地 NTP 服务器不起作用,则 Kerberos 鉴定将不再工作,因为该鉴定依赖于整个网络的通用时钟同步。

  • 系统的鉴定配置不正确。请对相关的 PAM 配置文件进行检查以确定是否存在指令输入错误或排序错误。有关 PAM 的其他背景信息及相关配置文件的语法,请参阅第 16 章 通过 PAM 进行鉴定 (↑参考)

在不涉及外部网络问题的所有情况下,解决方案是将系统重新引导到单用户方式并修复配置,然后再次引导到操作方式并尝试登录。

要引导到单用户方式,请执行以下操作:

  1. 重新引导系统。此时将出现引导屏幕,其中显示一个提示。

  2. 在引导提示下输入 1,使系统引导到单用户方式。

  3. 输入用户的用户名和密码。

  4. 进行必要的一切更改。

  5. 在命令行中输入 telinit 5 以引导到完全的多用户和网络方式。

9.4.2.  用户无法登录 - 不接受特定的有效用户名和密码

这是到目前为止用户最常遇到的问题,因为有许多原因可能引起该问题。登录失败可由多种原因造成,取决于您是使用本地用户管理和鉴定,还是使用网络鉴定。

本地用户管理失败可由以下原因造成:

  • 用户可能输入了错误的口令。

  • 用户包含桌面配置文件的主目录已损坏或被写保护。

  • 鉴定该特定用户的 X windows 系统可能存在问题,尤其是在安装当前产品之前,该用户的主目录已被其他 Linux 产品所使用时。

要找到本地登录失败的原因,请执行如下操作:

  1. 在尝试调试整个鉴定机制之前,请检查用户所记的密码是否正确。如果用户可能记错了密码,请使用“YaST 用户管理”模块来更改用户的密码。

  2. 以根用户身份登录并检查 /var/log/messages 以找到登录过程和 PAM 的错误消息。

  3. 尝试从控制台登录(使用 Ctrl-Alt-F1)。

    如果成功了,则问题不在 PAM 上,因为可以在该机器上鉴定此用户。尝试找出任何与 X Windows 系统或桌面(GNOME 或 KDE)有关的错误。有关更多信息,请参阅第 9.4.3 节 “ 登录成功但 GNOME 桌面发生故障 ”第 9.4.4 节 “ 登录成功但 KDE 桌面发生故障”

  4. 如果用户的主目录被其他 Linux 产品所使用,请将该用户主目录中的 Xauthority 文件去除。使用控制台登录(通过 Ctrl-Alt-F1),然后以该用户的身份运行 rm .Xauthority。这样应该可以消除该用户的 X 鉴定问题。然后再次尝试图形登录。

  5. 如果图形登录依然失败,请使用 Ctrl-Alt-F1 进行控制台登录。尝试在另一个屏幕上启动 X 会话,第一个(:0)已经在使用中:

    startx -- :1

    这样应该可以显示图形屏幕和桌面。如果无效,请查看 X Windows 系统的日志文件(/var/log/Xorg.displaynumber.log)或您桌面应用程序的日志文件(用户主目录中的 .xsession-errors),以确定是否有任何违反规则的地方。

  6. 如果桌面由于配置文件损坏而无法启动,请参阅第 9.4.3 节 “ 登录成功但 GNOME 桌面发生故障 ”第 9.4.4 节 “ 登录成功但 KDE 桌面发生故障”

以下是在特定的机器上对特定用户的网络鉴定可能失败的常见原因:

  • 用户可能输入了错误的口令。

  • 用户名存在于机器的本地鉴定文件中,但同时网络鉴定系统也提供了该用户名,从而引起冲突。

  • 主目录存在,但已损坏或不可用。该目录可能处于写保护状态或位于此刻无法访问的服务器上。

  • 用户无权登录到鉴定系统中的该特定主机。

  • 机器出于某种原因更改了主机名,而用户无权登录到该主机。

  • 机器无法访问包含该用户信息的鉴定服务器或目录服务器。

  • 鉴定该特定用户的 X windows 系统可能存在问题,尤其是在安装当前产品之前,该用户的主目录已被其他 Linux 产品所使用时。

要通过网络鉴定找到登录问题的原因,请执行以下步骤:

  1. 在尝试调试整个鉴定机制之前,请检查用户所记的密码是否正确。

  2. 确定机器在鉴定时要依赖的目录服务器,并确保机器在正常运行且与其它机器正常通信。

  3. 确定该用户的用户名和密码在其它机器上是否有效,以确保存在该用户的鉴定数据且已正确分发。

  4. 确定其他用户是否可以登录到该故障机器。

    如果其他用户可以毫无困难地登录或者根用户可以登录,请登录并检验 /var/log/messages 文件。找到与登录尝试相对应的时间戳记,然后确定 PAM 是否生成了任何错误讯息。

  5. 尝试从控制台登录(使用 Ctrl-Alt-F1)。

    如果成功了,则问题不在用户主目录中的 PAM 或目录服务器上,因为可以在该机器上鉴定此用户。尝试找出任何与 X Windows 系统或桌面(GNOME 或 KDE)有关的错误。有关更多信息,请参阅第 9.4.3 节 “ 登录成功但 GNOME 桌面发生故障 ”第 9.4.4 节 “ 登录成功但 KDE 桌面发生故障”

  6. 如果用户的主目录被其他 Linux 产品所使用,请将该用户主目录中的 Xauthority 文件去除。使用控制台登录(通过 Ctrl-Alt-F1),然后以该用户的身份运行 rm .Xauthority。这样应该可以消除该用户的 X 鉴定问题。然后再次尝试图形登录。

  7. 如果图形登录依然失败,请使用 Ctrl-Alt-F1 进行控制台登录。尝试在另一个屏幕上启动 X 会话,第一个(:0)已经在使用中:

    startx -- :1

    这样应该可以显示图形屏幕和桌面。如果无效,请查看 X Windows 系统的日志文件(/var/log/Xorg.displaynumber.log)或您桌面应用程序的日志文件(用户主目录中的 .xsession-errors),以确定是否有任何违反规则的地方。

  8. 如果桌面由于配置文件损坏而无法启动,请参阅第 9.4.3 节 “ 登录成功但 GNOME 桌面发生故障 ”第 9.4.4 节 “ 登录成功但 KDE 桌面发生故障”

9.4.3.  登录成功但 GNOME 桌面发生故障

如果这发生于特定用户,则可能是由于该用户的 GNOME 配置文件已损坏。可能出现的症状有键盘不起作用、屏幕几何图形变形,甚至整个屏幕变成灰色。而最重要的差别在于其他用户登录时,该机器能正常运行。如果属于这种情况,只需将用户的 GNOME 配置目录移到某个新位置,以便使 GNOME 初始化一个新的桌面,这样就能很快地解决此问题。虽然用户不得不重新配置 GNOME,但可以确保不丢失数据。

  1. 以 root 用户登录。

  2. 使用 cd 命令切换到用户的主目录。

  3. 将用户的 GNOME 配置目录移到某个临时位置:

    mv ./.gconf ./.gconf-ORIG-RECOVER
          mv ./.gnome2 ./.gnome2-ORIG-RECOVER
  4. 注销。

  5. 使用该用户的身份登录,但是不允许其运行任何应用程序。

  6. 通过以下命令将 ~/.gconf-ORIG-RECOVER/apps/ 目录复制回新的 ~/.gconf 目录,这样就能恢复用户的个人应用程序配置数据(包括 Evolution 电子邮件客户程序数据):

    cp -a ./.gconf-ORIG-RECOVER/apps ./.gconf/

    如果这引起登录问题,则尝试只恢复重要的应用程序数据并强制用户重新配置余下的应用程序。

9.4.4.  登录成功但 KDE 桌面发生故障

KDE 桌面不允许用户登录有多种原因。高速缓存数据以及 KDE 桌面配置文件的损坏都可能引起登录问题。

桌面在启动时会用到高速缓存数据,这将提高性能。如果数据损坏,则启动将变慢或完全失败。将高速缓存数据去除会强制桌面启动例程完全重新启动。这样会花费比正常启动更多的时间,但是在这之后数据将完好无缺,用户也可以登录。

要去除 KDE 桌面的高速缓存文件,请以根用户身份发出以下命令:

rm -rf /tmp/kde-user /tmp/socket-user

请将 user 替换为实际用户名。将这两个目录去除只是去除损坏的高速缓存文件,使用该过程并不会破坏实际数据。

损坏的桌面配置文件始终可以用初始配置文件替换。如果想要恢复用户所作的调整,请在使用默认配置值恢复配置之后,将这些调整从其临时位置小心地复制回原来的位置。

要将损坏的桌面配置替换为初始配置值,请执行如下操作:

  1. 以 root 用户登录。

  2. 进入用户的主目录:

    cd /home/user
  3. 将 KDE 配置目录和 .skel 文件移到临时位置:

    mv .kde .kde-ORIG-RECOVER 
    mv .skel .skel-ORIG-RECOVER
  4. 注销。

  5. 让用户登录到此机器。

  6. 在桌面成功启动之后,将用户自己的配置调整复制回原来的位置:

    user@nld-machine:~ > cp -a .kde-ORIG-RECOVER/share .kde/share
    [Important]重要

    如果用户自己的调整先前引起了登录失败并仍然如此,请重复上述步骤,但是不要复制 .kde/share 目录。