Linux系统如何安装shadow-utils工具包?

在Linux系统中,shadow通常指shadow-utils工具包,它是系统用户认证和密码管理的核心组件,包含了passwd、chage、usermod等关键命令,用于管理用户密码、密码过期策略及账号状态,不同Linux发行版的包管理器不同,安装方法略有差异,以下将详细介绍主流发行版的安装步骤、核心工具使用、配置文件解析及安全注意事项。

linux如何安装shadow

不同Linux发行版的安装方法

shadow-utils包在不同发行版中的名称和安装命令存在差异,以下是常见发行版的安装方式:

发行版系列 包名 安装命令 更新命令 卸载命令
Debian/Ubuntu shadow-utils sudo apt install shadow-utils sudo apt update && sudo apt upgrade sudo apt remove shadow-utils
CentOS/RHEL 7+ shadow-utils sudo yum install shadow-utils sudo yum update shadow-utils sudo yum remove shadow-utils
CentOS/RHEL 6 shadow sudo yum install shadow sudo yum update shadow sudo yum remove shadow
Arch Linux shadow sudo pacman -S shadow sudo pacman -Syu sudo pacman -R shadow
openSUSE shadow sudo zypper install shadow sudo zypper update shadow sudo zypper remove shadow

安装步骤示例(以Ubuntu为例)

  1. 更新包列表:sudo apt update
  2. 安装shadow-utils:sudo apt install shadow-utils
  3. 验证安装:dpkg -l | grep shadow-utils(若显示ii shadow-utils则安装成功)或which passwd(确认passwd命令路径)。

安装后核心工具使用

shadow-utils安装后,可通过以下工具管理用户密码和认证策略:

passwd:修改用户密码

  • 普通用户修改自己的密码passwd(需输入当前密码和新密码)。
  • root用户修改其他用户密码sudo passwd username(无需原密码,直接设置新密码)。
  • 锁定/解锁用户密码
    • 锁定:sudo passwd -l username(密码前加,无法登录)。
    • 解锁:sudo passwd -u username(移除,恢复登录权限)。

chage:管理密码过期策略

  • 查看用户密码策略sudo chage -l username(显示密码最后修改时间、过期时间、警告天数等)。
  • 设置密码有效期sudo chage -M 90 username(密码90天后过期)。
  • 设置密码过期警告天数sudo chage -W 7 username(过期前7天开始警告)。
  • 强制下次登录修改密码sudo chage -d 0 username(用户下次登录需立即修改密码)。

usermod:修改用户属性

  • 修改用户密码过期时间sudo usermod -e 2023-12-31 username(账号于2023年12月31日失效)。
  • 添加用户附加组sudo usermod -aG sudo username(将用户加入sudo组,获得管理员权限)。

chpasswd:批量修改密码

通过文件批量设置用户密码(格式:username:password),

echo "user1:Pass123! user2:Secure456#" | sudo chpasswd

关键配置文件解析

shadow-utils的行为由两个核心配置文件控制:/etc/login.defs/etc/shadow

/etc/login.defs:全局认证策略

该文件定义了系统默认的密码和账号管理规则,关键参数包括:

linux如何安装shadow

  • PASS_MAX_DAYS 90:密码最大有效期(90天)。
  • PASS_MIN_LEN 8:密码最小长度(8位)。
  • PASS_WARN_AGE 7:密码过期前警告天数(7天)。
  • UID_MIN 1000:普通用户最小UID(1000,低于此值为系统用户)。

修改示例sudo vim /etc/login.defs,修改PASS_MAX_DAYS为180后保存,新创建的用户将继承180天的密码有效期。

/etc/shadow:用户密码加密信息

该文件存储每个用户的密码哈希及过期策略,仅root可读写,每行格式为:
username:password:last_change:min_age:max_age:warn_days:inactive_date:expire_date:flag

  • password:加密后的密码(空表示无密码,表示锁定,表示需首次登录设置密码)。
  • last_change:密码最后修改时间(自1970年1月1日起的天数)。
  • max_age:密码有效期(同PASS_MAX_DAYS,-1表示永不过期)。
  • inactive_date:密码过期后账号未登录的宽限天数(-1表示禁用宽限)。
  • expire_date:账号失效时间(自1970年1月1日起的天数)。

示例行root:$6$xyz...::0:99999:7:::(root密码使用SHA-512加密,最大有效期99999天,警告期7天)。

安全注意事项

  1. 定期更新shadow-utils:通过包管理器安装安全补丁(如sudo apt upgradesudo yum update),避免密码加密算法漏洞。
  2. 设置强密码策略:在/etc/login.defs中增加PASS_MIN_LEN(建议≥12),并配合PAM模块(如pam_pwquality)检查密码复杂度。
  3. 审计密码过期情况:定期检查即将过期的用户:sudo awk -F: '($8 != "" && $8 < (systime()/86400 + 30)) {print $1}' /etc/shadow
  4. 备份关键配置:修改/etc/shadow/etc/login.defs前,先备份:sudo cp /etc/shadow /etc/shadow.bak

