Arch Linux sudo: PAM authentication error: Module is unknown

jackalwb 2017-05-23

问题描述:  

我的 Arch Linux 已经用了快半年多,由于 Arch Linux 的滚挂问题,我从没有直接升级过系统。软件版本以及库自然落后了一些。

就在我准备需要用到 NFS 时,挂载网络文件系统时由于 librpc 太旧而失败了。所以看来我得更新 librpc 了。用 yaourt -Ss 查看了一下源上的版本。

最新的 NFS 需要 libtirpc.so.3 而我的却是 libtirpc.so.1 。最后安装了 libtirpc-1.0.1-2 后。悲剧发生了。任何用到 sudo , 以及 su 的地方,均出现如下错误:

sudo: PAM authentication error: Module is unknown

我意识到,我一旦重启了将无法开机了。本来已经天晚,心想睡吧。明天再弄,先不关电脑就好。

结果,第二天发现屏幕已锁定,突然又明白了什么。果然尼码,认证失败。根本登不进去!真是悲剧。

解决办法:

我参考 https://bbs.archlinux.org/viewtopic.php?pid=1578812 上别人的讨论。发现别人是更新系统导致的,虽然降了 libtirpc 的版本,但是其他依赖没有降下去。当然他是失败。

但是我不一样,我仅仅更新了 libtirpc ,而且当时我发现并没有安装任何的依赖软件包。所以我认为我只要降回原来 libtirpc 的版本。便能解决问题。

具体做法:

重启,进入 Grub 引导界面,按 e 编辑内核启动参数。如图,在 linux 那行末尾添加 single 以单用户身份启动,进入电源模式:

 Arch Linux sudo: PAM authentication error: Module is unknown

然后按 Ctrl + x 启动。启动后,请求输入 root 密码登录。此时可以成功登录 ( 暂时没深究过为什么 )。

登录后,就有一个 Shell 可用了,而且还是 root 账户。

# cd /var/cache/pacman/pkg
# ls -l | grep rpc 
librpcsecgss-0.19-8-x86_64.pkg.tar.xz
libtirpc-0.3.2-2-x86_64.pkg.tar.xz
libtirpc-1.0.1-2-x86_64.pkg.tar.xz
rpcbind-0.2.3-3-x86_64.pkg.tar.xz

显然 libtirpc-0.3.2 是我之前合适的版本。(因为知道 Arch Linux 已滚挂,所以一直没清理 pacman 安装过的软件包 ,如果你清理了,那就得费功夫找你原来版本的包了。)

# pacman -U libtirpc-0.3.2-2-x86_64.pkg.tar.xz

成功安装后,重启系统,问题便解决了。至于 NFS ,看来我还得好好思考下怎么解决。

相关推荐