服务器上判断root用户的核心标准是UID(用户标识符)为0,而非用户名是否叫“root”。在Linux系统中,权限由UID决定,任何UID为0的账号都拥有超级管理员权限,这才是排查的关键。
查看服务器root用户的几种常用方法
直接查看/etc/passwd文件
这是最基础也是最直接的排查路径,在终端执行:
cat /etc/passwd | awk -F: '$3==0 {print $1}'
该命令会列出所有UID为0的账号,除了常规的root,如果出现其他用户名,说明系统存在额外的超级管理员账户,需要核实是否由管理员主动创建。
也可以直接查看文件内容,关注每一行的第三个字段(UID):
cat /etc/passwd
输出中,root:x:0:0:root:/root:/bin/bash 这行第三个字段是0,代表root用户,如果还有其他行第三个字段也是0,那就要提高警惕了。
方法使用getent命令查询
getent命令从系统数据库读取信息,比直接读文件更规范:
getent passwd | awk -F: '$3==0 {print $1}'
这个方法的好处是,如果服务器接入了LDAP或NIS等外部认证,也能一并查询到。
方法对比:root用户与sudo权限用户的区别
很多初学者容易混淆root用户和具有sudo权限的普通用户,两者有本质区别:
| 对比项 | root用户 | sudo用户 |
|---|---|---|
| 权限来源 | UID=0,直接拥有全部权限 | 通过sudoers配置获得临时提权 |
| 账户数量 | 通常1个,但可存在多个 | 可以有很多个 |
| 安全风险 | 风险高,操作不可控 | 相对可控,有日志记录 |
| 排查方式 | 检查UID为0的账户 | 查看/etc/sudoers或sudo组 |
服务器查看root用户时,两者都要排查,但排查思路不同,前者查身份,后者查授权。
服务器root用户的安全排查与加固建议
为什么服务器上会出现多个root用户
多数情况下,服务器只有root一个UID为0的账户,出现多个的情况,通常是以下原因:
- 运维人员为了业务便利,创建了新的超级管理员账号
- 被入侵后,攻击者留下后门账号
- 使用了某些一键脚本,脚本自动创建了别名账户
- 迁移服务器时,保留了旧系统的账户数据
行业共识认为,每台服务器上UID为0的账户越少越好,理想状态是只有一个。
如何检查root用户是否被非法登录
仅仅知道哪些是root用户还不够,还需要确认这些账户的活动状态:
last -f /var/log/wtmp | grep -E "root|UID为0的账户名"
这条命令能查看root用户的登录历史,再看当前在线用户:
who w
重点检查是否有陌生IP地址的root登录记录,如果有,说明服务器可能已被爆破。
加固建议:限制root直接登录
即使确认了root用户,也不建议日常使用root操作,更安全的做法是:
- 修改SSH配置文件
/etc/ssh/sshd_config,设置PermitRootLogin no - 创建普通用户,加入
wheel组或配置sudo权限 - 使用密钥登录替代密码登录
操作步骤:
useradd admin passwd admin usermod -aG wheel admin
修改sshd_config后,执行systemctl restart sshd生效。
Linux服务器root用户列表的完整审计流程
第一步:全面盘点账户信息
cat /etc/passwd
逐行检查,关注以下几个方面:
- UID为0的账户有哪些
- 拥有shell权限(/bin/bash、/bin/sh)的账户
- 近期修改过的账户文件
第二步:检查sudo授权情况
cat /etc/sudoers ls -l /etc/sudoers.d/
sudoers文件中的授权用户,虽然UID不是0,但拥有提权能力,这两类账户都要纳入管理范围。
第三步:核查用户组权限
cat /etc/group
重点查看root组、wheel组的成员列表,某些情况下,用户虽然不在/etc/passwd中显示UID为0,但如果加入了root组,同样能通过组权限获得高级访问能力。
第四步:检查登录配置
cat /etc/securetty
这个文件控制root用户可以从哪些终端登录,如果配置了非必要终端,建议清理。
服务器root用户管理的常见问题解答
如何确认一个用户是否拥有root权限
执行id 用户名命令,查看输出中的UID和GID,如果UID为0,就是root权限,也可以用sudo -l查看当前用户能执行哪些sudo命令。
不小心删除了root用户怎么办
如果系统还在运行,用单用户模式进入系统,挂载根文件系统后手动创建root用户,具体操作是:重启服务器,在GRUB引导界面按e键,在kernel行末尾添加single,进入单用户模式后执行:
mount -o remount,rw / useradd -u 0 -o -g 0 -M root passwd root
为什么服务器上root用户的密码无法修改
可能原因是文件系统被挂载为只读模式,或者/etc/shadow文件被设置了不可修改属性,检查命令:
lsattr /etc/shadow
如果显示i属性,用chattr -i /etc/shadow解除后再修改密码。
服务器查看root用户时,发现多个UID为0的账户该如何处理
保留主root账户,其他UID为0的账户如果确认是冗余或可疑的,建议修改其UID为非0值,或者直接禁用,操作前先确认该账户是否被进程使用,避免影响运行中的服务。
排查root用户是服务器安全审计的基础工作,建议定期执行检查,配合登录日志和文件变更监控,能及时发现潜在风险。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/710611.html