常见问题解决

  1. 安装时提示“依赖不足”
    原因:系统未更新包列表或缺少依赖库。
    解决

    • Debian/Ubuntu:sudo apt update && sudo apt install -f(自动修复依赖)。
    • CentOS/RHEL:sudo yum makecache && sudo yum install shadow-utils --setopt=tsflags=test(临时跳过依赖检查测试)。
  2. 普通用户无法使用passwd修改密码
    原因:PAM认证模块配置错误或用户账号被锁定。
    解决

    • 检查/etc/shadow中用户密码字段是否为或(锁定状态)。
    • 检查PAM配置文件/etc/pam.d/passwd,确保包含pam_unix.so模块:
      sudo grep "pam_unix.so" /etc/pam.d/passwd

FAQs

如何批量查看所有用户的密码过期时间?
答:使用chage命令结合awkfor循环遍历/etc/passwd中的用户列表。

linux如何安装shadow

for user in $(cut -d: -f1 /etc/passwd); do echo "用户: $user"; sudo chage -l $user | grep "密码过期"; done

或使用awk直接解析/etc/shadow

sudo awk -F: '{print $1, "密码过期时间:", ($9 == "" ? "永不过期" : strftime("%Y-%m-%d", $8*86400))}' /etc/shadow

忘记root密码时,能否通过shadow-utils重置?
答:可以,需通过GRUB引导进入单用户模式重置密码(适用于本地物理机或虚拟机):

  1. 重启系统,在GRUB引导界面按e进入编辑模式。
  2. 找到linuxlinuxefi行,在末尾添加init=/bin/bash(禁用系统初始化进程,直接进入bash)。
  3. 按Ctrl+X启动,进入root权限的bash环境。
  4. 挂载根分区为读写模式(若未自动挂载):mount -o remount,rw /
  5. 修改root密码:passwd,输入新密码两次。
  6. 更新/etc/shadow中的最后修改时间(可选):sudo chage -d 0 root(强制下次登录修改密码)。
  7. 重启系统:exec /sbin/initreboot

注意:云服务器(如AWS、阿里云)需通过控制台重置密码,GRUB修改可能被安全机制阻止。

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

(0)
酷番叔酷番叔
上一篇 2025年9月19日 04:38
下一篇 2025年9月19日 05:16

相关推荐

  • 如何在Ubuntu 22.04用Samba 4部署AD域?

    核心准备系统要求全新安装的Ubuntu/CentOS(避免端口冲突)固定IP地址(例:168.1.10)主机名规范(例:dc01.linuxad.lan) sudo hostnamectl set-hostname dc01.linuxad.lan时间同步(安装NTP) sudo apt install chr……

    2025年7月29日
    7100
  • 如何系统学习嵌入式Linux?新手入门路径与实战方法指南

    学习嵌入式Linux是一个系统性的过程,需要从基础知识入手,逐步深入到系统移植、驱动开发和项目实践,夯实计算机基础是关键,包括C语言编程(指针、结构体、内存管理)、数据结构与算法、计算机组成原理(ARM架构、总线、中断)以及操作系统基础(进程、内存管理、文件系统),这些知识是理解嵌入式Linux底层逻辑的前提……

    2025年8月28日
    6700
  • Linux ISO如何安装?系统操作详细步骤与方法指南

    安装Linux ISO文件是许多用户接触开源系统的第一步,虽然不同发行版(如Ubuntu、CentOS、Fedora等)的安装界面略有差异,但核心流程基本一致,本文将从准备工作、启动介质制作、安装步骤到后续配置,详细讲解如何通过ISO文件完成Linux系统的安装,安装前的准备工作在开始安装前,需确保以下几点准备……

    2025年9月24日
    4600
  • 如何快速掌握yum?

    在Linux系统中,yum(Yellowdog Updater Modified)是Red Hat系列发行版(如CentOS、RHEL、Fedora)的核心包管理工具,用于自动化软件安装、更新和依赖关系处理,以下为详细使用指南,遵循最佳实践确保安全高效:安装软件sudo yum install package……

    2025年7月5日
    8100
  • 如何清除Linux系统的缓存文件夹?

    Linux系统中的缓存是为了提升系统性能而设计的,通过将频繁访问的数据暂存到内存中,减少磁盘I/O操作,从而加快程序响应速度,但长时间运行后,缓存文件可能会占用大量磁盘空间,导致系统变慢或存储不足,此时需要手动清除缓存,清除缓存需区分系统级缓存和应用级缓存,不同类型缓存的清除方式有所不同,操作时需注意权限和数据……

    2025年9月20日
    5600

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信