Linux命令-pwunconv(从影子密码返回传统密码)
Linux命令-pwunconv从影子密码返回传统密码快速参考⚠️ 安全警告命令语法工作原理实战示例1. 执行前检查2. 执行与回滚3. 何时可能需要 pwunconv4. 安全性对比5. 替代方案发行版差异pwconv vs pwunconv 对比总结快速参考pwunconv是pwconv的反操作——它将/etc/shadow中的加密密码哈希迁移回/etc/passwd撤销影子密码机制。这是一个降低系统安全性的操作仅在极其特殊的情况下才需要使用绝大多数情况下应避免执行。pwunconv就像把保险柜里的贵重物品密码哈希搬回公共走廊所有人可读的/etc/passwd。除非你有极其充分的理由如兼容某个远古应用否则永远不要这样做。⚠️ 安全警告执行 pwunconv 会显著降低系统安全性密码哈希将从仅 root 可读的/etc/shadow移到所有人可读的/etc/passwd任何能读取/etc/passwd的用户都可以获取密码哈希这大大增加了离线暴力破解的风险现代系统依赖/etc/shadow的 PAM 配置可能受影响# ⚠️ 确认你在做什么$sudopwunconv# 回滚立即重新创建影子密码$sudopwconv# 验证恢复成功$sudocat/etc/shadow|head-3root:$6$...:19000:0:99999:7::: $grep^root:/etc/passwd root:x:0:0:root:/root:/bin/bash# ^ 密码字段回到 x影子密码命令语法pwunconv [选项]工作原理pwunconv 的处理流程 1. 读取 /etc/shadow 中的密码哈希 2. 将密码哈希写回 /etc/passwd 对应行的密码字段 3. 删除 /etc/shadow 文件或清空 4. 此时 /etc/passwd 中密码字段不再是 x实战示例1. 执行前检查# 检查当前状态$ls-l/etc/shadow -rw-r-----1root shadow2048Jun1410:00 /etc/shadow $head-3/etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin $wc-l/etc/shadow42/etc/shadow# 备份执行 pwunconv 前必须$sudocp/etc/passwd /etc/passwd.backup $sudocp/etc/shadow /etc/shadow.backup $sudocp/etc/group /etc/group.backup# 建议也备份$sudocp/etc/gshadow /etc/gshadow.backup# 建议也备份# 手动备份的恢复方式$sudocp/etc/passwd.backup /etc/passwd $sudocp/etc/shadow.backup /etc/shadow $sudochownroot:shadow /etc/shadow $sudochmod640/etc/shadow2. 执行与回滚# ⚠️ 执行 pwunconv有警告但你已备份$sudopwunconv# 检查变化$ls-l/etc/shadow ls: cannot access/etc/shadow:No suchfileor directory# /etc/shadow 已被删除$head-3/etc/passwd root:$6$kVdNEZBT$HVSZpR...:0:0:root:/root:/bin/bash# ^^^^^^^^^^^^^^^^^^^^^^^^ 密码哈希现在在这里$stat/etc/passwd# 注意/etc/passwd 仍然所有人可读$ls-l/etc/passwd -rw-r--r--1root root4096Jun1410:30 /etc/passwd# 644 权限所有用户都能读取密码哈希# ⚠️ 这是一个严重的安全漏洞立即回滚$sudopwconv# 验证回滚成功$ls-l/etc/shadow -rw-r-----1root shadow2048Jun1410:31 /etc/shadow $grep^root:/etc/passwd root:x:0:0:root:/root:/bin/bash# ^ 密码字段恢复为 x3. 何时可能需要 pwunconv# 极少数的合理场景# 场景1古老 Unix 系统的兼容性测试# 某些 1990 年代的 Unix 应用可能硬编码读取 /etc/passwd 中的密码字段# 在隔离的测试环境中执行$sudopwunconv# 测试应用...$sudopwconv# 测试后立即恢复# 场景2特定 SIP/VoIP 系统# 部分 Asterisk 旧版本配置可能需要读取 passwd 中的密码# 但现代版本已支持 /etc/shadow# ⚠️ 场景3千万不要因为方便脚本读取密码而用 pwunconv# 正确做法让脚本以 root 权限运行用 sudo读取 /etc/shadow$sudocat/etc/shadow|grepalice# 正确# 而不是 pwunconv → 读 /etc/passwd → pwconv# 对于需要密码验证的程序# 使用 PAMlibpam进行认证不要自己解析密码文件4. 安全性对比# 创建演示脚本密码哈希的暴露风险$catsecurity_demo.shSCRIPT #!/bin/bash echo 影子密码模式安全 echo /etc/passwd 中的密码: grep ^test: /etc/passwd | cut -d: -f2 echo → 只显示 x无密码哈希 echo echo 传统密码模式不安全 echo 如果执行 pwunconv任何用户可以看到 echo root:$6$salt$longhash...:0:0:root:/root:/bin/bash echo → 密码哈希暴露给所有用户 SCRIPT$bashsecurity_demo.sh5. 替代方案# 替代1使用 PAM 进行认证# Python 示例使用 pam 模块$ python3-c import pam p pam.pam() result p.authenticate(alice, password123) print(Authenticated if result else Failed) # 替代2使用 getent 查询用户信息$ getentpasswdalice alice:x:1000:1000:Alice,,,:/home/alice:/bin/bash# 非 root 用户只能看到 x$ getent shadow alice# 非 root 用户无权限查看# 替代3使用 su/sudo 验证密码$su- alice-cecho Password OK# 需要交互输入密码# 替代4密码过期/锁定等操作用 passwd 命令$sudopasswd-lalice# 锁定账户无需动 shadow$sudopasswd-Salice# 查看状态发行版差异发行版命令位置默认行为Debian/Ubuntu/usr/sbin/pwunconv删除 /etc/shadowRHEL/CentOS/Fedora/usr/sbin/pwunconv删除 /etc/shadowArch Linux/usr/bin/pwunconv删除 /etc/shadowAlpine Linux/usr/sbin/pwunconv(shadow 包)删除 /etc/shadow所有发行版行为一致。某些发行版可能将/etc/shadow重命名为/etc/shadow-而非完全删除。pwconv vs pwunconv 对比特性pwconvpwunconv方向passwd → shadowshadow → passwd安全性提升推荐降低不推荐shadow 文件创建/更新删除/清空使用频率系统安装时运行一次极少使用影响无负面影响增加安全风险总结pwunconv 是一个应该被锁在紧急破坏工具抽屉里的命令。它的作用是撤销影子密码shadows password机制执行后密码哈希暴露给所有用户 → 安全隐患大幅增加几乎没有任何现代场景需要执行它如果必须使用记得先备份用完立刻 pwconv 恢复正确的密码验证方式应该通过 PAM而非直接读取/etc/passwd或/etc/shadow

