CentOS6升级CentOS7后无法登录修复记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS6升级CentOS7后无法登录修复记录相关的知识,希望对你有一定的参考价值。

参考技术A 问题现象,在CentOS 7系统命令行登录界面,输入root用户及密码后,界面闪了一下信息,又重新回到登录界面,ssh服务也没有起来。于是开始了尝试修复之旅

开机按任意键,进入grub。这时的grub还是CentOS 6的

选择CentOS 7内核,按e,选择光标在kernel行,再按e,在内核启动参数rhgb quite后面加空格1,回车保存,按b启动
(或者在grub选择CentOS7时,按a修改内核参数,同样在最后加上1进入单用户模式)

出现“Give root password for maintenance”一行,输入root密码,结果报错
sulogin: failed to execute /bin/bash: Permission denied
sulogin: failed to execute /bin/sh: Permission denied
Can not execute su shell

说明可能是根文件系统权限出现问题了。要修改文件权限,比较方便的还是用系统盘的拯救模式。(grub模式下修复可以参考 https://stackoverflow.com/questions/55739224/unable-to-ssh-after-enforcing-selinux )

给虚拟机挂载上CentOS7光盘,启动顺序改为光盘优先,重启,进入拯救模式。挂载根目录
chroot /mnt/sysimage

通过ls -l,发现/bin 是软链接到 /usr/bin,sh软链接到 bash。而 /bin/bash 的权限是755,没有发现异常。继续google,发现可能是selinux的问题
ls -Z bash
-rwxr-xr-x. root root system_u:object_r:bin_t:s0 bash

这里发现有异常,正常的CentOS 7结果是
-rwxr-xr-x. root root system_u:object_r:shell_exec_t:s0 bash

于是尝试修改
chcon -t shell_exec_t /bin/bash

重启。重启后第一次是可以登录的,但是再reboot以后又不行了。又尝试了 touch /.autorelabel,也是一样的结果。想尝试用 fixfiles -f relabel

结果运行报错,是因为grep命令无法用了。参考网上,先修复一下几个库的软链接
ln -s /usr/lib64/libsasl2.so.3.0.0 /usr/lib64/libsasl2.so.2
ln -s /usr/lib64/libpcre.so.1.2.0 /usr/lib64/libpcre.so.0

fixfiles完成后重启,还是执行权限错误。看来还是要动selinux了。在拯救模式下修改/etc/sysconfig/selinux

SELINUX=enforcing
改为
SELINUX=permissive

终于就可以登录了

以上是关于CentOS6升级CentOS7后无法登录修复记录的主要内容,如果未能解决你的问题,请参考以下文章

centos7.6升级openssh

centos启动不了

centos7.6内核升级

CentOS7 修复MBR 扇区故障

升级openssh后ssh连不上的问题?

centos7.4系统不正常断电后修复记录