织梦uploads权限如何正确设置?

99ANYc3cd6
预计阅读时长 12 分钟
位置: 首页 织梦建站 正文

为什么 uploads 目录权限如此重要?

uploads 目录是网站存放所有用户上传文件的地方,比如文章图片、软件附件、会员头像等。

织梦uploads权限
(图片来源网络,侵删)
  • 权限过高(如 777)的风险

    • 被写入木马:如果权限设置为 777,意味着服务器上的任何用户(包括黑客)都可以对这个目录进行写入、修改、删除操作,黑客可以利用网站的其他漏洞(如SQL注入、编辑器漏洞等)向 uploads 目录上传一个恶意的 .php 文件(木马)。
    • 执行恶意代码:一旦木马文件被上传到 uploads 目录,并且该目录的配置允许执行PHP脚本,黑客就可以通过浏览器访问这个木马文件,从而获得网站的最高控制权,可以窃取数据、篡改网页、植入后门等。
  • 权限过低的风险

    • 网站功能无法使用:如果权限设置得过低(如 600644),Web服务器(如Apache、Nginx)的运行用户(通常是 www-dataapache)将没有写入权限,这将导致:
      • 无法上传图片或附件。
      • 无法生成缩略图。
      • 无法更新缓存文件。
      • 网站后台的很多功能会报错。

核心原则uploads 目录需要“可写入”,但“不可执行”,也就是说,Web服务器需要有写入文件的权限,但不能在这个目录里直接运行PHP等脚本。


正确的 uploads 目录权限设置

目录权限

对于 uploads 目录本身,最推荐的权限是 755

织梦uploads权限
(图片来源网络,侵删)
  • 755 的含义
    • 所有者:读、写、执行 (rwx)
    • 所属组:读、执行 (r-x)
    • 其他人:读、执行 (r-x)

这个权限意味着:

  • 所有者(通常是网站管理员):可以完全控制目录。
  • Web服务器用户:可以进入目录(执行权限 x),并读取目录列表(读权限 r),从而可以写入文件,但它不能在这个目录下直接创建或删除文件(因为文件权限是独立的)。
  • 其他用户:只能看到目录存在,但无法进入或修改。

如何设置: 在Linux服务器上,通过SSH连接,执行以下命令:

# 将 uploads 目录及其所有子目录和文件的权限都设置为 755
find /path/to/your/dede/uploads -type d -exec chmod 755 {} \;

/path/to/your/dede/uploads 请替换成你网站中 uploads 目录的实际路径。

目录下文件的权限

对于 uploads 目录下的所有文件,最推荐的权限是 644

  • 644 的含义
    • 所有者:读、写 (rw-)
    • 所属组:读 (r--)
    • 其他人:读 (r--)

这个权限意味着:

  • Web服务器用户:可以读取和写入文件(因为所有者是 www-data,或者通过 chown 命令将文件所有者设置为Web服务器用户)。
  • 任何人都不能执行:文件没有 x (执行) 权限,这从根本上杜绝了上传的 .php 文件被服务器执行的可能性。

如何设置

# 将 uploads 目录及其所有子目录下的文件权限都设置为 644
find /path/to/your/dede/uploads -type f -exec chmod 644 {} \;

一个更安全的做法:禁止执行PHP脚本

仅仅设置文件权限为 644 是不够的,因为Web服务器的配置可能会覆盖文件权限,最彻底、最安全的方法是通过 .htaccess 文件来明确禁止uploads 目录及其子目录中执行任何脚本。

在你的 uploads 目录下创建或编辑一个名为 .htaccess 的文件,并添加以下内容:

# 禁止执行PHP、Perl、Python等脚本
<Files "*.php">
    Order deny,allow
    Deny from all
</Files>
<Files "*.pl">
    Order deny,allow
    Deny from all
</Files>
<Files "*.py">
    Order deny,allow
    Deny from all
</Files>
# 禁止访问 .htaccess 文件本身
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</Files>

这个 .htaccess 文件的作用是: 即使黑客上传了一个名为 shell.php 的木马文件,当黑客试图通过 http://yourdomain.com/uploads/shell.php 访问它时,Apache服务器会读取这个 .htaccess 文件,发现规则是禁止访问 .php 文件,从而直接返回 403 Forbidden 错误,木马无法被激活。


总结与操作步骤

为了确保你的织梦网站 uploads 目录安全,请按以下步骤操作:

  1. SSH登录服务器:使用你的SSH工具(如PuTTY、Xshell)登录到你的Linux服务器。

  2. 找到网站根目录:定位到你织梦网站的根目录,/www/wwwroot/yourdomain.com

  3. 设置目录权限:执行以下命令,将 uploads 目录及其子目录的权限设为 755

    chmod -R 755 /www/wwwroot/yourdomain.com/uploads
  4. 设置文件权限:执行以下命令,将 uploads 目录及其子目录下的所有文件权限设为 644

    find /www/wwwroot/yourdomain.com/uploads -type f -exec chmod 644 {} \;
  5. 创建 .htaccess 文件

    • 进入 uploads 目录:cd /www/wwwroot/yourdomain.com/uploads
    • 创建 .htaccess 文件:touch .htaccess
    • 编辑文件内容(使用 vinano 编辑器):
      vi .htaccess
    • 将上面提供的 .htaccess 代码粘贴进去,保存并退出。
  6. 检查所有者

    • 确保网站目录和文件的所有者是正确的Web服务器用户(通常是 www-data),如果不确定,可以执行以下命令:
      chown -R www-data:www-data /www/wwwroot/yourdomain.com

      注意:此命令会将整个网站目录的所有权都更改,请确保操作正确。

  7. 最终验证

    • 登录织梦网站后台,尝试上传一张图片或一个附件,确保功能正常。
    • 尝试在浏览器中访问 uploads 目录下的一个 .php 文件(你可以自己临时创建一个测试),确认返回的是403错误。

通过以上步骤,你的织梦 uploads 目录就能在保证功能正常的前提下,最大限度地提升安全性,有效防止木马上传和执行。

-- 展开阅读全文 --
头像
C语言中char如何准确转换为int?
« 上一篇 02-15
dede畅言评论审核如何开启?
下一篇 » 02-15
取消
微信二维码
支付宝二维码

目录[+]