相关新闻

误删微信聊天记录不用慌!官方全套恢复教程,无备份也能救

误删微信聊天记录不用慌!官方全套恢复教程,无备份也能救

日常办公沟通、亲友聊天、交易凭证大多保存在微信对话框里,一旦手滑清空会话、误删单条消息、重装微信或更换新机,重要文字、语音、转账截图、文件都会丢失。很多人第一时间盲目下载各类恢复工具,不仅容易泄露隐私,还很难找回完整…

2026/6/26 18:48:05阅读更多 →
医疗系统国密算法改造实战:90天合规迁移指南

医疗系统国密算法改造实战:90天合规迁移指南

1. 项目概述:一场关乎存续的合规“大考”如果你是一位负责医疗系统(比如HIS、LIS、PACS或者互联网医院平台)的Java架构师或核心开发,最近两个月,你的手机和邮箱大概率被“等保四级”、“国密算法”、“强制生效”这几个…

2026/6/26 18:48:05阅读更多 →
NSC_BUILDER:Switch游戏文件管理的终极免费工具箱

NSC_BUILDER:Switch游戏文件管理的终极免费工具箱

NSC_BUILDER:Switch游戏文件管理的终极免费工具箱 【免费下载链接】NSC_BUILDER Nintendo Switch Cleaner and Builder. A batchfile, python and html script based in hacbuild and Nuts python libraries. Designed initially to erase titlerights encryption f…

2026/6/26 18:42:57阅读更多 →
如何快速恢复加密压缩包密码:开源工具的完整实战指南

如何快速恢复加密压缩包密码:开源工具的完整实战指南

