0.4 文件与文件夹:数据是怎么存放的,一篇讲清目录树

0. 几万个文件,电脑是怎么帮你归类的

从网页下载资料,偶尔会遇到文件名报错、或者文件存完就找不到了;想找上周的一张图,面对密密麻麻的文件夹不知道从哪下手。

这篇讲计算机里最基础的组织方式:文件 和文件夹。讲清四件事:文件到底是什么、文件夹怎么一层层套成目录树、复制移动删除有什么区别、安全人眼里的文件意味着什么。读完你能看懂任何一个文件路径的结构,知道删除的文件还能不能找回,也能听懂"文件上传"和"路径穿越"这两个安全高频词。

1. 文件:有名字的数据

硬盘上几乎所有东西都是文件:一段文字、一张照片、一首歌、一个程序。每个文件至少有:

  • 一个文件名;
  • 一组数据内容;
  • 一些属性(大小、修改时间、类型等)。

文件名不是随便起的。Windows 和 Linux 都有一些不能出现在文件名里的字符,比如斜杠、冒号、星号、问号这些------它们在系统里有特殊含义(斜杠是路径分隔符、冒号是盘符标记),拿来当文件名会让系统分不清你在说什么。

新手常踩的坑是从网页下载文件时,文件名里带了冒号(比如"报告:最终版.pdf"),Windows 会自动把冒号变成别的字符或直接报错,这不是文件坏了,是文件名不合法。

2. 文件夹:分门别类的收纳箱

如果所有文件都堆在一起,几万个文件根本没法找。于是用**文件夹(也叫目录,Directory)**来归类,就像现实中的收纳箱、档案柜。

关键特点:文件夹里可以放文件,也可以再放文件夹,一层层套下去,形成一棵"树":

这种结构叫目录树 。最顶层叫根目录 (Windows 里是 C:\,Linux 里是 /)。

顺便建立对文件大小的直觉:计算机里衡量大小的基本单位是字节(Byte),一个英文字母大约占 1 字节、一个汉字通常占 2--3 字节;往上是 KB(约一千字节)、MB(约一千 KB)、GB(约一千 MB)。所以一张手机照片可能 3--5 MB、一首歌 4--10 MB、一部高清电影 1--4 GB,而一个纯文字的脚本往往只有几 KB------这也是为什么代码、脚本传起来特别快,而视频、镜像动辄几个 G。

还有一个对学安全很重要的观念:在 Linux 上几乎"一切皆文件 "。不光文档、图片是文件,硬盘、网卡、正在运行的进程信息,系统也都用"文件"的形式呈现给你(比如 /proc 目录下能读到进程的实时状态)。听起来奇怪,但好处是你只要学会"读文件、写文件"这一套操作,就能和系统里绝大多数东西打交道。后面讲反弹 Shell、文件描述符时你会再次遇到这个设计。

3. 四个最基本的文件操作

操作 含义 原处还有吗
复制(Copy) 生成一个相同副本到目标位置 有
移动(Move) 把文件搬到新位置 没有
重命名(Rename) 改名字,内容不变 ---
删除(Delete) 移除文件(通常先进回收站) 回收站里可还原

小技巧:按住 Ctrl 拖动文件通常是复制 ,直接拖动同盘内通常是移动。

关于删除多说一句:在 Windows 里按 Delete 删除的文件,默认是进回收站的,不是真的没了------你去回收站里右键"还原"就能找回来。但如果你按了 Shift+Delete,文件会被直接永久删除、不经过回收站,这种情况下基本救不回来。所以 Shift+Delete 只在你非常确定这个文件不要了的时候用,日常删除用普通 Delete 就好。

4. 文件的常见属性

右键文件看"属性",常能看到:

  • 大小:占多少字节(KB/MB/GB);
  • 创建/修改时间;
  • 类型:由扩展名决定(下一篇讲);
  • 只读 / 隐藏等标记;
  • 权限:谁能读、谁能改(Linux 下尤其重要)。

