如何设置 wordpress 上传权限?

如何设置 wordpress 上传权限?

我在共享主机(CentOS)上运行 wordpress 网站。只有当我将上传目录设置为 777 时,才能通过 wordpress 上传,但这并不安全。

上传目录归用户和组 psacln 所有(我们在服务器上使用 plesk)。

在 Google 上搜索之后仍然不明白我该怎么做,才能让用户从 wordpress 上传而不在目录上设置 777?

谢谢

答案1

该目录需要由运行 PHP 进程的同一用户拥有。如果您在 apache 下使用 PHP,则此用户通常是 apache。

您可以通过检查 httpd 的用户来检查这一点:

[user@host ~]$ ps aux | grep httpd

您将获得类似这样的输出:

[user@host ~]$ ps aux | grep nginx
root      4774  0.0  0.3  11204  3288 ?        Ss   12:20   0:00 /usr/sbin/httpd
apache    4776  0.0  0.1  11204  2076 ?        S    12:20   0:00 /usr/sbin/httpd
apache    4777  0.0  0.1  11204  2076 ?        S    12:20   0:00 /usr/sbin/httpd
apache    4778  0.0  0.1  11204  2076 ?        S    12:20   0:00 /usr/sbin/httpd
apache    4779  0.0  0.1  11204  2076 ?        S    12:20   0:00 /usr/sbin/httpd
apache    4780  0.0  0.1  11204  2076 ?        S    12:20   0:00 /usr/sbin/httpd
apache    4781  0.0  0.1  11204  2076 ?        S    12:20   0:00 /usr/sbin/httpd
apache    4782  0.0  0.1  11204  2076 ?        S    12:20   0:00 /usr/sbin/httpd
apache    4783  0.0  0.1  11204  2076 ?        S    12:20   0:00 /usr/sbin/httpd
root      4787  0.0  0.0   5500   716 pts/1    S+   12:20   0:00 grep httpd

在这里,我运行的是将 PHP 编译为模块的 apache,因此将权限更改为“apache”将解决您的问题,并且如果您确实有安全意识,您可以将权限重置为 755 或 700:

[user@host ~]$ chown apache /path/to/upload/dir
[user@host ~]$ chmod 755 /path/to/upload/dir

根据您的评论,您可以将apache和添加psacln到同一组,更改组所有权并以此方式进行 chmod

[user@host ~]$ sudo groupadd web  
[user@host ~]$ sudo usermod -G web apache  
[user@host ~]$ sudo usermod -G web psacln  
[user@host ~]$ chgrp web /path/to/upload/dir  
[user@host ~]$ chmod 070 /path/to/upload/dir   

您还可以使用 575 来获得 rwr 权限(所有者、组、其他)

答案2

我正在使用这个简单的脚本在文件系统上设置所有正确的权限,以保证 WordPress 安装尽可能安全,但仍然允许从 Web 服务器上传。

#!/bin/bash

PATH=/bin:/usr/bin
WEBROOT="/var/www/www.example.org"

UPLOADS="${WEBROOT}/wp-content/uploads"

chown -R nobody:nogroup ${WEBROOT}
find ${WEBROOT} -type d -exec chmod 0555 {} \;
find ${WEBROOT} -type f -exec chmod 0444 {} \;

chown nobody:www-data ${WEBROOT}/sitemap.xml ${WEBROOT}/sitemap.xml.gz
chmod 0464 ${WEBROOT}/sitemap.xml ${WEBROOT}/sitemap.xml.gz

chown -R nobody:www-data ${UPLOADS}
find ${UPLOADS} -type d -exec chmod 2575 {} \;
find ${UPLOADS} -type f -exec chmod 0464 {} \;

如果我想升级 WordPress 或任何插件或主题,我只需运行

chmod -R 0777 /var/www/www.example.org

然后进行更新。升级完成后,我立即运行第一个脚本来再次设置正确的权限。

答案3

使用 777 或添加 apache/http/user 权限并允许文件修改是不安全的。

不允许直接下载,只在升级时使用 ftp 或 SFTP 访问。这样,网站对文件只有读取/执行权限(如果你之前没有做过该死的 777)。

为了安全的权限管理,请使用 WSD 安全扫描器插件来测试您的 WP 是否安全。

相关内容