当前位置: 首页 > news >正文

【Linux知识】Linux 设置账号密码永不过期

Linux 设置账号密码永不过期

  • Linux 设置账号密码永不过期
    • 方法一:使用 `chage` 命令(推荐)
      • 1. 设置密码永不过期
      • 2. 验证设置结果
    • 方法二:直接修改 `/etc/shadow` 文件
      • 1. 备份原始文件
      • 2. 编辑shadow文件
      • 3. 修改密码过期字段
    • 方法三:使用 `usermod` 命令
    • 方法四:全局密码策略配置
      • 1. 修改 `/etc/login.defs` 文件
      • 2. 批量修改现有用户
    • 方法五:使用图形化工具(如可用)
    • 验证和监控
      • 1. 检查密码策略
      • 2. 创建监控脚本
    • 恢复密码过期策略
    • 安全注意事项
    • 总结

Linux 设置账号密码永不过期

在 Linux 系统中,设置用户账号密码永不过期可以通过多种方式实现。以下是详细的操作指南:

方法一:使用 chage 命令(推荐)

1. 设置密码永不过期

# 设置用户密码永不过期
sudo chage -M 99999 username# 同时设置账户永不过期
sudo chage -E -1 username

2. 验证设置结果

# 查看用户密码策略
sudo chage -l username# 输出示例:
Last password change                                    : Jan 01, 2023
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7

方法二:直接修改 /etc/shadow 文件

1. 备份原始文件

# 备份shadow文件
sudo cp /etc/shadow /etc/shadow.backup

2. 编辑shadow文件

# 使用vipw命令安全编辑(推荐)
sudo vipw -s# 或者使用文本编辑器
sudo vi /etc/shadow

3. 修改密码过期字段

找到对应用户行,将第5个字段(密码最大天数)改为 99999

# 修改前:
username:$6$xyz...:18687:0:90:7:30::# 修改后:
username:$6$xyz...:18687:0:99999:7:30::

Shadow文件字段说明

  1. 用户名
  2. 加密密码
  3. 最后修改密码的天数(从1970-1-1开始)
  4. 最小密码年龄(0表示可立即修改)
  5. 最大密码年龄(99999表示永不过期)
  6. 密码过期前的警告天数
  7. 密码过期后的宽限天数
  8. 账户过期日期
  9. 保留字段

方法三:使用 usermod 命令

# 设置密码永不过期
sudo usermod -e "" username# 或者设置过期日期为永不过期
sudo usermod -e -1 username

方法四:全局密码策略配置

1. 修改 /etc/login.defs 文件

sudo vi /etc/login.defs

修改以下参数:

# 密码最大天数(永不过期)
PASS_MAX_DAYS   99999# 密码最小天数
PASS_MIN_DAYS   0# 密码最小长度
PASS_MIN_LEN    8# 密码过期前警告天数
PASS_WARN_AGE   7

注意:此配置仅对新创建的用户有效,已有用户需要单独设置。

2. 批量修改现有用户

# 修改所有现有用户的密码策略
for user in $(getent passwd | cut -d: -f1); dosudo chage -M 99999 $user
done# 或者只修改有登录shell的用户
for user in $(getent passwd | grep -v "/nologin\|/false" | cut -d: -f1); dosudo chage -M 99999 $user
done

方法五:使用图形化工具(如可用)

# 使用GNOME用户管理工具
sudo gnome-users-admin# 使用KDE用户管理工具
sudo kuser

验证和监控

1. 检查密码策略

# 检查所有用户密码过期设置
sudo awk -F: '{print $1 ":" $5}' /etc/shadow# 检查即将过期的密码
sudo chage -l $(getent passwd | cut -d: -f1) | grep -E "Password expires|Account expires" | grep -v "never"

2. 创建监控脚本

