一、Linux 文件系统概述

Linux 文件系统采用层级式树状结构,所有文件和目录都从根目录(/)开始。这种结构遵循 FHS(文件系统层次结构标准),确保了不同Linux发行版之间的一致性。

二、核心目录结构详解

/ - 根目录

重要性:整个文件系统的起点,包含所有其他目录
注意事项:根目录通常不直接存储用户文件,只包含系统必要的目录

/
├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var

/bin - 基本用户命令二进制文件

重要性:系统启动和运行所需的最基本命令
包含内容

  • ls, cp, mv, rm, cat 等基础命令
  • bash, sh 等shell解释器

示例

ls /bin/ls /bin/cat /bin/bash

/boot - 启动引导文件

重要性:包含系统启动所需的所有文件
包含内容

  • 内核文件(vmlinuz-*)
  • 引导加载程序(GRUB)
  • 初始内存盘(initramfs)

安全警告:误删此目录内容将导致系统无法启动

/dev - 设备文件

重要性:所有硬件设备的接口文件
特殊设备文件

  • /dev/sda/dev/sdb:硬盘设备
  • /dev/tty*:终端设备
  • /dev/null:空设备(写入的数据被丢弃)
  • /dev/zero:零设备(提供无限的零字节流)

示例

# 查看磁盘设备
ls -l /dev/sd*

# 将输出重定向到空设备
echo "这个信息不会被保存" > /dev/null

/etc - 系统配置文件

重要性:系统的”控制中心”,包含所有配置文件
关键配置文件

/etc/
├── passwd          # 用户账户信息
├── shadow          # 加密的用户密码
├── group           # 用户组信息
├── fstab           # 文件系统挂载表
├── hosts           # 主机名解析
├── resolv.conf     # DNS配置
├── ssh/            # SSH服务配置
└── network/        # 网络配置

/home - 用户家目录

重要性:普通用户的个人工作空间
结构

/home/
├── alice/      # 用户alice的家目录
├── bob/        # 用户bob的家目录
└── charlie/    # 用户charlie的家目录

用户目录内容

  • ~/Desktop/:桌面文件
  • ~/Documents/:文档
  • ~/.bashrc:用户shell配置
  • ~/.ssh/:SSH密钥对

/lib, /lib64 - 共享库文件

重要性:程序和命令运行所需的共享库
包含内容

  • .so 文件(共享对象库)
  • 内核模块

/media - 可移动媒体挂载点

重要性:自动挂载可移动设备(U盘、光盘等)
示例

# 插入U盘后自动挂载到
/media/USB_Drive/

# 光盘挂载到
/media/CDROM/

/mnt - 临时挂载点

重要性:管理员手动挂载文件系统的临时位置
使用场景

# 手动挂载网络共享
mount -t nfs 192.168.1.100:/share /mnt/nfs_share

# 挂载ISO镜像
mount -o loop ubuntu.iso /mnt/iso

/opt - 可选应用程序软件包

重要性:第三方商业软件的安装目录
典型结构

/opt/
├── google/
│   └── chrome/     # Google Chrome浏览器
├── oracle/
│   └── java/       # Oracle JDK
└── vmware/         # VMware工具

/proc - 进程和系统信息虚拟文件系统

重要性:内核和进程信息的实时接口(内存中的虚拟文件系统)
关键文件

/proc/
├── cpuinfo         # CPU信息
├── meminfo         # 内存使用情况
├── loadavg         # 系统负载
├── mounts          # 已挂载文件系统
├── net/            # 网络统计信息
├── [PID]/          # 每个进程的详细信息
└── sys/            # 可调整的内核参数

实用示例

# 查看CPU信息
cat /proc/cpuinfo

# 查看内存使用
cat /proc/meminfo

# 查看系统负载
cat /proc/loadavg

/root - root用户的家目录

重要性:系统管理员(root)的个人工作目录
注意:普通用户无法访问此目录

/run - 运行时数据

重要性:存储系统启动后的运行时信息
包含内容

  • 守护进程的PID文件
  • 用户登录信息
  • 设备锁文件

/sbin - 系统管理命令二进制文件

重要性:系统管理命令,通常需要root权限
关键命令

  • fdisk:磁盘分区
  • ifconfig:网络接口配置
  • iptables:防火墙规则
  • shutdown:系统关机

/srv - 服务数据

重要性:网站、FTP等服务的数据文件
典型用法

/srv/
├── www/        # Web网站文件
├── ftp/        # FTP服务器文件
└── git/        # Git仓库

/sys - 系统设备信息虚拟文件系统

重要性:硬件设备和驱动信息的统一接口

/tmp - 临时文件

重要性:程序和用户的临时文件存储
特性

  • 所有用户都有读写权限
  • 系统重启时可能被清空

/usr - 用户程序和数据

重要性:Unix系统资源,包含大部分用户程序
详细结构

/usr/
├── bin/        # 用户命令(大部分命令在这里)
├── sbin/       # 系统管理命令
├── lib/        # 共享库
├── include/    # C/C++头文件
├── share/      # 架构无关的共享数据
├── local/      # 本地编译安装的软件
├── src/        # 内核源代码
└── games/      # 游戏程序

/var - 可变数据文件

重要性:经常变化的系统数据
关键目录

/var/
├── log/        # 系统日志文件
├── cache/      # 应用程序缓存
├── lib/        # 状态信息
├── run/        # 运行时数据(符号链接到/run)
├── spool/      # 队列数据(邮件、打印任务)
├── tmp/        # 临时文件(重启后保留)
└── www/        # Web网站根目录(某些系统)

三、目录权限和安全考虑

关键目录的典型权限

drwxr-xr-x   /bin, /usr/bin     # 所有人可执行,仅root可写
drwxr-xr-x   /etc               # 配置文件,仅root可写
drwx------   /root              # 仅root可访问
drwxr-xr-x   /home/user         # 用户自己的目录
drwxrwxrwt   /tmp               # 所有人可读写,粘滞位防止删除他人文件

安全最佳实践

  1. 最小权限原则:只授予必要的权限
  2. 定期检查:监控关键目录的权限变化
  3. 日志监控:关注/var/log下的安全日志
  4. 备份重要数据:特别是/etc配置文件和用户数据

四、实用命令示例

查看目录大小

# 查看根目录下各目录的大小
du -sh /* 2>/dev/null | sort -hr

# 查看磁盘使用情况
df -h

查找文件

# 在/etc下查找所有.conf文件
find /etc -name "*.conf"

# 查找大于100MB的文件
find / -size +100M 2>/dev/null

理解Linux目录结构是系统管理的基础,这种层次化的设计使得文件管理更加有序和安全。

作者:严锋  创建时间:2025-11-01 10:45
最后编辑:严锋  更新时间:2025-11-04 14:01