Linux修改用户密码有三种方法:一、普通用户用passwd改自身密码,需验证旧密码;二、root或sudo用户用sudo passwd username改他人密码,无需旧密码;三、root用chpasswd批量修改,支持明文密码输入或文件导入。

如果您需要在Linux系统中修改用户密码,但遇到权限不足或命令执行失败的情况,则可能是由于当前用户不具备相应权限或未正确使用passwd命令。以下是修改用户密码的多种方法:
一、使用passwd命令修改当前用户密码
普通用户可直接运行passwd命令修改自身密码,系统会提示输入当前密码以验证身份,再要求设置新密码并确认。该操作无需root权限,仅影响当前登录用户。
1、在终端中输入passwd命令并按回车键。
2、系统提示输入当前用户的旧密码,输入后按回车键。
3、系统提示输入新密码,输入后按回车键。
4、系统再次提示输入新密码进行确认,重复输入相同密码后按回车键。
二、使用passwd命令修改其他用户密码
只有root用户或具有sudo权限的用户才能修改其他用户的密码。该操作会绕过旧密码验证,直接设定新密码,适用于忘记密码或管理员批量维护场景。
1、在终端中输入sudo passwd username,其中username为需修改密码的目标用户名。
2、系统提示输入当前用户的sudo密码(非目标用户密码),输入后按回车键。
3、系统提示输入目标用户的新密码,输入后按回车键。
4、系统提示再次输入新密码以确认,重复输入后按回车键。
三、通过chpasswd命令批量修改密码
chpasswd命令支持从标准输入读取“用户名:新密码”格式的配对数据,适用于脚本化批量操作,需root权限执行,且密码明文传输,应在安全环境中使用。
1、以root身份登录或使用sudo su切换至root用户。
2、执行echo "username:newpassword" | chpasswd,其中username为目标用户名,newpassword为待设新密码。
3、若需批量处理多个用户,可将多行用户名与密码写入文本文件,例如users.txt,内容格式为每行user1:pass1、user2:pass2。
4、执行sudo chpasswd ,系统将逐行读取并更新对应用户的密码。
四、使用usermod命令配合passwd文件修改
usermod命令本身不直接设置密码,但可配合/etc/shadow文件中的加密密码字段实现密码变更。此方法需先生成密码哈希值,再以root权限写入shadow文件,适用于无交互环境或自动化部署。
1、使用openssl passwd -6生成SHA-512加密后的密码哈希值,输入新密码后获取输出字符串。
2、以root权限执行sudo vipw -s打开/etc/shadow文件的安全编辑器。
3、定位到目标用户名所在行,将第二个字段(即密码字段)替换为上一步生成的哈希字符串。
4、保存并退出编辑器,系统立即应用新密码,下次登录时需使用新密码验证。
五、通过GRUB单用户模式重置root密码
当系统无法正常登录且无可用sudo用户时,可通过GRUB引导菜单进入单用户模式,临时获得root shell权限以重置密码。该方法需物理或控制台访问权限,不依赖现有用户凭证。
1、重启系统,在GRUB启动菜单出现时按e键编辑当前启动项。
2、找到以linux开头的行,在行尾空格后添加rd.break(RHEL/CentOS 7+)或init=/bin/bash(部分旧版本或Ubuntu)。
3、按Ctrl+X或F10启动进入紧急模式,等待挂载完成。
4、执行mount -o remount,rw /sysroot重新挂载根文件系统为可写状态。
5、执行chroot /sysroot切换到真实根环境。
6、运行passwd root并按提示设置新密码,或对其他用户执行passwd username。
7、执行touch /.autorelabel(如SELinux启用)确保重启后正确恢复上下文。
8、连续两次执行exit退出chroot并重启系统。










