Answers:
实际的密码哈希存储在中/etc/shadow
,普通用户无法读取。 /etc/passwd
包含有关所有用户必须可读的用户ID和Shell的其他信息,系统才能正常运行。
/etc/shadow
。BSD使用/etc/master.passwd
。Solaris使用/etc/security/passwd
。HP-UX的使用情况/.secure/etc/passwd
在继续……
通常,散列密码存储在/etc/shadow
大多数Linux系统上:
-rw-r----- 1 root shadow 1349 2011-07-03 03:54 /etc/shadow
(它们存储在/etc/master.passwd
上BSD系统。)
需要执行身份验证的程序仍然需要以root
特权运行:
-rwsr-xr-x 1 root root 42792 2011-02-14 14:13 /usr/bin/passwd
如果您不喜欢setuid root
程序和系统中包含所有哈希密码的单个文件,则可以将其替换为Openwall TCB PAM模块。这为每个用户提供了自己的文件,用于存储其哈希密码 -结果,setuid root
可以大大减少系统上的程序数量。
密码已经存储/etc/passwd
多年了;名称是旧的,保留了作为本地用户数据库的功能,并且为此目的所有人都必须可读。
在某种程度上是可以识别用户的。过去,您还可以获取他们的密码。但是,一个真正值得破解的用户名root
是没有密码文件而众所周知的。
具有使密码文件世界可读的实用程序通常远远超过了风险。即使它不是世界可读的,但正常运行的getent passwd
命令会使安全性丧失。
非root用户识别其他人拥有的文件的能力将消失。能够识别拥有的(用户位于passwd文件中)和未拥有的文件(用户不在passwd文件中)对于检查文件系统的内容很有用。尽管可以使用适当的setuid
程序解决此问题,但这将通过这些程序增加巨大的攻击载体。
最后,这是一个平衡的问题,在这种情况下,我要说的是,平衡性完全取决于密码世界的可读性。