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

news/2024/11/15 1:34:34/

在单用户模式下执行 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/news/1547089.html

相关文章

下载 AndroidStudio 旧版本方法

1.打开官网:https://developer.android.com/studio 点击Read release notes 然后就是各个历史版本了: 直接点链接好像也行:https://developer.android.com/studio/archive

Grafana Username password invalid

Grafana 长时间没有登陆忘记了密码,可以使用一下方法把admin密码重置为admin grafana-cli admin reset-admin-password admin 成功后如图显示

windows 11编译安装ffmpeg(包含ffplay)

一、源码及安装包下载 1.1,ffmpeg源码包下载 下载地址:Download FFmpeg 1.2,mysys下载 下载地址:MSYS2 1.3,libx264源码包下载 下载地址:x264, the best H.264/AVC encoder - VideoLAN 二、软件安装 2.1&…

unity3d————协程练习题

1.计秒器: void Start(){StartCoroutine(MyCoroutine());}IEnumerator MyCoroutine(){int time 0;while(true){print(time "秒");time;yield return new WaitForSeconds(1);}} 结果: 2.生成多个cude (不卡顿)&#x…

Qt 使用QTreeView显示并动态的增删改查JSON文件数据

文章目录 效果图概述部分代码总结 效果图 概述 本案例在此开源项目QJsonModel的基础上实现,动态的生成并操作JSON数据,QJsonModel是一个基于QAbstractItemModel的JSON数据模型,它提供了一种简单的方式来将JSON数据可视化,功能简单…

JSON-RPC-CXX深度解析:C++中的远程调用利器

一、引言 1. JSON-RPC 简介及其在 C 开发中的重要性 JSON-RPC(JavaScript Object Notation - Remote Procedure Call)是一种基于 JSON 格式的远程过程调用协议。在 C 开发中,它扮演着至关重要的角色。随着软件系统的日益复杂和分布式架构的…

PHP中小学优校管理系统小程序源码

🏫 中小学优校管理系统:打造教育新生态,赋能智慧校园 🏫 🏷️ 开篇:为什么我们需要中小学优校管理系统? 在教育日新月异的今天,传统的管理模式已难以满足现代学校的需求。面对庞大…

Hadoop学习--第一章 Hello大数据分布式

第一章 Hello大数据分布式 数据导论 什么是数据? 数据:一种可以被鉴别的对客观事件进行记录的符号。 简单来说就是:对人类的行为及产生的事件的一种记录。 数据的价值 对数据的内容进行深入分析,可以更好的帮助了解事和物在现实世界的运…