Linux环境下,shadow文件的使用方法及操作步骤是什么?

在Linux系统中,/etc/shadow文件是存储用户密码加密信息的核心安全文件,它与/etc/passwd文件配合工作:/etc/passwd存储用户的基本信息(如用户名、UID、家目录等),而密码等敏感数据则迁移至/etc/shadow,以避免普通用户通过读取/etc/passwd获取密码哈希值,从而提升系统安全性,正确使用和管理/etc/shadow文件是Linux系统安全运维的重要环节,本文将详细介绍其结构、查看方法、密码管理命令、安全配置及最佳实践。

linux 如何使用shadow

/etc/shadow文件的结构与字段说明

/etc/shadow文件中的每一行对应一个用户,行内由9个字段组成,字段间用冒号()分隔,各字段的含义如下表所示:

字段序号 字段名称 含义说明 示例值
1 用户名 /etc/passwd文件中的用户名对应,标识用户身份 root
2 加密密码 存储用户密码的哈希值,若为空字符串()表示用户无密码(不安全);若为表示账户被锁定(无法登录) $6$abc123$...(SHA-512哈希)
3 上次修改密码时间 自1970年1月1日以来,距离上次修改密码的天数 18500
4 最小密码有效期 密码修改后,最少需要等待多少天才能再次修改(0表示可随时修改) 0
5 最大密码有效期 密码在多少天后必须强制修改(99999表示永不过期) 90
6 密码过期警告期 密码过期前多少天开始提醒用户(0表示不提醒) 7
7 密码非活跃期 密码过期后,账户最多可多少天未登录(0表示过期立即禁用) 30
8 账户过期时间 账户在多少天后被禁用(自1970年1月1日起计算,空字符串表示永不过期) 19430
9 保留字段 系统保留字段,暂无特殊用途 (空)

查看/etc/shadow

由于/etc/shadow文件包含敏感信息,其默认权限为000(仅root用户可读写执行),普通用户无法直接访问,root用户可通过以下命令查看文件内容:

使用catless命令直接查看

# 直接查看文件全部内容(适合行数较少时)  
cat /etc/shadow  
# 分页查看(适合行数较多,支持上下翻页)  
less /etc/shadow  

执行后,每行显示一个用户的密码信息,按q键退出less界面。

使用getent命令查询指定用户

若仅需查看特定用户的密码策略信息,可通过getent命令结合shadow数据库查询:

getent shadow username  

查看root用户的信息:

getent shadow root  
# 输出示例:root:$6$abc123$...:18500:0:90:7:30:19430::  

密码管理核心命令

passwd命令:修改用户密码

passwd是Linux中最常用的密码管理工具,普通用户可修改自己的密码,root用户可修改任意用户的密码,并支持锁定/解锁账户。

  • 普通用户修改自身密码

    passwd  

    执行后需输入当前密码验证,再输入两次新密码(密码不会显示在终端)。

  • root用户修改其他用户密码

    passwd username  

    无需原密码验证,直接输入两次新密码即可。

  • 锁定/解锁用户账户

    # 锁定账户(密码字段改为"*")  
    passwd -l username  
    # 解锁账户(恢复密码字段为哈希值)  
    passwd -u username  

    锁定后,用户即使输入正确密码也无法登录(如passwd -l root可临时禁止root远程登录)。

    linux 如何使用shadow

chage命令:管理密码策略

chage(change age)命令用于修改用户密码的过期策略,包括有效期、警告期、非活跃期等,适合批量管理或精细化控制。

  • 查看用户密码策略

    chage -l username  

    例如查看testuser的策略:

    chage -l testuser  
    # 输出示例:  
    # Last password change                    : Dec 31, 2023  
    # Password expires                    : Mar 30, 2024  
    # Password inactive                   : May 29, 2024  
    # Account expires                      : never  
    # Minimum number of days between password change : 0  
    # Maximum number of days between password change : 90  
    # Number of days of warning before password expires : 7  
  • 修改密码有效期

    # 设置密码90天后过期(-M:Maximum)  
    chage -M 90 username  
    # 设置密码至少7天后才能修改(-m:Minimum)  
    chage -m 7 username  
  • 设置密码过期警告期

    # 密码过期前7天开始提醒(-W:Warning)  
    chage -W 7 username  
  • 设置密码非活跃期

    # 密码过期后30天未登录则禁用账户(-I:Inactive)  
    chage -I 30 username  
  • 设置账户过期时间

    # 账户在2024年12月31日后禁用(-E:Expire)  
    chage -E 2024-12-31 username  

密码加密算法配置

/etc/shadow中的密码哈希值采用不同加密算法生成,算法类型通过哈希值前缀标识(如$1$表示MD5,$5$表示SHA-256,$6$表示SHA-512),当前主流系统默认使用SHA-512(安全性更高),可通过/etc/login.defs文件或passwd命令配置。

