news 2026/6/26 4:08:43

Linux命令-pwck(检查 /etc/passwd 和 /etc/shadow 完整性)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux命令-pwck(检查 /etc/passwd 和 /etc/shadow 完整性)

Linux命令-pwck(检查 /etc/passwd 和 /etc/shadow 完整性)

    • 快速参考
    • 命令语法
    • 常用选项
    • 检查项目
    • 实战示例
      • 1. 基础检查
      • 2. 只读检查
      • 3. 检查特定用户文件副本
      • 4. 手动检查 vs pwck
      • 5. 安全审计
    • 发行版差异
    • 相关命令
    • 总结

快速参考

pwck(Password Check)是一个系统完整性检查工具,用于验证/etc/passwd/etc/shadow文件的结构完整性。它会逐行检查用户名唯一性、UID/GID 合法性、主目录是否存在、Shell 是否有效等,帮助管理员发现潜在的账户配置错误或安全漏洞。

在 Linux 系统中,/etc/passwd/etc/shadow是认证体系的根基。pwck是你的账户数据库的"健康检查"——定期运行它,可以在问题演变成安全事故之前发现隐患。

命令语法

pwck [选项] [passwd [shadow]]

常用选项

选项功能
-r只读模式(不修改文件)
-s排序模式(按 UID 排序后检查)
-q安静模式(减少输出)
-R在 chroot 环境中运行
-h显示帮助

检查项目

pwck会验证以下内容:

检查项说明
用户名唯一性不允许重复的用户名
UID 唯一性不允许重复的 UID
字段数量每行必须是冒号分隔的 7 个字段
UID 合法性必须是数字且在合理范围内
GID 合法性必须是数字且在合理范围内
主目录存在性主目录路径必须存在
Shell 有效性Shell 必须在/etc/shells中列出
字段非空除密码字段外,其他字段不应为空
影子密码一致性passwd 与 shadow 中的用户名对应

实战示例

1. 基础检查

# 检查当前系统(需要 root 权限)$sudopwck user'alice':directory'/home/alice'does not exist user'bob':directory'/nonexistent/path'does not exist user'carol':program'/bin/false'is notin/etc/shells pwck: no changes# 解读:# alice: 主目录 /home/alice 不存在(可能已被删除)# bob: 主目录路径无效# carol: Shell 不在 /etc/shells 中(可能是合法的服务账户)# 查看 /etc/shells 中允许的 Shell$cat/etc/shells /bin/sh /bin/bash /usr/bin/bash /bin/rbash /bin/dash /usr/bin/dash /bin/zsh /usr/bin/zsh /usr/bin/fish# 注意:/usr/sbin/nologin 和 /bin/false 通常不在此列表中# 它们是合法的"禁止登录"Shell,pwck 可能误报

2. 只读检查

# 只读模式(推荐!不修改文件,只报告问题)$sudopwck-ruser'test':directory'/home/test'does not exist invalid passwordfileentry delete line'test:x:2001:2001::/home/test:/bin/bash'? No pwck: the files have been updated# 即使 -r 也会尝试修复# 安静模式$sudopwck-q# 只输出错误,不输出正常行

3. 检查特定用户文件副本

# 备份当前的 passwd 和 shadow$sudocp/etc/passwd /tmp/passwd.test $sudocp/etc/shadow /tmp/shadow.test# 对副本进行检查(不影响系统)$sudopwck-r/tmp/passwd.test user'nobody':directory'/nonexistent'does not exist user'systemd-coredump':directory'/'does not exist pwck: no changes# 修复:创建缺失的主目录$sudomkdir-p/home/alice $sudochownalice:alice /home/alice# 修复:更新 Shell 路径$sudousermod-s/usr/sbin/nologin carol# 或添加 Shell 到 /etc/shells$echo"/usr/sbin/nologin"|sudotee-a/etc/shells

4. 手动检查 vs pwck

# pwck 在做什么——我们可以手动实现类似检查# 检查重复用户名$cut-d:-f1/etc/passwd|sort|uniq-d# 检查重复 UID$cut-d:-f3/etc/passwd|sort|uniq-d# 检查字段不完整(非 7 个字段)$awk-F:'NF != 7 {print "Line " NR ": " $0}'/etc/passwd# 检查 UID 非数字$awk-F:'$3 !~ /^[0-9]+$/ {print "Invalid UID: " $0}'/etc/passwd# 检查 Shell 是否有效$awk-F:'{print $7}'/etc/passwd|sort-u|whilereadshell;doif!grep-qxF"$shell"/etc/shells2>/dev/null;thenecho"Shell not in /etc/shells:$shell"fidone# 检查主目录是否存在$awk-F:'{print $6}'/etc/passwd|sort-u|whilereaddir;doif["$dir"!="/"]&&[!-d"$dir"];thenecho"Directory missing:$dir"fidone# 可以封装为自定义检查脚本$cat>/usr/local/bin/passwd_check.sh<<'SCRIPT' #!/bin/bash echo "=== UID 冲突检查 ===" cut -d: -f3 /etc/passwd | sort -n | uniq -d echo "=== 用户名冲突检查 ===" cut -d: -f1 /etc/passwd | sort | uniq -d echo "=== 字段不完整检查 ===" awk -F: 'NF != 7 {print "Line " NR ": " $0}' /etc/passwd echo "=== 0 号 UID 检查(除了 root)===" awk -F: '$3 == 0 && $1 != "root" {print $0}' /etc/passwd echo "=== 主目录缺失检查 ===" while IFS=: read -r user _ uid _ _ dir shell; do [ "$dir" = "/" ] && continue [ "$dir" = "" ] && continue [ -d "$dir" ] || echo "$user: directory $dir missing" done < /etc/passwd SCRIPT$chmod+x /usr/local/bin/passwd_check.sh

