普通用户能够读/ etc / passwd,这是一个安全漏洞吗?

ls -l /etc/passwd 

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

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

实际密码哈希存储在/etc/shadow ,这是普通用户不可读的。 /etc/passwd保存有关用户id和shell的其他信息,这些信息必须是所有用户都可以读取的,以便系统正常运行。

通常, 散列的密码存储在大多数Linux系统的/etc/shadow中:

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

(它们存储在BSD系统上的/etc/master.passwd 中 。)

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

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

如果您不喜欢setuid root程序和一个包含系统上所有哈希密码的单个文件,则可以使用Openwall TCB PAM模块replace它。 这为每个用户提供了自己的文件来存储散列的密码 ,因此系统中setuid root程序的数量可以大大减less。

现在密码还没有存储在/etc/passwd中; 名称是遗留的,作为本地用户数据库的function仍然存在,为此目的,所有人都可以读取它。

在某种程度上,就像你可以识别用户一样。 在过去,你也可以拿起他们的密码。 然而,真正值得开发的一个userid是没有密码文件的众所周知的root

拥有世界可读密码文件的效用通常远远超过风险。 即使它不是世界可读的,运行的getent passwd命令也会使得安全性的增益无效。

非root用户识别他人拥有的文件的能力将消失。 能够识别拥有的(在passwd文件中的用户)和不拥有的文件(不在passwd文件中的用户)可以用于查看文件系统的内容。 虽然可以用适当的setuid程序来解决这个问题,但是通过这些程序会增加一个巨大的攻击媒介。

最后,这是一个平衡的问题,在这种情况下,我会说平衡是密码世界可读。