批量修改Linux账户密码
Eave
2026.06.23
批量修改Linux账户密码
#!/bin/bash
PASSWD_FILE="users.txt"
LOG_FILE="batch_passwd.log"
if [ ! -f "$PASSWD_FILE" ]; then
echo "密码文件不存在: $PASSWD_FILE"
exit 1
fi
# 用 :作为字段分隔符 第一个字段 → user,第二个 → password
while IFS=: read -r user password; do
# 去除空行和注释
[[ -z "$user" || "$user" =~ ^# ]] && continue
if id "$user" &>/dev/null; then
echo "$user:$password" | chpasswd
if [[ $? -eq 0 ]]; then
echo "$(date '+%F %T') SUCCESS $user" | tee -a $LOG_FILE
echo "user=$user password=$password" | tee -a $LOG_FILE
else
echo "$(date '+%F %T') FAILED $user" | tee -a $LOG_FILE
fi
else
echo "$(date '+%F %T') SKIP $user (not exist)" | tee -a $LOG_FILE
fi
done < $PASSWD_FILE
或者更简单的方法:chpasswd < users.txt
users.txt文件内容或格式如下:
mysql:password123
www:password123
附
1、强制下次登录修改密码
# 设置密码最后修改日期 0:表示 1970-01-01
chage -d 0 $user
2、密码过期策略
# 密码最多使用90天,到期后必须修改
chage -M 90 $user
| 参数 | 含义 |
|---|---|
| -d 0 | 立即过期(下次登录改密) |
| -m 7 | 最短7天内不能改 |
| -M 90 | 最长90天 |
| -W 7 | 提前7天警告 |
| -E 2026-12-31 | 账号到期时间 |
3、查看效果
chage -l $user
4、密码不过期通用规则
# 密码不过期通用规则(加大密码过期时间)
chage -M 99999 $user
# 清除单个用户的密码过期策略(最常用)
chage -d -1 -m 0 -M -1 -I -1 -E -1 sshuser
5、openssl命令生成密码
# 生成24位随机密码
password=$(openssl rand -base64 18)