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)
酷番叔酷番叔
上一篇 2小时前
下一篇 1小时前

相关推荐

  • 如何快速提升网站流量?

    cp命令用于复制文件或目录,支持递归复制目录内容(-r选项)及保留文件属性(-p选项),是Linux/Unix系统管理文件的基础工具。

    2025年7月9日
    3800
  • Linux如何判断文件是否存在?命令与脚本方法详解

    在Linux系统中,判断文件是否存在是日常操作和脚本编写中的常见需求,无论是检查配置文件、日志文件还是临时文件,都需要通过特定方法快速确认文件状态,Linux提供了多种命令和工具来实现这一功能,每种方法都有其适用场景和注意事项,下面将详细介绍这些方法及其使用细节,使用test命令判断文件存在性test命令是Li……

    2025年8月23日
    2500
  • linux 如何打开摄像头驱动

    Linux中,可以使用v4l2-ctl或ffmpeg等工具

    2025年8月14日
    1800
  • Linux如何快速监控CPU内存?

    查看CPU信息核心配置与型号lscpu输出示例:Architecture: x86_64CPU(s): 8 # 逻辑CPU数量Model name: Intel(R) Xeon(R) CPU E5-2670 v3NUMA node(s): 1关键字段:CPU(s):逻辑处理器总数Model name:CPU型号……

    2025年6月28日
    3800
  • Linux跑Python为何如此高效?

    在Linux系统中运行Python程序高效便捷,可直接通过命令行执行.py文件,最佳实践包括使用虚拟环境管理依赖、为脚本添加执行权限(chmod +x)以及利用shebang行(#!/usr/bin/env python3)指定解释器版本。

    2025年7月14日
    4200

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信