Linux 使用者帳號預設永不過期,但在企業環境中常需設置有效期以符合合規要求。當帳號過期導致無法登入時,系統管理員需掌握多種修改手段。本文系統整理建立帳號時預設、修改現有帳號屬性、調整過期時間三大核心方法,並附帶 chage 驗證技巧與腳本化建議。
useradd linuxidc -e 01/28/2012
日期格式為 MM/DD/YYYY 或 YYYY-MM-DD。
編輯 /etc/default/useradd 中的 EXPIRE 參數,或使用命令:
# 查看當前預設
grep EXPIRE /etc/default/useradd
# EXPIRE=
# 設定預設過期日期(此處為 2012-01-19)
useradd -D -e 01/19/2012
# 驗證生效
useradd -D | grep EXPIR
# EXPIRE=01/19/2012
# 建立測試帳號(未指定 -e,應套用預設)
useradd tmpuser3
# 查看帳號過期資訊
chage -l tmpuser3
# 輸出關鍵行:
# Account expires : Jan 19, 2012 ← 即為修改的預設值
# 還原預設(清空 EXPIRE)
useradd -D -e ""
useradd -D | grep EXPIRE
# EXPIRE=
重要提示:修改 /etc/default/useradd 僅影響之後新建的帳號,現有帳號不受影響。
usermod)usermod -e 01/28/2012 linuxidc
直接調整指定帳號的過期日期,立即生效,適用於單一帳號緊急調整。
chage)# 設定過期日期
chage -E 01/28/2012 linuxidc
# 查看完整過期/密碼策略資訊
chage -l linuxidc
# 輸出範例:
# Last password change : Jan 24, 2012
# Password expires : never
# Password inactive : never
# Account expires : Jan 19, 2012
# Minimum days between change : 0
# Maximum days between change : 99999
# Warning days before expire : 7
chage 專門管理密碼與帳號老化策略,參數更豐富:
| 參數 | 說明 |
|---|---|
-E, --expiredate | 帳號過期日期 (YYYY-MM-DD) |
-M, --maxdays | 密碼最大有效天數 |
-m, --mindays | 密碼最短修改間隔天數 |
-W, --warndays | 過期前警告天數 |
-I, --inactive | 過期後鎖定前緩衝天數 |
#!/bin/bash
# 批量延長指定群組帳號過期 90 天
GROUP="developers"
EXTEND_DAYS=90
getent group "$GROUP" | cut -d: -f4 | tr ',' '\n' | while read user; do
if id "$user" &>/dev/null; then
# 計算新過期日期
NEW_EXPIRE=$(date -d "+$EXTEND_DAYS days" +%Y-%m-%d)
chage -E "$NEW_EXPIRE" "$user"
echo "Extended $user to $NEW_EXPIRE"
fi
done
YYYY-MM-DD 避免月日歧義。chage -M 控制密碼壽命,chage -E 控制帳號生命週期,兩者獨立運作。usermod -L/-U 鎖定/解鎖密碼,不影響過期邏輯;passwd -l/-u 同理。
掌握三大修改法與 chage 驗證體系,配合腳本化批量操作,即可輕鬆應對 Linux 帳號生命週期管理的各類合規與運維場景。