如何快速恢复加密压缩包密码:开源工具的完整实战指南 【免费下载链接】ArchivePasswordTestTool 利用7zip测试压缩包的功能 对加密压缩包进行自动化测试密码 项目地址: https://gitcode.com/gh_mirrors/ar/ArchivePasswordTestTool 你是否曾经因为忘记加密压…

2026/6/26 20:13:18阅读更多 →
CBCX外汇在在线支持上清楚吗?

CBCX外汇在在线支持上清楚吗?

换句话说,围绕“聊到CBCX外汇在线支持,有条理吗”这个问题观察CBCX外汇,能更快看出平台基础服务是否扎实。从平台结构角度观察,平台把复杂事项拆解得更容易理解,用户自然更容易形成稳定印象。把问题拆开去看&#xff0…

2026/6/26 20:13:18阅读更多 →
Python自动化测试中字符串操作实战:格式化、正则与编码处理

Python自动化测试中字符串操作实战:格式化、正则与编码处理

1. 项目概述:为什么字符串操作是自动化测试的基石?如果你刚开始用 Python 和 Playwright 做自动化测试,可能会觉得定位元素、点击按钮、填写表单是核心。但当你真正开始写脚本,尤其是处理动态数据、验证页面内容或者生成测试报告时…

2026/6/26 20:13:18阅读更多 →
3个实战场景:如何用SMUDebugTool解决Ryzen系统调试与性能优化难题

3个实战场景:如何用SMUDebugTool解决Ryzen系统调试与性能优化难题

3个实战场景:如何用SMUDebugTool解决Ryzen系统调试与性能优化难题 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址:…

2026/6/26 20:13:18阅读更多 →
Claude大模型特性与应用指南

Claude大模型特性与应用指南

Claude 大模型特性与应用指南 Claude 模型概述 Claude 是 Anthropic 公司开发的大型语言模型系列,以其安全性、长上下文窗口和强大的推理能力著称。目前主要包括 Claude 3 系列(Opus、Sonnet、Haiku)和最新的 Claude 3.5 Sonnet。 Claude 系列…

2026/6/26 20:13:18阅读更多 →
Joy-Con Toolkit技术深度解析:任天堂手柄逆向工程与高级定制方案

Joy-Con Toolkit技术深度解析:任天堂手柄逆向工程与高级定制方案

Joy-Con Toolkit技术深度解析:任天堂手柄逆向工程与高级定制方案 【免费下载链接】jc_toolkit Joy-Con Toolkit 项目地址: https://gitcode.com/gh_mirrors/jc/jc_toolkit Joy-Con Toolkit是一款基于C/C#混合技术栈的任天堂Switch手柄深度定制工具&#xff0…

2026/6/26 20:08:17阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/26 11:03:22阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/26 4:15:25阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/26 9:29:01阅读更多 →
HPE (慧与) 服务器专用 ESXi 9 全套官方定制资源详解 + 完整部署升级教程

HPE (慧与) 服务器专用 ESXi 9 全套官方定制资源详解 + 完整部署升级教程

一、前言:企业运维痛点与资源价值自博通收购 VMware 之后,原 VMware 公开免费下载渠道全面关闭,企业运维人员想要获取适配 HPE 慧与服务器的 ESXi 9 原厂镜像,必须注册博通账号、绑定有效授权才能下载,无授权账号无法获…

2026/6/26 0:02:15阅读更多 →
Kotlin的@JvmStatic与@JvmField:与Java互操作的注解

Kotlin的@JvmStatic与@JvmField:与Java互操作的注解

Kotlin作为一门现代编程语言,与Java的互操作性一直是其核心优势之一。为了让Kotlin代码能够无缝对接Java,Kotlin提供了多种注解来优化互操作体验,其中JvmStatic和JvmField是两个关键注解。它们分别用于解决静态成员和字段在Java中的访问问题&…

2026/6/26 0:02:15阅读更多 →
深入解析musl libc中的mmap实现源码

深入解析musl libc中的mmap实现源码

最近在阅读musl libc源码时,发现其mmap的实现非常精妙,特分享给大家。 一、代码整体结构 这段代码实现了__mmap函数,并通过weak_alias导出为mmap。这是典型的musl libc风格——提供弱符号以便用户可以重写。 weak_alias(__mmap, mmap); 二…

2026/6/26 0:02:15阅读更多 →