修改Linux用户密码的核心命令是passwd。普通用户执行passwd可修改自身密码,系统会验证原密码并要求输入两次新密码;若密码符合PAM策略要求,则修改成功。root用户可使用passwd [用户名]为其他用户重置密码,无需旧密码。忘记root密码时,可通过GRUB引导时添加init=/bin/bash或rd.break enforcing=0进入救援模式,挂载根文件系统为读写后执行passwd root重置密码,若禁用SELinux需创建/.autorelabel文件以确保安全上下文正确。普通用户应设置强密码,避免使用易猜信息,密码需满足长度、复杂性、非字典词等PAM策略要求。系统管理员可使用chage -d 0 [用户名]强制用户首次登录修改密码,并通过脚本结合passwd --stdin实现批量密码设置,但需注意密码泄露风险。密码策略由/etc/pam.d/system-auth或common-password中的pam_pwquality.so模块控制,可通过调整minlen、lcredit、ucredit、dcredit、ocredit等参数自定义规则,修改前应备份配置文件以防锁定系统。

在Linux系统中,修改用户密码的核心工具是
passwd
passwd
要修改当前登录用户的密码,只需在终端输入:
passwd
系统会提示你输入当前密码,然后两次输入新密码。如果当前密码正确,且新密码符合系统的复杂性要求,密码就会被成功更改。
如果你是root用户,你可以为任何用户修改密码,无需知道该用户的旧密码。只需输入:
passwd [用户名]
例如,要修改用户
john
passwd john
这大概是每个Linux管理员都可能遇到的“惊魂一刻”。我记得有一次,就是因为手滑输错了几次密码,直接把自己锁在root外面,那种感觉真是又沮丧又刺激。好在Linux提供了救援模式(或单用户模式)来解决这个问题。
大致的思路是:在系统启动时,通过修改GRUB引导参数,让系统以root权限直接进入一个shell环境,这样我们就可以在不验证密码的情况下,重置root密码。
具体步骤通常是这样:
e
linux
linuxefi
init=/bin/bash
rd.break enforcing=0
init=/bin/bash
rd.break enforcing=0
enforcing=0
Ctrl+x
F10
rd.break
switch_root
mount -o remount,rw /sysroot chroot /sysroot
如果使用的是
init=/bin/bash
mount -o remount,rw /
passwd
passwd root
输入两次新密码。
/.autorelabel
touch /.autorelabel
exit reboot -f
系统会正常重启,你就可以使用新密码登录root了。这个过程虽然有点技术性,但只要按部就班,成功率很高。
其实,普通用户改密码这事儿,看似简单,里头也有些小门道。我个人经验是,别图省事儿用生日、电话号码之类的,真不安全。系统对密码强度的要求,往往是通过PAM(Pluggable Authentication Modules)模块来定义的。
当普通用户执行
passwd
注意事项:
chage -l [用户名]
系统会通过提示来引导你设置一个符合要求的密码。如果你的密码不符合要求,系统会给出错误信息,你需要重新输入。
管着几十上百号用户的系统,挨个儿改密码那简直是噩梦。我以前就写过小脚本,批量给新入职的同事设个临时密码,然后强制他们第一次登录就改掉,省心又安全。
1. 强制用户首次登录修改密码: 这是个非常实用的功能,特别是在创建新用户或重置用户密码后。你可以使用
chage
chage -d 0 [用户名]
这里的
-d 0
1970年1月1日
2. 批量修改用户密码: 如果你需要为多个用户设置相同的临时密码(或者在特定场景下需要批量重置),可以通过脚本配合
passwd --stdin
passwd --stdin
例如,为
user1
user2
user3
TempPass123
echo "TempPass123" | passwd --stdin user1 echo "TempPass123" | passwd --stdin user2 echo "TempPass123" | passwd --stdin user3
为了更安全,你可以结合
chage -d 0
一个简单的批量脚本示例:
#!/bin/bash
USERS=("user1" "user2" "user3")
TEMP_PASS="TempPass123!" # 确保临时密码也足够复杂
for user in "${USERS[@]}"; do
    echo "正在为用户 $user 设置临时密码并强制首次登录修改..."
    echo -e "$TEMP_PASS\n$TEMP_PASS" | passwd --stdin "$user"
    chage -d 0 "$user"
    if [ $? -eq 0 ]; then
        echo "用户 $user 密码设置成功,并已强制首次登录修改。"
    else
        echo "用户 $user 密码设置失败,请检查!"
    fi
done注意: 使用
passwd --stdin
刚接触Linux那会儿,最头疼的就是密码总是“不合格”。系统老是抱怨我密码太简单,但又不说具体哪里不行,真是让人抓狂。后来才搞明白,是PAM模块在作祟。
Linux系统中的密码策略是由PAM(Pluggable Authentication Modules)框架控制的。具体来说,是PAM配置文件中的
pam_pwquality.so
pam_cracklib.so
常见问题:
minlen
lcredit
ucredit
dcredit
ocredit
difok
reject_username
查看和调整密码策略: 密码策略的配置文件通常位于
/etc/pam.d/
system-auth
passwd
/etc/pam.d/system-auth
/etc/pam.d/common-password
你可以通过查看这些文件来了解当前的密码策略。例如:
grep -E 'minlen|lcredit|ucredit|dcredit|ocredit|difok|reject_username' /etc/pam.d/system-auth
或者在Debian/Ubuntu上:
grep -E 'minlen|lcredit|ucredit|dcredit|ocredit|difok|reject_username' /etc/pam.d/common-password
你会看到类似这样的行(以
pam_pwquality.so
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1
这表示:
minlen=8
lcredit=-1
ucredit=-1
dcredit=-1
ocredit=-1
调整策略: 如果你需要修改这些策略(例如,降低复杂性要求以提高用户体验,或提高复杂性以增强安全性),你可以编辑这些PAM配置文件。但请务必小心! 错误的PAM配置可能导致用户无法登录系统,甚至root用户也无法登录。在修改前,务必备份相关文件。
例如,如果你想将最小长度改为6,并移除特殊字符的要求,你可以将
minlen=8
minlen=6
ocredit=-1
ocredit=0
在调整密码策略时,需要在安全性和可用性之间找到一个平衡点。过于复杂的密码要求会让用户感到沮丧,可能导致他们将密码写下来或使用容易猜测的模式。而过于简单的密码则会带来安全隐患。
以上就是Linux修改用户密码的常见方法的详细内容,更多请关注php中文网其它相关文章!
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号