场景:root密码忘记
一、解决方案
1、开机进入单用户模式
a.开机后,在菜单页面按E进入编辑模式
在Linux16 的核心项目代码行的尾部,添加上参数 rd.break ,并按 ctrl+X 重开机
b.其中的mount来检测挂载点,找到sysroot
2、切换/sysroot
mount -o remount,rw /sysroot 【重新挂载/sysroot为可读写】
chroot /sysroot 【从RAM DISK的root切换到/sysroot。这里的/sysroot为硬盘环境】
3、设置新root密码
echo "oracle"|passwd --stdin root 【oracle为新密码】
4、重要加上SELinux安全性
touch / .autorelabel
5、说明
(1) 先挂载硬盘上的系统根目录 /sysroot 为可读写;
(2) 将当前操作的根目录switch_root,切换为硬盘上的根目录 /sysroot;
此时,后续即是对硬盘根目录进行操作(账号,密码等都存在根目录中);
(3) 修改密码,“oracle” 是你想要更改的密码;
(4) touch / .autorelabel ,在 rd.break 的 RAM Disk 环境下,系统是没有 SELinux的,而我们刚刚修改了密码,所以密码档案的SELinux特性将被取消;如果开机时,密码档案没有恢复SELinux安全性,系统将无法登录(在默认模式enforcing时);参数 /.autorelabel 就是让系统在开机时,使用预设的SELinux类型,自动将SELinux 安全性加入到所有档案中去;
(5) 当加上参数 / .autorelabel后,系统开机将会对每个档案写入SELinux安全性,档案较多时,可能会很慢;
后记:
当加上参数 / .autorelabel后,系统开机将会对每个档案写入SELinux安全性,档案较多时,可能会很慢,故而可以尝试第二种方式。
1、在执行密码修改之后,不执行touch指令。而是修改/etc/selinux/config文件
,将SELinux的值修改为permissive。
2、退出,重启
3、进入桌面后,查看当前SELinux模式
getenforce
4、仅修改/etc下的文档restorecon -Rv /etc
5、将模式改回enforcing
6、说明:
当文档具有SELinux安全性时(模式为enforcing),系统文档是不可修改、写入的;
即当 SELinux=enforcing时,命令 vim /etc/selinux/config 将无法完成;