为什么nginx可以访问/ etc / passwd?

我正尝试在我的情侣网站上设置新的VPS。

nginx,php-fpm等安装所需的服务。

我为我的网站设置了一个nginx服务器块(虚拟主机),然后尝试创build一个用于testing的php文件。 一切正常,但是我想尝试echo file_get_contents('/etc/passwd')文件进行安全检查。 而且它的工作,一个test.php文件可以访问我的VPS etc / passwd文件等等。

在我尝试echo shell_exec('ls /')并显示我的根文件夹后。

那这是正常的吗? 或者我怎样才能防止这一点。 我想要拒绝访问所有除了/var/wwwwww-data用户运行PHP代码。

对不起,我的英语不好。

谢谢。

passwd文件是所有用户都可读的。 这是非常正常的。 与/相同。 程序需要访问/ etc / passwd来将用户名映射到ID。 实际的密码存储在更受限制的/ etc / shadow中。

如果由于某种原因,你不希望程序看到这些文件,你应该看看创build一个chroot监狱,它提供了自己的假根目录和所有需要的文件的单独副本。 但是对于大多数服务来说这是不必要

您可以通过设置和使用AppArmour或SELinux来阻止访问被禁止的边界。

你在这里说的是:“我把系统上运行的脚本访问到系统上的世界可读文件。”

是的,是的。