在 Windows 上右键文件选"属性"就能看到这些信息;在 Linux 命令行里用 ls -l 一条命令就能列出所有文件的权限、大小、修改时间------后面你会频繁用它来判断"这个文件能不能读、是不是别人传上来的"。

5. 安全人眼里的文件

  • 漏洞复现里你会频繁和文件打交道:配置文件 docker-compose.yml、脚本 detect.py、编译产物 payload.ser;
  • Web 攻击里,"能不能上传一个文件(如脚本)到服务器"是经典 GetShell 路径;
  • 路径穿越(ZipSlip、目录遍历)本质,就是程序没管好"文件该放在哪个文件夹",让攻击者把文件写到了不该写的位置。

具体说说这两个高频场景。

文件上传 :很多网站允许你传头像、传附件,这本是正常功能;但如果服务器没校验"你传的到底是不是图片",攻击者就可能传一个伪装成图片的脚本(比如 .php、.jsp),再想办法访问它,让服务器把这个脚本当程序执行------这就是经典的"上传 WebShell"。防御的关键,正是严格区分"这是要存起来的数据,还是要被执行的程序"。

路径穿越 :程序在解压压缩包、或按名字找文件时,本应把文件限定在指定文件夹里;但如果文件名里夹带了 ../../ 这种表示"跳到上一层目录"的写法,而程序又没拦下来,文件就可能被写到系统目录、启动目录等敏感位置(ZipSlip 就是解压时的这类问题)。你现在不用记住怎么利用,只要建立一个意识:凡是涉及"文件放到哪、从哪读",都要警惕路径被人操纵。这也是为什么下一篇我们要专门把"路径"讲透。

6. 本篇小结

  • 文件是有名字的数据单位,文件夹是归类容器,可层层嵌套成目录树,最顶层是根目录。
  • 基本操作:复制(留原件)、移动(不留)、重命名、删除(多进回收站)。
  • 文件有大小、时间、类型、权限等属性。
  • 安全上:文件上传、路径穿越、配置/脚本文件都与文件组织直接相关。

下一篇 0.5 讲文件名里的"扩展名",以及为什么 Windows 会默认把它藏起来(这其实是个安全隐患)。

如果你想顺着这套体系,从零基础一路学到内网与域控实战,看更多成体系、能动手跟练的安全文章,可以访问我的安全学习站点:

  • 站点地址:详见文章下附官网:【光跃Eason·安研社】

免责声明:本文仅用于网络安全研究与教学,所有测试均在本人授权的环境中进行。请严格遵守《网络安全法》,切勿对任何未授权系统测试。技术本身中立,关键在于使用它的人。

相关推荐
LLTSTJ13 天前
进制转换详解(二进制、八进制、十进制、十六进制)
二进制·进制转换·计算机基础·编程入门
Helix2501 个月前
2026编程入门指南:零基础如何科学选择第一门编程语言?
java·c语言·javascript·零基础·编程语言·python入门·编程就业
Elaine3361 个月前
数据结构与算法-程序
数据结构·python·算法·计算机基础·编程基础
玄芯散人2 个月前
【筑基·047】内存Hierarchy:寄存器到硬盘的速度差
缓存·内存·计算机基础
糖果店的幽灵5 个月前
软件测试接口测试从入门到精通:前置知识 - 计算机与网络基础
软件测试·接口测试·网络基础·计算机基础·测试入门
程序员老舅6 个月前
Linux:谁把根目录卸载了?
linux·c++·容器·linux内核·文件系统·根目录
Thanks_ks7 个月前
【第 001 讲】计算机底层基础与 Python 生态全景:硬件架构 | 语言演进 | 执行机制 | 语言特性 | 解释器 | 版本策略
python·编程语言·python入门·计算机基础·解释器·底层原理·cpython
白帽子黑客杰哥7 个月前
零基础学习网络安全完全指南(2026版)
web安全·零基础·渗透测试·漏洞挖掘·湖南网安基地·网安培训
分布式存储与RustFS7 个月前
Helm在Kubernetes上部署RustFS生产环境指南
分布式·零基础·picgo·对象存储·minio·rustfs