0

0

PHP怎么保护文件夹不被删除_PHP防止文件夹误删【技巧】

看不見的法師

看不見的法師

发布时间:2026-02-15 04:49:08

|

465人浏览过

|

来源于php中文网

原创

锁定父目录写权限是最直接有效的防删方式,因删除文件夹需父目录有写权限;chmod 755 或 750 父目录、路径白名单校验、chattr +a/+i 内核级防护及 --dry-run 机制共同构成多层防护。

php怎么保护文件夹不被删除_php防止文件夹误删【技巧】

chmod 锁定父目录权限是最直接有效的方式

文件夹本身删不掉,本质是因为操作系统需要对它的**父目录**有写权限——只要父目录不可写,哪怕文件夹是 777,你也删不掉它。
常见误操作是只改文件夹权限,结果没用;真正起作用的是上一级目录的 w 位。

实操建议:

立即学习PHP免费学习笔记(深入)”;

  • 确认目标文件夹路径,比如 /var/www/uploads,那关键就是 /var/www 这个父目录
  • 执行 chmod 755 /var/www(去掉组和其他人的写权限),或更保守地用 chmod 750 /var/www(仅所有者可写)
  • 避免用 chmod -R 直接套用到整个树,否则可能误锁子目录里本该可写的临时文件位置
  • 如果用 www-data 运行 PHP,确保该用户仍是父目录的所有者,否则会连创建文件都失败

PHP 代码里调用 unlink()rmdir() 前必须校验路径白名单

靠系统权限只能防手动误删,防不住代码逻辑出错或被注入后主动删目录。很多 CMS 插件、上传模块、缓存清理脚本一不留神就递归删了 ../ 上去。

实操建议:

立即学习PHP免费学习笔记(深入)”;

  • 所有涉及 rmdir()unlink()exec("rm -rf") 的地方,先做路径规范化和白名单比对
  • realpath($path) 获取绝对路径,再判断是否以允许的根目录开头,例如:if (strpos(realpath($path), '/var/www/public') !== 0) { die("非法路径"); }
  • 禁用 allow_url_fopenallow_url_include,防止通过 URL 参数注入任意路径
  • 不要依赖 $_GET['dir']$_POST['path'] 直接拼进文件操作函数,哪怕加了 basename() 也不够——它不防 ../

Linux 下用 chattr +a+i 是终极保险,但慎用

chattr 是内核级防护,比 chmod 更硬。但 PHP 进程通常没权限执行它,且一旦设错容易把自己也锁死。

Snyk Code
Snyk Code

当下比较流行的代码安全检查工具

下载

实操建议:

立即学习PHP免费学习笔记(深入)”;

  • chattr +a 允许追加但禁止删除/重命名,适合日志目录,不影响 PHP 写入
  • chattr +i 真·不可删不可改,连 root 都要先 chattr -i 才能动——除非你真准备永久冻结这个目录,否则别轻易上
  • PHP 无法直接调用 chattr,必须由运维在部署时用 shell 设置,且需确认文件系统支持(ext4/xfs 可,某些容器环境或 NFS 可能不认)
  • 设置后用 lsattr /path 检查,别设完就忘——下次更新配置想删旧目录时会卡住

误删后恢复难,所以重点得放在“删之前拦住”

Linux 删除是直接 unlink,没回收站。extundeletephotorec 成功率低、耗时长、还可能覆盖原数据。与其事后抢救,不如让删除动作本身变困难。

实操建议:

立即学习PHP免费学习笔记(深入)”;

  • 把敏感目录移到非 Web 根目录下,比如 /srv/app-data,和代码分离,降低被猜中路径的概率
  • 开发环境默认启用 disable_functions = rmdir,unlink,exec,passthru,上线前按需放开,但保留对关键目录的限制
  • 写个轻量钩子脚本监控 /var/log/auth.logauditd 日志,发现异常批量删除行为立刻告警
  • 最实在的一条:所有自动化清理任务,强制加 --dry-run 开关,默认只打印要删什么,人工确认后再跑真实版

权限、路径校验、内核属性这三层不是叠加越多越安全,而是得看谁在操作、在哪操作、删的代价有多大。一个被 PHP 脚本反复读写的上传目录,设 +i 就等于自废武功;而一个只存配置模板的 /etc/myapp/templateschattr +i 几乎零成本。

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

810

2023.08.22

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

810

2023.08.22

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1500

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

714

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

298

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

791

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

582

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

560

2023.07.20

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

76

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 11.8万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.2万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号