5. 安全审计

# 检查是否有未授权的 UID 0 账户(后门账户)$sudopwck-r2>&1|grep"UID 0"$sudoawk-F:'$3 == 0 {print $0}'/etc/passwd root:x:0:0:root:/root:/bin/bash# 如果输出不止 root 一行!立即检查是否是安全事件!# 检查是否有空密码的账户$sudoawk-F:'($2 == "" || $2 == "!") && $3 >= 1000'/etc/shadow# 检查是否有已过期但仍活跃的账户$sudochage-lalice# 定期检查的 cron 任务$cat>/etc/cron.daily/passwd-integrity<<'SCRIPT' #!/bin/bash REPORT=$(sudo pwck -r -q 2>&1) if [ -n "$REPORT" ]; then echo "Subject: [SECURITY] /etc/passwd integrity warning" | \ sendmail -t admin@example.com echo "$REPORT" | sendmail -t admin@example.com fi SCRIPT$chmod+x /etc/cron.daily/passwd-integrity

发行版差异

发行版包名默认安装命令路径
Debian/Ubuntupasswd/usr/sbin/pwck
RHEL/CentOS/Fedorashadow-utils/usr/sbin/pwck
Arch Linuxshadow/usr/bin/pwck
Alpine Linuxshadow否 (apk add shadow)/usr/sbin/pwck

所有主流 Linux 发行版都提供了pwck,行为一致。

相关命令

命令功能
pwck检查/etc/passwd/etc/shadow
grpck检查/etc/group/etc/gshadow
pwconv从 passwd 创建 shadow(影子密码)
pwunconv从 shadow 恢复传统密码
vipw安全编辑/etc/passwd(锁定文件)
vigr安全编辑/etc/group

总结

pwck是系统账户数据库的"例行体检"工具。它帮助管理员在问题演变成安全漏洞或登录失败之前发现隐患:

  • 重复 UID → 权限混乱
  • 缺失主目录 → 用户无法登录或配置文件丢失
  • 无效 Shell → 用户无法正常使用
  • UID 0 多个 → 可能的安全事件

建议:在创建/删除用户后运行pwck -r验证,定期将pwck -r -q加入安全审计 cron 中。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 4:07:51

N_m3u8DL-RE:跨平台流媒体下载工具,支持点播和直播

文章目录N_m3u8DL-RE&#xff1a;跨平台流媒体下载工具&#xff0c;支持点播和直播1、 它能做什么2、 核心能力3、 安装和使用4、 适合谁用N_m3u8DL-RE&#xff1a;跨平台流媒体下载工具&#xff0c;支持点播和直播 N_m3u8DL-RE 在 GitHub 上拿到 8197 Star。 这是一个跨平台的…

作者头像 李华
网站建设 2026/6/26 4:05:52

2026软考系规备考:金钟老师是谁?为什么他适合带零基础?

备考系统规划与管理师&#xff0c;选老师的第一步是了解老师的背景和方法。本文从四个维度全面介绍金钟老师&#xff0c;供正在选老师的考生参考。一、职业背景&#xff1a;大学教师出身&#xff0c;三十余年讲台经验金钟老师是天津财经大学计算机专业现任教师。这个背景意味着…

作者头像 李华
网站建设 2026/6/26 4:05:47

Mac NTFS读写终极解决方案:Free-NTFS-for-Mac免费完整指南

Mac NTFS读写终极解决方案&#xff1a;Free-NTFS-for-Mac免费完整指南 【免费下载链接】Free-NTFS-for-Mac Nigate: An open-source NTFS utility for Mac. It supports all Mac models (Intel and Apple Silicon), providing full read-write access, mounting, and managemen…

作者头像 李华
网站建设 2026/6/26 3:58:37

其实APP宣传成本最低的方式是:电子海报---POP广告

其实APP宣传成本最低的方式是&#xff1a;电子海报---POP广告POP广告本来是实体店给来用的&#xff0c;但是网络上也可以用。现在A生成视频很困难&#xff0c;但是生成海报还是绰绰有余。

作者头像 李华
网站建设 2026/6/26 3:56:52

CryptoHack Writeup——Modular Exponentiation:理解RSA中的模幂运算

平台&#xff1a;CryptoHack 分类&#xff1a;RSA 难度&#xff1a;⭐☆☆☆☆ 知识点&#xff1a;RSA、公钥密码、模幂运算、Python pow() 函数前言最近在学习《应用密码学》课程时&#xff0c;为了更深入理解 RSA 算法的基本原理&#xff0c;我选择了 CryptoHack 平台进行练习…

作者头像 李华