权限让我对 Linux 感到困惑一段时间。因此,此刻我的 NGinx 和 PHP-FPM 实例都与用户和组一起运行:
www-数据
这是标准吗?当我遇到文件上传时遇到了麻烦。
例如,一个文件将与用户和组 www-data 一起上传。现在,由于我在 Web 应用程序中设置权限 (0440) 的方式,我无法使用我的普通帐户通过 ssh 登录来下载这些文件。这是无法改变的。
我正在考虑更改我的 nginx 和 php 实例以保留该组,但将它们更改为以我的用户名运行。
在这里处理权限的正确方法是什么?谢谢你。
这就是它的工作原理:当您通过 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,这可能会导致服务器安全受损。
www-data
用户和组是相当标准的。它可能是其他系统上的 www 或 web,但想法是相同的:使用专用帐户运行 Web 服务。因此,当您的 Web 服务器受到威胁时,攻击者将只能访问已授予此帐户的文件。如果用户必须管理 Web 服务,您应该将用户添加到相关组(www-data)或允许他 su(或 sudo)到相关用户(仍然是 www-data)。
出于安全原因,我尽量避免让 nginx/php 执行作为 www-data 拥有的脚本。