单用户模式下执行passwd root ,返回的是(current) UNIX passwd

devtools/2024/11/14 23:53:04/

在单用户模式下执行 passwd root 时,系统提示输入 (current) UNIX password: 而不是直接提示 New password:,通常是因为当前的单用户模式仍要求验证旧密码。这种情况可能并不常见,但以下几种原因可能导致这种现象:


1. 单用户模式未绕过密码验证

在现代 Linux 系统中,为了增强安全性,单用户模式可能会要求提供 root 用户的密码(尤其是使用 GRUB 加密或配置了增强的安全策略的系统)。因此,即使你进入了单用户模式,passwd 命令可能仍要求验证旧密码。

解决方法:
尝试直接按当前 root 用户的密码。如果记不住密码或根本不知道密码,可以使用以下方法跳过密码验证并直接重置密码:

  • 编辑 GRUB 配置时,在内核参数后添加 init=/bin/bash
  • 挂载根文件系统为读写:
    mount -o remount,rw / 
  • 直接修改密码:
    passwd root 

如果仍然提示旧密码,可以手动编辑 /etc/shadow 文件清除 root 密码(见下方的手动修改方式)。


2. passwd 命令行为差异

某些发行版或具体环境中,passwd 的行为可能会导致需要验证当前密码。这可能是 PAM(Pluggable Authentication Module)配置导致的。

解决方法: 手动编辑 /etc/shadow 文件清除 root 密码:

  1. 打开文件:
    vi /etc/shadow 
  2. 找到 root 行:
    root:$6$hashedpasswordhere:19000:0:99999:7::: 
  3. 清空密码字段(删除 : 后第一个冒号之间的内容),改成如下形式:
    root::19000:0:99999:7::: 
  4. 保存并退出后,重启系统:
    reboot 
  5. 系统启动后再次进入单用户模式,为 root 设置新密码:
    passwd root 

3. PAM 模块或认证机制问题

如果系统的 PAM 配置文件(位于 /etc/pam.d/ 目录)被修改或存在问题,也可能导致需要输入旧密码。

解决方法:
临时跳过 PAM 认证机制,在单用户模式下直接使用 passwd 修改密码,或者按照以下步骤修复 PAM 配置:

  1. 检查 /etc/pam.d/passwd 文件是否正常:
    cat /etc/pam.d/passwd 
  2. 如果发现文件损坏或配置异常,可以从类似系统复制默认配置文件,或者重装相关软件包修复。

4. 系统默认要求旧密码

一些定制化的 Linux 系统可能默认在所有场景下要求输入旧密码(例如,某些企业内部署的版本)。

解决方法:
按照上述步骤,清空 /etc/shadow 中 root 用户的密码字段,强制跳过旧密码验证。


如果你能够确认此行为是由系统安全策略引起,而非其他问题,那么这种提示也算是“正常”行为。但如果你希望完全跳过旧密码验证,按以上方法调整即可。


http://www.ppmy.cn/devtools/134027.html

相关文章

2.操作系统常见面试问题3

2.53 Linux中 epoll 和 select 的作用与使用方法,简述 epoll 和 select 的区别,epoll 为什么高效? 作用:select和epoll用于多路复用I/O,在单个线程中管理多个文件描述符,提升并发处理能力。 使用方法&…

【C#设计模式(10)——装饰器模式(Decorator Pattern)】

前言 装饰器模式可以在运行时为对象添加额外的功,而无需修改原始对象的代码。这种方式比继承更加灵活。 代码 //蛋糕类(抽象类) public abstract class Cake {public abstract void Create(); } //奶油蛋糕类 public class CreamCake : Cak…

Elasticsearch 8.16:适用于生产的混合对话搜索和创新的向量数据量化,其性能优于乘积量化 (PQ)

作者:来自 Elastic Ranjana Devaji, Dana Juratoni Elasticsearch 8.16 引入了 BBQ(Better Binary Quantization - 更好的二进制量化)—— 一种压缩向量化数据的创新方法,其性能优于传统方法,例如乘积量化 (Product Qu…

Openstack7--安装消息队列服务RabbitMQ

只需要在控制节点安装 安装RabbitMQ yum -y install rabbitmq-server 启动RabbitMQ并设置开机自启 systemctl start rabbitmq-server;systemctl enable rabbitmq-server 创建 rabbitmq 用户 并设置密码为 000000 rabbitmqctl add_user rabbitmq 000000 如果你不慎创错了…

开源vs闭源:你更看好哪一方?

开源vs闭源:你更看好哪一方? 引言 你有没有想过,在当今人工智能(AI)蓬勃发展的时代,开源大模型与闭源大模型之间的竞争竟然如此激烈?这仿佛就像是两位骑士在同一片战场上,争夺你我…

iOS 18.2 六大新功能外媒實測|ChatGPT進化版SIRI、自製Genmoji

iOS 18.2 測試版再次帶來備受矚目的功能,當中包括 Image Playground、Genmoji,以及很多果迷都期待已久的 Siri與ChatGPT 的整合。外媒實測這些新功能的實際效果和操作體驗,發現當中有不少令人滿意的地方。 1)Image Playground-圖像…

SpringBoot中使用Thymeleaf模板引擎

和使用freemarker差不多的方式 1、导入thymeleaf的启动器 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> 2、编写Controller类 3、编写模板页面 注…

linux 用C语言编写自己的myshell

学习完基本指令、开发环境、进程的概念和创建进程等内容&#xff0c;我们就可以写自己的shell了 文章目录 目录 文章目录 前言 一、myshell构思 二、前缀字符串的打印 三、获取命令行和分割命令 分割命令 四、调用指令 五、内建指令&#xff08;特殊指令&#xff09; …