#!/bin/bash
# check_password_expiry.shTODAY=$(date +%s)
WARN_DAYS=30while IFS=: read -r user _ _ _ max _ _ _; doif [[ "$max" -ne 99999 && "$max" -ne -1 ]]; thenexpire_date=$(($(date -d "1970-01-01 + $max days" +%s)))days_left=$(( (expire_date - TODAY) / 86400 ))if [[ "$days_left" -le "$WARN_DAYS" ]]; thenecho "警告: 用户 $user 的密码将在 $days_left 天后过期"fifi
done < <(sudo awk -F: '{print $1 ":" $5}' /etc/shadow)

恢复密码过期策略

如果需要恢复密码过期策略:

# 恢复默认密码过期策略(90天)
sudo chage -M 90 username# 设置特定过期日期
sudo chage -E "2024-12-31" username

安全注意事项

  1. 风险评估

    • 永不过期密码降低了安全性
    • 适用于服务账户或特定场景
    • 不建议对普通用户账户使用
  2. 替代方案

    # 使用SSH密钥认证替代密码
    ssh-keygen -t rsa -b 4096
    ssh-copy-id user@host# 禁用密码登录
    sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
    sudo systemctl restart sshd
    
  3. 审计要求

    # 记录密码策略变更
    echo "$(date): 设置用户 $USER 密码永不过期" | sudo tee -a /var/log/security_changes.log# 定期审计永不过期账户
    sudo awk -F: '$5 == "99999" {print $1}' /etc/shadow | tee /tmp/never_expire_users.txt
    

总结

方法适用场景持久性影响范围
chage 命令单个用户设置永久仅指定用户
修改shadow文件批量或精确控制永久系统范围
usermod 命令简单设置永久仅指定用户
login.defs配置新用户默认设置永久所有新用户

推荐做法

  • 生产环境使用 chage 命令进行精确控制
  • 服务账户可以设置密码永不过期
  • 定期审计永不过期账户
  • 结合其他安全措施(如密钥认证、多因素认证)

通过以上方法,您可以灵活地管理 Linux 系统中的用户密码过期策略,根据实际需求平衡安全性和便利性。

http://www.dtcms.com/a/355226.html

相关文章:

  • Day15 (前端:JavaScript基础阶段)
  • 健永科技RFID技术在羊智能分群管理系统的使用案例
  • leetcode 3446. 按对角线进行矩阵排序 中等
  • 3446. 按对角线进行矩阵排序
  • 前端异常监控,性能监控,埋点,怎么做的
  • 响应式编程框架Reactor【1】
  • React 类生命周期 和 React Hooks 比对
  • 算力沸腾时代,如何保持“冷静”?国鑫液冷SY4108G-G4解锁AI服务器的“绿色空调”!
  • 第五章:Go运行时、内存管理与性能优化之性能分析与pprof工具
  • 配置windows下apache+PHP环境
  • 前端技术之---复制文本
  • docker安装kafka、zookeeper详细步骤
  • 【TEC045-KIT】基于复旦微 FMQL45T900 的全国产化 ARM 开发套件
  • COLMAP 和 SFM的关系是什么?
  • 微服务即时通信系统(十三)--- 项目部署
  • 第十七章 Java基础-常用API-System
  • ArkTS 与 TypeScript 的关系及鸿蒙开发常见错误案例
  • Upload Symbols Failed
  • 万字详解架构设计:业务架构、应用架构、数据架构、技术架构、单体、分布式、微服务都是什么?
  • 只用三招,无招重启钉钉
  • Video Ocean 接入 GPT-5
  • GeoScene Maps 开发-核心地图-标记点管理-用户交互弹窗
  • 大白话拆解力扣算法 HOT 100 - 哈希/双指针/滑动窗口
  • Mac Pro M4芯片 安装 VMware Fusion 和 windows
  • Vue Router 路由守卫详解与面试指南
  • 实体门店怎么利用小程序做好分销
  • 目标检测领域基本概念
  • 【Python】QT(PySide2、PyQt5):Qt Designer,VS Code使用designer,可能的报错
  • 发那科机器人弧焊电源气体省气装置
  • esp32c2 at 请问通过HTTPS进行OTA升级的AT命令流程有吗?