如何查询Linux用户的账户过期时间?

在Linux系统中,用户账户的过期时间管理是系统安全与资源管理的重要环节,及时查看和处理过期账户可有效避免未授权访问或资源浪费,本文将详细介绍如何查看Linux用户过期时间,涵盖文件结构、命令工具、批量处理方法及注意事项。

如何查linux用户过期时间

用户过期时间的存储位置:/etc/shadow文件

Linux用户账户的过期时间信息存储在/etc/shadow文件中,该文件仅允许root用户读取,以保障安全性,文件中的每一行代表一个用户,字段通过冒号()分隔,共9个字段,其中第7字段直接关联账户过期时间。

以/etc/shadow中的一行示例为例:
user1:$6$abc123...::18250:0:99999:7:::
各字段含义如下(仅列出与过期时间相关的字段):

字段编号 字段名 含义说明
1 用户名 系统中的用户名,与/etc/passwd中的用户名对应。
7 账户过期时间 自1970年1月1日(Unix纪元)起算的天数,若为空则表示账户永不过期;若为0,表示账户已过期。

时间戳转换:第7字段的天数可通过date命令转换为可读日期,

date -d "1970-01-01 +18250 days"  # 输出:2025-01-01(假设第7字段为18250)

使用chage命令查看用户过期时间

chage(change age)是Linux中专门用于管理用户密码和账户过期时间的命令,通过-l(list)选项可查看当前用户的过期时间设置。

基本语法

chage -l [用户名]

示例输出

以查看user1的过期时间为例:

sudo chage -l user1
```  可能如下:  

Last password change : Jan 01, 2023
Password expires : never
Password inactive : never
Account expires : Jan 01, 2025
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

如何查linux用户过期时间

Account expires`字段直接显示账户过期时间,若为`never`则表示永不过期。  
#### `chage`常用参数说明  
| 参数 | 功能描述                                                                 |
|------|--------------------------------------------------------------------------|
| `-l` | 显示用户当前的密码和账户过期信息。                                       |
| `-E` | 设置账户过期日期(格式可为`YYYY-MM-DD`或`天数`,如`-E 2025-12-31`)。    |
| `-W` | 设置密码过期前的警告天数(如`-W 7`表示过期前7天警告)。                   |
| `-I` | 设置密码过期后账户被锁定前的天数(如`-I 30`表示密码过期30天后锁定)。     |
### 三、直接查看`/etc/shadow`文件  
若需批量查看或直接处理原始数据,可通过`cat`、`less`、`awk`等命令查看`/etc/shadow`文件,重点关注第7字段。  
#### 示例1:查看所有用户及其过期时间  
```bash
sudo awk -F: '{print "用户名: " $1 "t过期时间(天数): " $7}' /etc/shadow

输出示例:

用户名: root    过期时间(天数): 18250
用户名: user1   过期时间(天数): 18250
用户名: user2   过期时间(天数): 

其中空值表示永不过期。

示例2:转换过期时间为可读日期

sudo awk -F: '{if($7 != ""){cmd="date -d "1970-01-01 +" $7 " days" "+%Y-%m-%d""; cmd | getline exp_time; close(cmd)}; print $1 ": " (exp_time ? exp_time : "永不过期")}' /etc/shadow

输出示例:

root: 2025-01-01
user1: 2025-01-01
user2: 永不过期

批量判断用户是否已过期

若需批量检查用户账户是否已过期,可通过对比当前时间戳与/etc/shadow中的第7字段实现。

脚本示例

#!/bin/bash
current_time=$(date +%s)  # 当前时间戳(秒)
current_days=$((current_time / 86400))  # 转换为天数(86400秒=1天)
echo "用户名tt过期状态t过期日期"
echo "----------------------------------------"
sudo awk -F: -v days="$current_days" '
{
    if($7 == "") {
        printf "%-10st%-10st%sn", $1, "永不过期", "N/A"
    } else if($7 == 0) {
        printf "%-10st%-10st%sn", $1, "已过期", "N/A"
    } else if($7 < days) {
        cmd="date -d "1970-01-01 +" $7 " days" "+%Y-%m-%d""
        cmd | getline exp_date
        close(cmd)
        printf "%-10st%-10st%sn", $1, "已过期", exp_date
    } else {
        cmd="date -d "1970-01-01 +" $7 " days" "+%Y-%m-%d""
        cmd | getline exp_date
        close(cmd)
        printf "%-10st%-10st%sn", $1, "未过期", exp_date
    }
}' /etc/shadow

执行后输出示例:

用户名      过期状态    过期日期
----------------------------------------
root        未过期      2025-01-01
user1       已过期      2023-01-01
user2       永不过期    N/A

不同Linux发行版的注意事项

  1. 权限差异:在Ubuntu/Debian系统中,普通用户可能无法使用sudo chage -l,需确保用户在sudoers文件中有权限。
  2. 时间戳格式:极少数旧版Linux发行版(如CentOS 6)可能使用不同的时间戳计算方式,建议通过man shadow确认本地系统格式。
  3. 系统用户:对于nobody、sshd等系统用户,/etc/shadow中的第7字段通常为空,表示随系统运行而永不过期,无需特殊处理。

相关问答FAQs

Q1: 提示“chage: failed to modify aging information for user: Permission denied”怎么办?
A1: 该错误表示当前用户没有权限修改用户信息。chage命令需要root权限或通过sudo执行,请使用sudo chage -l [用户名]重新尝试,若需修改用户过期时间,同样需使用sudo,例如sudo chage -E 2025-12-31 user1。

如何查linux用户过期时间

Q2: 如何批量设置多个用户在2025年12月31日过期?
A2: 可通过结合usermod或chage命令与用户列表实现。

  1. 准备用户列表文件users.txt(每行一个用户名):
    user1
    user2
    user3
  2. 使用chage批量设置过期时间:
    sudo xargs -n1 chage -E 2025-12-31 < users.txt

    或使用usermod(功能类似):

    sudo xargs -n1 usermod -e 2025-12-31 < users.txt

    执行后可通过chage -l [用户名]验证设置是否生效。

通过以上方法,可全面掌握Linux用户过期时间的查看与管理,确保系统安全与合规性。

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

赞 (0)
酷番叔酷番叔
上一篇 2025年10月2日 19:29
下一篇 2025年10月2日 19:46

相关推荐

  • Linux系统中如何查看磁盘分区信息的详细步骤和方法呢?

    在Linux系统中,查看分区信息是系统管理和维护的基础操作,无论是排查磁盘空间不足、调整分区布局,还是确认文件系统类型,都需要准确掌握分区状态,Linux提供了多种命令行和图形化工具来查看分区信息,本文将详细介绍这些方法的使用场景、操作步骤及示例输出,帮助用户全面掌握Linux分区查看技巧,命令行工具查看分区命……

    2025年8月29日
    33000
  • 如何用U盘安装Linux系统?

    准备工作(关键步骤)所需工具容量≥8GB的U盘(建议USB 3.0)一台可联网的电脑(Windows/macOS/Linux均可)目标安装电脑(确保支持USB启动)选择Linux发行版新手推荐:Ubuntu、Linux Mint(界面友好)进阶选择:Fedora、Debian官方下载(确保安全):Ubuntu……

    2025年7月9日
    30100
  • 为什么不用系统自带工具?

    在Linux系统中,截图功能是日常使用的重要需求,无论是记录错误信息、制作教程还是保存灵感,由于Linux拥有多样化的桌面环境(如GNOME、KDE、XFCE等),截图方法也灵活多样,以下详细介绍原生工具、快捷键、命令行工具三种主流方式,覆盖绝大多数发行版(Ubuntu、Fedora、Debian等),确保用户……

    2025年7月26日
    33400
  • Linux修改后如何正确保存?操作步骤是什么?

    在Linux系统中,正确保存修改后的文件是日常操作中的关键环节,无论是通过命令行编辑器修改配置文件,还是在图形界面中编写代码,保存操作直接关系到数据的完整性和系统的稳定性,由于Linux环境下的编辑工具多样、操作场景复杂,掌握不同场景下的保存方法及注意事项至关重要,本文将详细解析Linux系统中各类文件修改后的……

    2025年9月21日
    28000
  • Linux中z标识的压缩文件如何解压缩?

    在Linux系统中,“.z”后缀的文件是由早期的compress命令压缩生成的压缩文件,该工具采用LZW(Lempel-Ziv-Welch)压缩算法,是Unix系统中较早的压缩格式之一,尽管现代Linux发行版更推荐使用gzip(.gz)、bzip2(.bz2)或xz(.xz)等压缩率更高、效率更好的工具,但在……

    2025年8月25日
    28800

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信