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

Ank*_*wal 20 security linux bash root

ls -l /etc/passwd
Run Code Online (Sandbox Code Playgroud)

$ ls -l /etc/passwd
-rw-r--r-- 1 root root 1862 2011-06-15 21:59 /etc/passwd
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*ael 51

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

  • 现代*Linux* 使用`/etc/shadow`。BSD 使用`/etc/master.passwd`。Solaris 使用`/etc/security/passwd`。HP-UX 使用 `/.secure/etc/passwd` 并且列表还在继续...... (4认同)
  • 不是真的 - 历史上的密码保存在 /etc/passwd 中 - 但这使得蛮力匹配变得简单 - 因此现代系统使用 /etc/shadon 和 pam_unix 和类似的。 (3认同)

sar*_*old 16

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

-rw-r----- 1 root shadow 1349 2011-07-03 03:54 /etc/shadow
Run Code Online (Sandbox Code Playgroud)

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

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

-rwsr-xr-x 1 root root 42792 2011-02-14 14:13 /usr/bin/passwd
Run Code Online (Sandbox Code Playgroud)

如果您不喜欢这些setuid root程序和一个包含系统上所有散列密码的单个文件,您可以将其替换为Openwall TCB PAM 模块。这为每个用户提供了他们自己的文件来存储他们的散列密码——因此setuid root可以大大减少系统上的程序数量。


gee*_*aur 13

密码已/etc/passwd多年未存储;该名称是遗留的,作为本地用户数据库的功能仍然存在,并且为此目的必须可供所有人阅读。

  • 世界可读性是一个设计决定,而不是必需品 (2认同)

Bil*_*hor 6

在某种程度上是这样,因为您可以识别用户。在过去,您还可以获取他们的密码。但是,真正值得破解的用户IDroot是众所周知的没有密码文件的用户ID 。

使密码文件世界可读的效用通常远远大于风险。即使它不是世界可读的,一个有效的getent passwd命令也会使安全增益无效。

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

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