命令简介

passwd 命令是 Linux 系统中用于修改用户账户密码的重要命令。它不仅可以让用户自己修改自己的密码,管理员也可以使用它为其他用户账户设置或重置密码。passwd 还提供了丰富的选项,允许管理密码安全策略、密码有效期等。作为系统安全的基础,正确使用 passwd 命令对于保护系统账户至关重要。

命令格式

1
passwd [选项] [用户名]

参数说明

参数 描述 备注
-a, –all 可以修改所有用户密码 只有 root 用户可用
-d, –delete 删除指定用户的密码 使账号无密码登录
-e, –expire 强制下次登录时修改密码 -
-h, –help 显示帮助信息 -
-k, –keep-tokens 更改密码后保留原有密钥 用于 Kerberos
-l, –lock 锁定指定账户 只允许 root 修改密码
-n, –mindays 设置两次修改密码的最小天数 密码有效期
-q, –quiet 静默模式,不显示任何提示 -
-r, –remove 移除密码 -
-R, –root 使用 root 的密码 如获取随机 salt 等
-S, –status 显示账户和密码的状态信息 包括上次修改时间等
-u, –unlock 解锁账户 将被锁定的账户解锁
-w, –warndays 设置密码过期前的警告天数 -
-x, –maxdays 设置密码的有效期天数 到期后需重置密码

命令实例

基本用法

1.修改当前用户密码

1
2

passwd

按照提示输入新密码即可。

2.修改其他用户密码

1
passwd user1

需要 root 权限才能修改其他用户的密码。

3.锁定用户账户

1
passwd -l user1

锁定 user1 账户,只有 root 可以解锁并修改密码。

4.解锁用户账户

1
passwd -u user1

5.删除用户密码

1
passwd -d user1  

删除 user1 账户的密码,该账户将无需密码登录。

高级用法

1.设置密码有效期

1
passwd -n 7 -x 90 -w 14 user1

上面命令设置 user1 的密码有效期为 90 天,在到期前 14 天开始发出警告提示,且两次修改密码的最小间隔为 7 天。

2.批量设置密码有效期

1
2
3
#!/bin/bash

passwd -n 10 -x 180 -w 7 $(awk -F: '/^[^:]+:/ {print $1}' /etc/passwd)

该脚本会为系统中所有账户设置密码有效期为 180 天,到期前 7 天开始发出警告,并且两次修改密码的最小间隔为 10 天。

3.检查密码状态

1
passwd -S user1

4.使用脚本批量修改用户密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
!/bin/bash

# 获取要修改密码的用户列表
users=$(cat users.txt)

# 循环遍历用户列表
for user in $users; do

# 随机生成一个新密码
new_password=$(openssl rand -base64 12 | tr -dc 'a-zA-Z0-9' | head -c 12)

# 修改用户密码
echo "$user:$new_password" | chpasswd

done

该脚本可以批量修改指定文件中的用户密码。

5.使用expect脚本自动修改用户密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/bin/expect

# 定义要修改密码的用户列表
users = {"user1", "user2", "user3"}

# 循环遍历用户列表
foreach user in $users {

# 登录用户
spawn passwd $user

# 输入旧密码
expect "Password:"
send "$user\r"

# 输入新密码
expect "New password:"
send "new_password\r"

# 确认新密码
expect "Retype new password:"
send "new_password\r"

# 退出
expect eof

}

显示 user1 账户的密码状态信息,包括上次修改时间、密码有效期、账户锁定状态等。

总之,passwd 命令是管理 Linux 系统账户和密码安全的重要工具。对于系统管理员来说,正确使用 passwd 命令非常必要,可以帮助保护系统账户的安全性。除了上述介绍的基本用法,passwd 还有更丰富的高级功能,以满足各种场景下的密码管理需求。如有任何其他疑问,欢迎继续提问。