我无法登录任何 TTY

我无法登录任何 TTY

我的系统是 Ubuntu 11.10(从 0 安装,没有升级/更新)。当我进入任何 tty(1、2、3..)时,它都会询问我的登录名和密码,但我无法继续。

当我输入一个没有密码的用户或根用户(我已启用该帐户)时,提示符显示以下内容:

Module is unknown

这是什么?为什么会发生这种情况?没有办法解决吗?

笔记:我的启动停止Cheking battery state [OK]我无法进入 GUI。我从来没有使用过任何 TTY,但现在我被迫这样做。


文件auth.log

前十行:

Sep  9 20:09:01 M68MT-S2P CRON[2749]: pam_unix(cron:session): session opened for user root by (uid=0)
Sep  9 20:09:01 M68MT-S2P CRON[2749]: pam_unix(cron:session): session closed for user root
Sep  9 20:17:01 M68MT-S2P CRON[2821]: pam_unix(cron:session): session opened for user root by (uid=0)
Sep  9 20:17:01 M68MT-S2P CRON[2821]: pam_unix(cron:session): session closed for user root
Sep  9 20:39:01 M68MT-S2P CRON[2961]: pam_unix(cron:session): session opened for user root by (uid=0)
Sep  9 20:39:01 M68MT-S2P CRON[2961]: pam_unix(cron:session): session closed for user root
Sep  9 20:50:36 M68MT-S2P sudo:    lucio : TTY=pts/0 ; PWD=/home/lucio ; USER=root ; COMMAND=/usr/bin/apt-get update
Sep  9 20:52:42 M68MT-S2P polkitd(authority=local): Operator of unix-session:/org/freedesktop/ConsoleKit/Session2 successfully authenticated as unix-user:lucio to gain TEMPORARY authorization for action org.debian.apt.install-or-remove-packages for system-bus-name::1.71 [/usr/bin/python /usr/bin/update-manager --no-focus-on-map] (owned by unix-user:lucio)

最后 3 行(最后一次尝试通过 TTY 访问):

Oct  1 00:27:53 M68MT-S2P login[1429]: PAM unable to dlopen(/lib/security/pam_access.so): /lib/security/pam_access.so: cannot open shared object file: No such file or directory
Oct  1 00:27:53 M68MT-S2P login[1429]: PAM adding faulty module: /lib/security/pam_access.so
Oct  1 00:27:53 M68MT-S2P login[1429]: Module is unknown

完整auth.log文件这里

答案1

您的日志显示您缺少一个名为的文件/lib/security/pam_access.so。因此,您的 PAM 设置似乎已损坏。您需要重新安装拥有该文件的任何软件包。不幸的是,我无法确定是哪个软件包(我运行的是 12.04,显然我的机器不需要该文件)。

以下是关于您可以做什么的建议:

  1. 启动进入chroot环境(按照此处的步骤 1-5 操作)或进入恢复模式。如果您使用 liveCD 或 USB,请确保您使用的版本与您安装的版本相同!
  2. 尝试查看是否dpkg知道该文件:

    dpkg --search /lib/security/pam_access.so
    

    如果找到该软件包,则一切就绪。只需重新安装该软件包:

    apt-get reinstall package-name
    
  3. 如果步骤 2 失败,就该拿出大招了。您需要重新安装系统上所有与 PAM 相关的软件包。

    1. 将以下 Python 脚本保存在某处。它将列出当前安装的所有 PAM 包。

      #!/usr/bin/env python
      import apt
      import re
      
      exp = re.compile('^(lib)?pam')
      print ' '.join([i.name for i in apt.Cache() if i.is_installed and exp.search(i.name)])
      
    2. 重新安装:

      apt-get reinstall $(python name_of_your_script.py)
      
  4. 如果这还不够,您可以采取非常严厉的措施,但在这样做之前请仔细考虑,因为它很容易产生许多意想不到的后果。它可能会在您的系统上安装一堆不相关的东西。您应该首先检查是否可以找到其他修复 PAM 的方法。

    如果您确定需要执行此步骤,请修改您在步骤 3 中创建的脚本。从脚本中删除以下内容:i.is_installed and。请确保删除的内容正是这些,并仔细检查您是否犯了错误。然后安装,并再次重新安装,以确保您已获得所有内容:

    apt-get install $(python name_of_your_script.py)
    apt-get reinstall $(python name_of_your_script.py)
    
  5. 如果上述所有操作均失败,则说明您的系统已严重混乱。在这种情况下,重新安装 Ubuntu 可能是最佳选择。请记住/home在重新安装之前进行备份。

相关内容