Linux設置賬號密碼永不過期的方法匯總
在 Linux 系統(tǒng)中,設置用戶賬號密碼永不過期可以通過多種方式實現(xiàn)。以下是詳細的操作指南:
方法一:使用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個字段(密碼最大天數(shù))改為 99999:
# 修改前: username:$6$xyz...:18687:0:90:7:30:: # 修改后: username:$6$xyz...:18687:0:99999:7:30::
Shadow文件字段說明:
- 用戶名
- 加密密碼
- 最后修改密碼的天數(shù)(從1970-1-1開始)
- 最小密碼年齡(0表示可立即修改)
- 最大密碼年齡(99999表示永不過期)
- 密碼過期前的警告天數(shù)
- 密碼過期后的寬限天數(shù)
- 賬戶過期日期
- 保留字段
方法三:使用usermod命令
# 設置密碼永不過期 sudo usermod -e "" username # 或者設置過期日期為永不過期 sudo usermod -e -1 username
方法四:全局密碼策略配置
1. 修改/etc/login.defs文件
sudo vi /etc/login.defs
修改以下參數(shù):
# 密碼最大天數(shù)(永不過期) PASS_MAX_DAYS 99999 # 密碼最小天數(shù) PASS_MIN_DAYS 0 # 密碼最小長度 PASS_MIN_LEN 8 # 密碼過期前警告天數(shù) PASS_WARN_AGE 7
注意:此配置僅對新創(chuàng)建的用戶有效,已有用戶需要單獨設置。
2. 批量修改現(xiàn)有用戶
# 修改所有現(xiàn)有用戶的密碼策略
for user in $(getent passwd | cut -d: -f1); do
sudo chage -M 99999 $user
done
# 或者只修改有登錄shell的用戶
for user in $(getent passwd | grep -v "/nologin\|/false" | cut -d: -f1); do
sudo chage -M 99999 $user
done
方法五:使用圖形化工具(如可用)
# 使用GNOME用戶管理工具 sudo gnome-users-admin # 使用KDE用戶管理工具 sudo kuser
驗證和監(jiān)控
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. 創(chuàng)建監(jiān)控腳本
#!/bin/bash
# check_password_expiry.sh
TODAY=$(date +%s)
WARN_DAYS=30
while IFS=: read -r user _ _ _ max _ _ _; do
if [[ "$max" -ne 99999 && "$max" -ne -1 ]]; then
expire_date=$(($(date -d "1970-01-01 + $max days" +%s)))
days_left=$(( (expire_date - TODAY) / 86400 ))
if [[ "$days_left" -le "$WARN_DAYS" ]]; then
echo "警告: 用戶 $user 的密碼將在 $days_left 天后過期"
fi
fi
done < <(sudo awk -F: '{print $1 ":" $5}' /etc/shadow)
恢復密碼過期策略
如果需要恢復密碼過期策略:
# 恢復默認密碼過期策略(90天) sudo chage -M 90 username # 設置特定過期日期 sudo chage -E "2024-12-31" username
安全注意事項
風險評估:
- 永不過期密碼降低了安全性
- 適用于服務賬戶或特定場景
- 不建議對普通用戶賬戶使用
替代方案:
# 使用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
審計要求:
# 記錄密碼策略變更
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文件 | 批量或精確控制 | 永久 | 系統(tǒng)范圍 |
usermod 命令 | 簡單設置 | 永久 | 僅指定用戶 |
| login.defs配置 | 新用戶默認設置 | 永久 | 所有新用戶 |
推薦做法:
- 生產(chǎn)環(huán)境使用
chage命令進行精確控制 - 服務賬戶可以設置密碼永不過期
- 定期審計永不過期賬戶
- 結合其他安全措施(如密鑰認證、多因素認證)
通過以上方法,您可以靈活地管理 Linux 系統(tǒng)中的用戶密碼過期策略,根據(jù)實際需求平衡安全性和便利性。
到此這篇關于Linux設置賬號密碼永不過期的方法匯總的文章就介紹到這了,更多相關Linux設置賬號密碼永不過期內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Linux如何用grep高效搜索二進制日志并統(tǒng)計匹配結果
在日常開發(fā)和運維工作中,日志分析是排查問題的重要手段,本文將詳細介紹?grep?處理二進制日志的技巧,并給出完整的解決方案,需要的小伙伴可以參考一下2025-04-04
linux所有命令都失效顯示bash: xxxxx: command not f
這篇文章主要介紹了linux所有命令都失效顯示bash: xxxxx: command not found的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05
Linux mysql-5.6如何實現(xiàn)重置root密碼
這篇文章主要介紹了Linux mysql-5.6如何實現(xiàn)重置root密碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-08-08