查看当前加密算法

grep "ENCRYPT_METHOD" /etc/login.defs  

若未配置,可通过以下命令查看用户密码的哈希算法:

getent shadow username | cut -d: -f2 | cut -d$ -f2  

输出6表示SHA-512,5表示SHA-256,1表示MD5。

修改默认加密算法

编辑/etc/login.defs文件,修改ENCRYPT_METHOD参数:

vim /etc/login.defs  
# 添加或修改为:  
ENCRYPT_METHOD SHA512  

修改后,新创建的用户或通过passwd修改密码时,将自动使用SHA-512算法。

linux 如何使用shadow

安全最佳实践

禁用空密码账户

检查/etc/shadow中是否存在密码字段为空的用户(第二列为空字符串),若有则立即设置密码或锁定账户:

# 查找空密码用户  
awk -F: '($2 == "") {print $1}' /etc/shadow  

对找到的用户执行passwd username设置密码,或passwd -l username锁定。

定期修改密码策略

通过chage命令为所有用户设置合理的密码有效期(如普通用户90天,管理员60天),避免长期使用同一密码:

# 批量设置所有用户密码90天后过期  
for user in $(cut -d: -f1 /etc/passwd); do  
    chage -M 90 $user  
done  

备份与恢复/etc/shadow

定期备份/etc/shadow文件,避免误操作导致系统无法登录:

# 备份到/home/backup/  
cp /etc/shadow /home/backup/shadow.bak_$(date +%Y%m%d)  
# 恢复(需root权限)  
cp /home/backup/shadow.bak_20240101 /etc/shadow  

限制root登录

直接锁定root密码(passwd -l root),并通过sudo机制授权普通用户执行管理员命令,减少root密码泄露风险。

相关问答FAQs

Q1: 如何查看用户的密码过期时间?
A: 使用chage命令的-l选项可查看用户的详细密码策略,包括过期时间。

chage -l username  

输出中的“Password expires”字段即为密码过期日期(若为“never”则永不过期)。

Q2: 如何锁定或解锁用户账户?
A: 使用passwd命令结合-l(锁定)或-u(解锁)选项。

# 锁定用户testuser  
passwd -l testuser  
# 解锁用户testuser  
passwd -u testuser  

锁定后,用户即使输入正确密码也无法登录;解锁后恢复正常登录权限。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/25913.html

(0)
酷番叔酷番叔
上一篇 2025年9月19日 07:22
下一篇 2025年9月19日 07:38

相关推荐

  • 如何在电脑上正确安装Linux系统?

    安装Linux系统需经过准备、安装、配置三个主要阶段,以下是详细步骤及注意事项,安装前准备数据备份安装过程会涉及硬盘分区操作,可能导致数据丢失,需提前备份重要文件至移动硬盘、云盘或另一块硬盘,检查硬件兼容性Linux对大多数硬件支持良好,但需确认特殊设备(如独立显卡、无线网卡)的驱动情况,可通过查询硬件型号……

    2025年8月21日
    12100
  • Linux如何设置开机自动启动?

    要让Linux系统实现自动开机,通常可以通过硬件层面的BIOS/UEFI设置和软件层面的系统服务配置两种方式实现,硬件设置是通过修改主板电源管理选项,让计算机在通电或特定时间自动启动;软件设置则是通过系统自带的工具(如systemd)配置特定程序或服务在开机时自动运行,以下是具体操作步骤和注意事项,通过BIOS……

    2025年9月30日
    9600
  • cdlinux命令行如何正确显示中文内容?

    在cdlinux命令行环境中,中文显示问题通常源于字符编码配置不当、终端支持缺失或系统locale设置错误,cdlinux作为一款轻量级Linux维护系统,常用于应急响应和系统修复,其命令行默认可能未启用中文支持,需通过一系列配置才能正确显示中文,以下从问题原因、具体配置步骤、常见问题解决等方面详细说明,中文显……

    2025年8月26日
    10900
  • 如何设置eth0网关192.168.1.1?

    临时设置默认路由(重启失效)方法1:使用 ip route 命令(推荐)sudo ip route add default via <网关IP> dev <网卡名>sudo ip route add default via 192.168.1.1 dev eth0方法2:使用 route……

    2025年7月6日
    12100
  • Linux安装音乐播放器最佳方法?

    准备工作更新系统(避免依赖冲突)sudo apt update && sudo apt upgrade # Debian/Ubuntusudo dnf update # Fedorasudo pacman -Syu # Arch/Manjaro确认包管理器Debian/Ubuntu:aptFed……

    2025年7月17日
    13600

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信