在 Ubuntu 20.04 中,我执行以下两项根记录:
getent passwd| grep root
我有
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/sh
当我使用
getent group| grep root
我有
root:x:0:
root:x:0:
我是否理解正确,这是因为这台机器有一个 LDAP 服务器并且 nsswitch.conf 包含:
密码:文件 systemd 组:文件 systemd
并且删除“systemd”就足以消除此异常吗?并且两个“root”的存在并不意味着入侵系统?
注意在澄清“FedonKadifeli”和“Raffa”的问题后:
/etc/passwd 和 /etc/group 文件中只有一个“root”条目。我做了一个实验,删除了 /etc/nsswitch.conf 文件中的“systemd”条目,留下:
passwd: files
group: files
并获取一条记录
getent passwd| grep root
:
root:x:0:0:root:/root:/bin/bash
并有一条记录
getent group| grep root
:
root:x:0:0
答案1
黑客不会从添加此类重复条目中获益,并且如果黑客已经获得了sudo
对您系统的访问权限,那么这个问题将是您最不用担心的问题。所以请放心。
一个概率
getent
将从名称服务切换库中获取条目:
getent 命令显示名称服务切换库支持的数据库中的条目,这些库在 /etc/nsswitch.conf 中配置。如果提供了一个或多个键参数,则仅显示与提供的键匹配的条目。否则,如果没有提供键,将显示所有条目 (除非数据库不支持枚举)。
是的,getent
将查询任何可访问的数据库/etc/nsswitch.conf
包括/etc/passwd
并/etc/group
提及files
以及可能LDAP
提到的其他服务systemd
(通过 systemd 的瓦林克和nss-systemd) 并显示所有数据库的所有结果。
值得一提的是,nss-systemd 模块还确保 root 和 nobody 用户和组(即 UID/GID 为 0 和 65534 的用户/组)始终保持可解析,即使它们未在 /etc/passwd 或 /etc/group 中列出,或者这些文件丢失。
另一个概率
另一种解释是,您有两个针对同一用户的条目,但用户 shell 不同密码文件 /etc/passwd
:
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/sh
并且有两个重复的相同条目用户组文件 /etc/group
:
root:x:0:
root:x:0:
重复的条目并不正常,但可能会发生...例如由于尝试按照 Internet 上的某些指南更改用户 shell 并复制粘贴,而类似的条目已经存在(对于像 root 这样的常用用户名来说很有可能),或者可以通过运行修改/etc/passwd
并/etc/group
具有sudo
权限的脚本来添加。
/etc/passwd
虽然您的系统可能在和中有重复条目的/etc/group
情况下正常工作,即读取第一个条目并忽略重复项,但最好删除重复的行(请先阅读有关内容,并确保在修复和使用之前备份文件vipw/vigr进行编辑)。