在Linux服务器上,无法直接查看任何用户的明文密码,因为密码经过加密后存储在/etc/shadow文件中,只能通过命令查看用户名列表和加密后的哈希值。
linux服务器怎么查看用户名和密码?直接看密码不行!
很多人刚接触Linux服务器时,第一反应是“我能不能像Windows那样,在某个地方勾选显示密码?”答案很明确:不能,Linux将密码安全放在首位,所有密码都使用SHA-512或更高级别的散列算法加密,并且只有root用户能读取加密后的哈希值,即使你看到了哈希,也无法逆向还原出原始密码。
查看用户名清单:这些命令你该记住
虽然看不到密码,但查看系统上有哪些用户非常容易,最直接的方法是读取/etc/passwd文件:
cat /etc/passwd
每一行代表一个用户,用冒号分隔字段,第一个字段是用户名,第二个字段通常是x,表示密码被映射到/etc/shadow中,其他字段包括用户ID、组ID、家目录和默认Shell。
如果你只想看用户名,可以搭配cut或awk:
cut -d: -f1 /etc/passwd
或者使用getent命令,它从系统数据库(如NSS)中查询,同样可靠:
getent passwd | cut -d: -f1
对于支持bash补全的系统,compgen也是一个好帮手:
compgen -u
这个命令会列出所有可登录的用户名,包括系统用户和普通用户。
linux查看用户密码命令:只能看到加密哈希
如果你确实想看看密码的“真面目”,唯一能做的就是查看/etc/shadow文件,但前提是必须拥有root权限,执行:
sudo cat /etc/shadow
输出示例:
root:$6$xyz...:18875:0:99999:7:::
每个字段以冒号分隔,分别是:用户名、加密密码(以$6$开头表示SHA-512)、上次修改密码日期(距1970年1月1日的天数)、最小修改间隔、最大有效天数、警告天数、不活跃天数、过期日期和保留字段。
注意:这个加密密码是单向哈希,不可逆,即使你把它复制出来,也不能通过任何工具还原成明文,业内专家指出,任何声称能“破解Linux密码”的工具,本质上都是对常见密码进行暴力枚举,与哈希值比对,并非真正的逆向。
如果你忘记了linux服务器密码怎么办?
这是最常遇到的场景,也是搜索“linux服务器怎么查看用户名和密码”的另一个动机,忘记root密码后,不要慌,Linux提供了多种恢复途径,但都需要物理或远程控制台访问。
通过单用户模式重置root密码
几乎所有Linux发行版都支持在启动时进入单用户模式,以常见的CentOS 7/RHEL 7为例:
- 重启服务器,在GRUB启动菜单上按
e键进入编辑模式。 - 找到以
linux16或linux开头的行,在末尾添加rd.break(或init=/bin/bash,取决于发行版)。 - 按
Ctrl+X启动。 - 系统会进入紧急模式,此时根文件系统是只读的,需要重新挂载为读写:
mount -o remount,rw /sysroot chroot /sysroot
- 执行
passwd root,输入两次新密码。 - 如果SELinux是启用的,还需要创建自动重新标记文件:
touch /.autorelabel
- 退出并重启:
exit、reboot。
对于Ubuntu/Debian系统,步骤类似,但通常是在GRUB界面选择“Advanced options”进入恢复模式,选择“root – Drop to root shell prompt”,然后直接修改密码。
使用救援模式或Live CD
如果单用户模式无法进入(比如密码被锁定),可以准备一个同版本的Live CD或U盘启动,挂载根分区后,chroot进去,再用

passwd修改密码,这种方法适用于绝大多数Linux服务器,包括云服务器(需通过控制台VNC连接)。
批量修改用户密码的技巧
当需要一次修改多个用户密码时,可以用chpasswd命令,它从标准输入读取“用户名:密码”对:
echo "user1:NewPass123" | sudo chpasswd
或者从文件批量导入:
sudo chpasswd < userlist.txt
每个用户一行,格式严格为用户名:密码,注意,密码会以明文传输给chpasswd,但在写入/etc/shadow时会自动加密,所以不要在命令历史中留下明文。
如何创建和管理用户密码?对比场景
在实际服务器管理中,创建用户并设置密码是最基础的操作,不同发行版在命令细节上略有差异,但核心逻辑一致。
创建用户并设置密码
使用useradd或adduser(后者通常是前者的符号链接,但在Debian系中更友好),创建用户后,必须用passwd设置密码,否则用户无法登录:
sudo useradd newuser sudo passwd newuser
passwd命令会提示输入两次密码,如果希望第一次登录时强制修改密码,可以在创建时使用-e选项:
sudo useradd -e 0 newuser
或者之后使用passwd -e让该用户密码立即过期。
锁定与解锁用户
当怀疑某用户账号被入侵,或者员工离职时,立即锁定其账号是最佳实践,锁定密码不会删除用户,但使其无法通过密码登录:
sudo passwd -l username # 锁定 sudo passwd -u username # 解锁
查看锁定状态可以用passwd -S username,输出包含“L”表示锁定。
服务器密码安全策略

在中小企业服务器管理场景中,密码安全往往是薄弱环节。设置合理的密码策略能有效降低暴力破解风险,建议通过编辑/etc/login.defs和/etc/pam.d/common-password来配置:
- 密码最小长度:
PASS_MIN_LEN 8 - 密码最大有效期:
PASS_MAX_DAYS 90 - 密码过期前警告天数:
PASS_WARN_AGE 7
使用PAM的pam_pwquality模块可以强制密码复杂度,比如要求包含大小写字母、数字和特殊字符。
对于SSH登录,推荐使用密钥认证代替密码,并禁用root直接密码登录,安全专家指出,在公网环境中,仅使用密码登录的服务器,被暴力破解的风险远高于采用密钥+禁用密码的服务器。
常见问题
Q: linux查看所有用户命令是什么?
A: 常用命令包括cat /etc/passwd、getent passwd、compgen -u和awk -F: '{print $1}' /etc/passwd,其中getent支持NSS模块,能显示LDAP等远程用户,更全面。
Q: 普通用户能查看/etc/shadow吗?
A: 不能。/etc/shadow的权限默认是000,只有root用户能读取,普通用户执行cat /etc/shadow会得到“Permission denied”错误,这是系统保护密码哈希的基础机制。
Q: 如何批量修改用户密码?
A: 使用chpasswd命令,从标准输入或文件读取“用户名:密码”对,一次性完成修改,执行前务必确认文件权限,避免密码泄露,修改后可以验证/etc/shadow中的哈希值是否更新。
在Linux服务器上,我们无法查看明文密码,但通过cat /etc/passwd和cat /etc/shadow(root)可以管理用户信息和加密密码,忘记密码时,利用单用户模式或救援模式即可重置,安全第一,务必使用强密码并考虑密钥认证。

