【Linux】CentOS 7 忘记root密码,单用户模式重置密码。

该文详细描述了在Linux系统中如何通过重启并进入编辑模式来修改root密码。过程中涉及重新挂载系统分区以获得读写权限,使用chroot命令切换系统环境,以及处理由于SELinux影响可能导致的登录问题。在修改密码后,需创建隐藏文件以确保系统在下次启动时能正确恢复SELinux的安全上下文。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

方法一:

1.首先重启系统

2.进入编辑模式进行编辑

3.进入微型系统,获取shell

 4.查看挂载信息

 5.重新挂载,使其拥有读写权限。

 6.切换系统环境

7.修改密码

 8.touch隐藏文件

 9.恢复系统环境,重启系统

10.密码修改完成,重新登陆系统

方法二(新版简便):

1.进入编辑模式

2.进入单用户xshell模式

3.切换系统环境

4.更改root密码

5.继续启动环境

方法三:kylin系统

1.进入救援模式

2.进入单用户模式

3.更改root密码

4.重启进入系统


方法一:

1.首先重启系统

#进入启动界面内之后在启动选项按“e”进入编辑模式。 

2.进入编辑模式进行编辑

#进入编辑模式后会看到这些信息。找到“Linux16”开头的行,在 Linux16 的行尾空格后添加“rd.break”

#添加完成之后,只需要按crtl+x 即可。(按照修改后的设置启动)

3.进入微型系统,获取shell

 4.查看挂载信息

#在启动之后会发现我们获取了一个shell,可以正常使用一部分命令了。但同时我们也会发现,当前系统中的数据和我们之前系统中的数据并不一致(某些之前系统上的文件当前都是见不到的)。现在我们查看一下挂载信息,看是否正常。

#我们通过挂载信息会发现,实际上我们原有的系统被挂载在了/sysroot 目录下了,并且是不具备 rw 读写权限的。

mount | grep root

 5.重新挂载,使其拥有读写权限。

mount -o remount,rw /dev/mapper/centos-root /sysroot/

 6.切换系统环境

chroot /sysroot/
#chroot 命令用于切换根目录,在切换根目录之前,根分区存在于/sysroot 中,切换之后当前使用的根目录就是我们之前正常登录系统所使用的根目录。

 

7.修改密码

passwd root        #直接使用passwd 命令对用户密码进行修改。

 8.touch隐藏文件

touch /.autorelabe
#在修改之后需要touch 一个隐藏文件.autorelabel,因为在rd.break 环境下 SELinux 是不生效的。在不生效的情况下我们修改了用户的密码,也就是修改了/etc/shadow文件,所以密码文件的安全上下文的特性会被取消。如果没有让系统在启动时自动恢复 SELinux 的安全上下文,系统会报错“无法登录”,所以 SELinux 在 Enforcing模式下的时候(如在 disabled 模式下则不用),在根目录下 touch 隐藏文件 autorelabel 会让系统在重启时以 SELinux 默认类型重新写入SELinux 安全上下文。

 9.恢复系统环境,重启系统

exit

reboot

10.密码修改完成,重新登陆系统

方法二(新版简便):

1.进入编辑模式

找到“Linux16”开头的行,删除参数至“ro”,将 ro 改为 rw,再添加 rd.break,curl+x 启动。

2.进入单用户xshell模式

3.切换系统环境

chroot /sysroot/

4.更改root密码

5.继续启动环境

连续两次 exit 退出系统,即可恢复系统启动。

方法三:kylin系统

1.进入救援模式

选择 “rescue”一行,按 e 进入

2.进入单用户模式

找到 linux 开头的行,行尾直接添加:

rw init=/bin/bash console=tty0

3.更改root密码

echo "123" | passwd --stdin root

4.重启进入系统

reboot
### Java 百度地图 HttpUtil 工具类使用示例 在Java项目中与百度地图API进行交互时,可以利用多种HTTP客户端库来发送请求并处理响应。对于这类操作,`HttpUtils`工具类能够提供便捷的方法来进行网络通信。 #### 使用Apache HttpClient实现百度地图服务调用 当采用Apache HttpClient作为底层传输机制时,可以通过构建GET或POST请求向百度地图Web API发起查询: ```java import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; public class BaiduMapClient { private static final String BASE_URL = "https://api.map.baidu.com/"; public String getLocationInfo(String location) throws Exception { try (CloseableHttpClient httpClient = HttpClients.createDefault()) { String url = BASE_URL + "place/v2/search?query=" + location + "&region=北京&output=json&ak=YOUR_API_KEY"; HttpGet httpGet = new HttpGet(url); try (CloseableHttpResponse response = httpClient.execute(httpGet)) { return EntityUtils.toString(response.getEntity()); } } } } ``` 此代码片段展示了如何通过构造特定参数的URL字符串,并借助于`HttpGet`对象执行GET请求获取地理位置信息[^1]。 #### 利用Hutool简化接口调用过程 为了进一步提高开发效率以及增强程序健壮性,推荐引入第三方开源框架——Hutool中的`HttpUtil`组件。该工具不仅支持同步异步两种模式下的数据交换,还内置了丰富的配置选项用于调整超时时间、设置代理服务器等功能特性。 下面是一个基于Hutool `HttpUtil.get()`方法访问百度地图地理编码API的例子: ```java import cn.hutool.http.HttpRequest; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; public class HutoolBaiduMapExample { private static final String GEOCODE_API = "http://api.map.baidu.com/geocoder/v2/"; public JSONObject getGeoCode(String address, String ak){ HttpRequest request = HttpRequest.get(GEOCODE_API) .form("address", address) .form("output","json") .form("ak", ak); String resultStr = request.execute().body(); // 将返回的结果转换成JSON对象以便解析 return JSONUtil.parseObj(resultStr); } } ``` 上述实例说明了怎样运用Hutool提供的静态工厂方法快速建立HTTP GET请求,并且直接接收到了来自远程服务器端口的数据包体内容。随后再经由`cn.hutool.json`包里的辅助函数完成序列化工作,最终得到易于分析的对象结构[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值