通过 wp-cli 和 wordpress 仪表板管理 LEMP 服务器的安全文件所有权和权限设置?

通过 wp-cli 和 wordpress 仪表板管理 LEMP 服务器的安全文件所有权和权限设置?

我在 LEMP VPS 上进行了以下设置;

cd /home/$USER/public/myDomain.com        # change directory to myDomain.com
chown -R nginx:nginx .                    # change file ownership
find . -type d -exec chmod 750 {} \;      # change permissions for directories
find . -type f -exec chmod 640 {} \;      # change permissions for files
chmod 400 wp-config.php                   # change permission for wp-config

问题是,如果不以 root 身份登录,我无法进入“myDomain.com”文件夹。此外,我无法以 身份运行wp-cli$USER我必须按如下方式运行;

sudo -u nginx wp <wp-command>             # running wp-cli as user `nginx`

因此,正如标题所说,LEMP VPS 中文件所有权和权限的安全设置是什么。

答案1

这已完全涵盖在NGINX 和 PHP-FPM。我的权限应该是什么?

本质上:

  • 出于安全目的,始终有一个特定于站点的用户,并且为了方便,该用户以您的域名命名,例如example.com,创建一个example用户。
  • 将 NGINX 设置为站点特定用户组的成员:usermod -a -G example nginx
  • 现在,您可以根据需要保护一些东西,方法是将 chmod 赋予 PHP 需要读取/执行文件的用户位,并删除 NGINX 不需要访问的组 chmod 位

按照建议的设置,chmod 400 将导致wp-config.php只有站点用户才能对配置进行只读访问(并且 NGINX 将无法为其提供服务,这是好事)。

关于在哪里文件应该存储

假设有:nick(sudo 用户)和example用户(特定于站点)...:

网站文件应该被移动到一个与用户无关的位置(例如/var/www/example.com)。或者(稍微糟糕一点)放在网站用户的主目录下,例如/home/example/example.com

如果你打算使用单个 SSH 用户进行连接,你可以随意更改为特定用户。例如,如果你希望始终连接nick,但有时与一起工作example.com,您将通过更改为网站用户sudo -iu example

将网站文件存储在具有 sudo 权限的用户的主目录中听起来并不安全,并且是最不可取的:

  1. 如果网站文件归用户所有nick(而你根本没有example用户),那么一旦网站被黑客入侵,他们就可以获得整个服务器的管理访问权限
  2. 如果网站文件归 所有example,那么唯一可行的方法就是将限制/home/nick从 0700 降低到 0750(至少)。

FHS 授权的文件托管位置实际上是/srv/这是有争议的,但无论如何比 homedirs 要好。

相关内容