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 upgrade或sudo 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命令结合awk或for循环遍历/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. 找到linux或linuxefi行,在末尾添加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/init或reboot。

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

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

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

相关推荐

  • 开启后会发生什么变化?

    开启指启动或打开某物,使其从关闭、静止状态进入运行或可用状态,既表示物理动作(如开门、开机),也象征抽象过程的开始(如开启新篇章、开启对话),强调初始的激活与进入。

    2025年7月5日
    29700
  • Linux如何导入文件并打开?

    在Linux系统中,文件的导入与打开是日常操作中的核心环节,无论是系统管理、开发工作还是日常办公,都离不开对文件的有效处理,本文将详细讲解Linux系统中文件的导入方法、不同类型文件的打开方式,以及相关注意事项,帮助用户全面掌握文件操作技能,Linux文件系统基础与文件类型认知在讨论文件导入与打开前,需先了解L……

    2025年9月16日
    26800
  • 2016年Linux如何畅玩游戏?方法与技巧全解析?

    2016年,Linux系统在游戏领域的支持相较于以往有了显著进步,尽管仍面临一些挑战,但通过多种方式,用户已经能在Linux上享受不少游戏,这一年,Steam for Linux的持续优化、兼容层工具的成熟以及硬件驱动的改进,共同为Linux游戏生态奠定了基础,以下从多个方面详细说明2016年在Linux玩游戏……

    2025年8月25日
    25400
  • Linux系统如何关闭端口?

    Linux系统中,端口的开放与关闭是服务器安全管理的核心操作之一,无论是防止未授权访问,还是优化服务资源配置,都需掌握正确的端口关闭方法,关闭端口前,需先明确端口的占用情况,再根据场景选择通过防火墙规则拦截或终止监听进程的方式,以下是具体操作步骤和注意事项,查看端口占用情况关闭端口前,需确认当前哪些进程正在监听……

    2025年10月1日
    37100
  • Linux如何创建txt文件?

    在Linux操作系统中,创建txt文件是日常操作中非常基础的需求,无论是记录日志、编写脚本还是临时存储数据,都离不开txt文件的使用,Linux环境下创建txt文件的方式多样,既可以通过命令行高效操作,也能通过图形界面直观完成,本文将详细介绍这些方法及其适用场景,命令行方式创建txt文件命令行是Linux系统管……

    2025年9月30日
    26800

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信