![我无法登录任何 TTY](https://linux22.com/image/823912/%E6%88%91%E6%97%A0%E6%B3%95%E7%99%BB%E5%BD%95%E4%BB%BB%E4%BD%95%20TTY.png)
我的系统是 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,显然我的机器不需要该文件)。
以下是关于您可以做什么的建议:
- 启动进入
chroot
环境(按照此处的步骤 1-5 操作)或进入恢复模式。如果您使用 liveCD 或 USB,请确保您使用的版本与您安装的版本相同! 尝试查看是否
dpkg
知道该文件:dpkg --search /lib/security/pam_access.so
如果找到该软件包,则一切就绪。只需重新安装该软件包:
apt-get reinstall package-name
如果步骤 2 失败,就该拿出大招了。您需要重新安装系统上所有与 PAM 相关的软件包。
将以下 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)])
重新安装:
apt-get reinstall $(python name_of_your_script.py)
如果这还不够,您可以采取非常严厉的措施,但在这样做之前请仔细考虑,因为它很容易产生许多意想不到的后果。它可能会在您的系统上安装一堆不相关的东西。您应该首先检查是否可以找到其他修复 PAM 的方法。
如果您确定需要执行此步骤,请修改您在步骤 3 中创建的脚本。从脚本中删除以下内容:
i.is_installed and
。请确保删除的内容正是这些,并仔细检查您是否犯了错误。然后安装,并再次重新安装,以确保您已获得所有内容:apt-get install $(python name_of_your_script.py) apt-get reinstall $(python name_of_your_script.py)
如果上述所有操作均失败,则说明您的系统已严重混乱。在这种情况下,重新安装 Ubuntu 可能是最佳选择。请记住
/home
在重新安装之前进行备份。