Skip to content
📌知识点小结
  • 文件是硬盘上最小的、有名字的数据单位;文件夹(目录)用来把文件归类收纳。
  • 文件夹可以一层层嵌套,形成“目录树”;一个文件夹里可以再放文件夹。
  • 文件名通常由“主文件名 + 扩展名”组成,扩展名表示文件类型。
  • 复制、移动、重命名、删除是最基本的文件操作,要理解它们对“原文件”的影响。
  • 路径就是“从某个起点到这个文件,要经过哪些文件夹”,下一篇专门讲。
✅自测一下

0.4 文件与文件夹:数据是怎么存放的 ​

第〇篇【零基础预科】免费。这一篇讲计算机里最基础的组织方式——文件和文件夹。

一、文件:有名字的数据 ​

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

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

文件名不是随便起的。Windows 和 Linux 都有一些不能出现在文件名里的字符,比如斜杠、冒号、星号、问号这些——它们在系统里有特殊含义(斜杠是路径分隔符、冒号是盘符标记),拿来当文件名会让系统分不清你在说什么。新手常踩的坑是从网页上下载文件时,文件名里带了冒号(比如"报告:最终版.pdf"),Windows 会自动把冒号变成别的字符或直接报错,这不是文件坏了,是文件名不合法。

二、文件夹:分门别类的收纳箱 ​

如果所有文件都堆在一起,几万个文件根本没法找。于是用文件夹(也叫目录,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、文件描述符时你会再次遇到这个设计。

三、四个最基本的文件操作 ​

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

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

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

四、文件的常见属性 ​

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

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

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

五、安全人眼里的文件 ​

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

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

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

六、本篇小结 ​

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

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