普通用户可以读取/etc/passwd,这是一个安全漏洞吗?

普通用户可以读取/etc/passwd,这是一个安全漏洞吗?
ls -l /etc/passwd

给出

$ ls -l /etc/passwd
-rw-r--r-- 1 root root 1862 2011-06-15 21:59 /etc/passwd

所以普通用户可以读取该文件。这是一个安全漏洞吗?

答案1

实际的密码哈希值存储在 中/etc/shadow,普通用户无法读取。 /etc/passwd保存有关用户 ID 和 Shell 的其他信息,这些信息必须可供所有用户读取,系统才能运行。

答案2

通常情况下,哈希/etc/shadow大多数 Linux 系统上的密码存储在:

-rw-r----- 1 root shadow 1349 2011-07-03 03:54 /etc/shadow

(它们存储/etc/master.passwdBSD 系统

需要执行身份验证的程序仍然需要以root权限运行:

-rwsr-xr-x 1 root root 42792 2011-02-14 14:13 /usr/bin/passwd

如果你不喜欢这些setuid root程序和一个包含系统上所有哈希密码的文件,你可以用Openwall TCB PAM 模块.这提供了每个用户都有自己的文件来存储散列密码—— 因此setuid root系统上的程序数量可以大幅减少。

答案3

/etc/passwd多年来,密码一直没有被存储;名称是遗留的,作为本地用户数据库的功能仍然存在,并且它必须为了这个目的,每个人都可以阅读。

答案4

在某种程度上是的,因为你可以识别用户。过去你也可以获取他们的密码。然而,真正值得破解的一个用户 ID 是即使root没有密码文件也能被人知道的用户 ID。

让密码文件可供所有人读取的好处通常远远大于风险。即使密码文件不是可供所有人读取的,运行getent passwd命令也会使安全收益失效。

非 root 用户将无法识别他人拥有的文件。能够识别拥有的文件(密码文件中的用户)和无拥有的文件(密码文件中没有的用户)对于查看文件系统的内容非常有用。虽然可以使用适当的setuid程序解决这个问题,但这将通过这些程序增加一个巨大的攻击媒介。

归根结底,这是一个平衡的问题,在这种情况下,我想说平衡在于让密码可供全世界读取。

相关内容