NGinx 和 PHP 应该以什么用户身份运行?

The*_*per 17 linux permissions runas users groups

权限是让我对 Linux 有一段时间感到困惑的东西。因此,此刻我的 NGinx 和 PHP-FPM 实例都与用户和组一起运行:

万维网数据

这是标准吗?当我遇到文件上传时遇到了麻烦。

例如,一个文件将与用户和组 www-data 一起上传。现在,由于我在 Web 应用程序中设置权限 (0440) 的方式,我无法使用普通帐户通过 ssh 登录来下载这些文件。这是无法改变的。

我正在考虑更改我的 nginx 和 php 实例以保留该组,但将它们更改为以我的用户名运行。

这里处理权限的正确方法是什么?谢谢你。

Kri*_*aps 14

这就是它的工作原理:当您通过 FTP/SSH 登录并上传文件时,它们是使用您的权限创建的。可能你的 webroot 是全局可写的 (0777),这是不安全的 - 系统中的每个用户都可以在那里写一些东西。PHP 以不同的用户权限运行(它们在 PHP-FPM 配置中指定,而不是 nginx 配置),并且由于目录是全球可写的,PHP 用户(www-data)也可以在那里写入。但此文件的所有者是 www-data,而不是您的帐户。它们是文件系统权限级别的 2 个不同帐户。

我建议您创建具有最低权限的专用用户,该用户将拥有 webroot 目录并用于 FTP/SSH 上传并运行 php。您应该更改 PHP-FPM 配置,在 worker 部分有用户条目和 NGINX 配置,这样您就可以使您的网站文件不可读且更安全。

不要使用特权(sudo 功能,在 docroot 外写入特权)用户运行 PHP,这可能会导致服务器安全受损。