我客户的网站托管在 Digital Ocean 上,运行的是 Ubuntu 20.04 和 Apache。我安装了 WordPress 并运行了一些问题。由于权限问题,无法上传或更新插件和主题。我一直在关注 WordPress 官方的安全强化文章,但我相信我所应用的一些更改导致了权限问题。
我已将当前所有权限设置详述如下,以供参考。此帐户的用户是卡尔尼希尔。
根 WordPress 目录 (callkneehill.ca) 和在 /var/www 中找到的文件:
- 755
- 644
- 业主和团体称为kneehill
wp-admin 和 wp-include 目录和文件(递归应用):
- 755
- 644
- 业主和团体称为kneehill
wp-content 目录和文件(递归应用):
- 755
- 644
- 主人是 callkneehill
- 群组为 www-data
插件和主题目录和文件(递归应用):
- 755
- 644
- 所有者和团体是 callkneehill
有了这些权限,WordPress 会通知我需要使用 FTP/SFTP 来上传/更新插件和主题。在阅读强化文章之前,www-数据是 WordPress 根目录内权限的唯一所有者和组。
如果我使用www-数据在插件和主题目录上,尝试上传或更新时会显示相同的 FTP/SFTP 通知。
我该如何配置用户和组权限来增强安全性并具备在 WordPress 中上传/更新的能力?
使用每个用户池配置设置进行更新
chdir 应该是 /var/www/callkneehill.ca 吗?
/etc/php/7.4/fpm/pool.d
[callkneehill]
user = callkneehill
group = callkneehill
listen = /run/php/callkneehill.sock
chdir = /var/www
listen.owner = www-data
listen.group = www-data
/etc/apache2/站点可用
<FilesMatch \.php$>
# SetHandler "proxy:unix:/var/run/php/php7.4-fpm.sock|fcgi://localhost"
SetHandler "proxy:unix:/run/php/callkneehill.sock|fcgi://localhost"
</FilesMatch>
答案1
核心问题可能不是文件权限,而是您以 的身份运行 PHP,而不www-data
是以 用户 的身份运行 PHP-FPM 池callkneehill
。当您以拥有脚本的同一用户身份运行脚本时,您不需要这种黑客攻击。在多用户系统上,这也很重要,因为它可以防止用户修改其他用户的网站。
关于在 Ubuntu 20.04 上安装 PHP-FPM 的教程有很多,这里就不重复了。因此,我仅在 中给出了一个按用户池的示例/etc/php/7.4/fpm/pool.d/callkneehill.conf
:
[callkneehill]
user = callkneehill
group = callkneehill
listen = /run/php/callkneehill.sock
chdir = /var/www
listen.owner = www-data
listen.group = www-data
VirtualHost
通过添加使用 UNIX 套接字的处理程序,可以使用 Apache 配置中的池:
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/callkneehill.sock|fcgi://localhost"
</FilesMatch>