在CentOS系统中,管理用户账户的有效期是一项重要的系统管理工作,定期检查用户的过期时间可以帮助管理员确保系统安全性,及时清理长期不活跃的账户,防止潜在的安全风险,本文将详细介绍如何在CentOS系统中查看用户过期时间的相关方法和命令。

使用chage命令查看用户过期信息
chage是Linux系统中用于管理用户密码过期策略的命令,同时也可以用来查看和修改用户的账户过期时间,要查看特定用户的过期信息,可以执行以下命令:
chage -l username
username是要查询的用户名,执行该命令后,系统会显示该用户的密码过期信息、账户过期时间、密码修改历史等详细内容,输出中会包含“Last password change”、“Password expires”和“Account expires”等字段,Account expires”字段直接显示了账户的过期日期。
查看/etc/shadow文件中的用户过期信息
/etc/shadow文件是Linux系统中存储用户密码和账户信息的核心文件,只有root用户可以访问,该文件的第八个字段(用冒号分隔)记录了账户的过期时间,该字段表示从1970年1月1日开始计算的天数,如果该字段为空,表示账户永不过期;如果值为0,表示账户已过期。
要查看该文件,可以使用以下命令:
sudo cat /etc/shadow | grep username
通过解析输出中的第八个字段,可以确定账户的具体过期时间,如果字段值为18500,则表示账户将在2020年11月15日左右过期(具体日期需通过计算得出)。
使用lastlog命令检查用户最后登录时间
虽然lastlog命令不直接显示账户过期时间,但它可以帮助管理员判断用户的活动状态,从而辅助决策是否需要禁用或删除长期不活跃的账户,执行以下命令可以查看所有用户的最后登录时间:

lastlog
对于特定用户,可以添加参数:
lastlog -u username
如果某用户的最后登录时间显示为“Never logged in”或距离当前日期非常久远,管理员可以结合账户过期时间进一步处理该账户。
批量检查所有用户的过期时间
当系统中有大量用户时,手动逐个查询显然效率低下,可以通过编写简单的Shell脚本批量检查所有用户的账户过期时间,以下是一个示例脚本:
#!/bin/bash
echo "UsernametAccount Expires"
while IFS=: read -r user _ _ _ _ _ _ _ expire; do
if [ "$expire" = "" ]; then
expire="Never"
elif [ "$expire" = "0" ]; then
expire="Already expired"
else
date -d "1970-01-01 + $expire days" +"%Y-%m-%d"
fi
echo "$usertt$expire"
done < /etc/passwd 将上述脚本保存为check_expiry.sh并赋予执行权限后,运行即可查看所有用户的账户过期状态。
注意事项
- 权限要求:查看用户过期信息通常需要root权限或具有sudo权限的账户。
- 日期计算:/etc/shadow文件中的过期时间是以天数形式存储的,需通过
date命令转换为可读日期。 - 自动化管理:对于企业级服务器,建议结合cron任务定期执行用户过期检查脚本,并及时处理过期账户。
相关问答FAQs
Q1: 如何修改用户的账户过期时间?
A1: 可以使用chage命令修改用户账户的过期时间,将用户“testuser”的账户设置为2025年12月31日过期,可执行以下命令:

sudo chage -E 2025-12-31 testuser
-E参数用于指定账户过期日期。
Q2: 如果账户已过期,如何重新激活?
A2: 账户过期后,用户无法登录,管理员可以使用chage命令修改过期时间或将其设置为永不过期,重新激活“testuser”账户:
sudo chage -E -1 testuser
-1表示永不过期,也可以直接修改/etc/shadow文件中对应字段的值为空来实现。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复