Linux根目录结构遵循FHS标准,核心目录功能明确:/bin和/sbin存放单用户模式必备命令,/etc为静态配置中枢,/var存动态日志与状态数据,/usr为只读软件资源库,/home、/root、/tmp、/opt各司其职,共同保障系统稳定与可维护性。

Linux 的根目录结构不是随意堆砌的,而是一套经过长期演进、被广泛采纳的工程规范——FHS(Filesystem Hierarchy Standard)。它不追求“好记”或“直观”,而是围绕系统稳定性、启动可靠性、维护可预测性来设计。理解它,等于拿到 Linux 系统的“内部地图”。
/bin 与 /sbin:单用户模式下能活下来的命令
这两个目录存放的是系统在最小化运行状态(比如启动失败进入救援模式)时仍必须可用的二进制程序。
- /bin 放通用基础命令:ls、cp、mv、bash、cat、ps 等,所有用户都能执行
- /sbin 放管理员专用命令:fdisk、ip、reboot、iptables、systemctl(部分发行版),普通用户默认不能直接运行
- 现代发行版(CentOS 7+、Ubuntu 16.04+、Debian 9+)普遍将 /bin 和 /sbin 软链接到 /usr/bin 和 /usr/sbin,这是 FHS 3.0 推动的“/usr 合并”实践,既保持兼容又简化结构
/etc:整个系统的配置中枢
这里只放静态文本配置文件,不放程序、不放日志、不放数据——FHS 明确禁止混放。它是你修改系统行为的第一落点。
- 核心系统配置:/etc/passwd(用户列表)、/etc/fstab(磁盘挂载规则)、/etc/hosts(本地域名映射)
- 服务配置:/etc/nginx/nginx.conf、/etc/ssh/sshd_config、/etc/systemd/system/(自定义服务单元)
- 生产中建议用版本控制(如 git)管理 /etc,或定期 tar 打包备份;误删或写错可能导致服务无法启动
/var:系统运行起来后不断变化的地方
/var 是“variable”的缩写,所有随系统运行而动态生成、增长、更新的文件都归这里管。它和 /etc 的“静态”形成鲜明对比。
- /var/log:所有日志的归宿,messages、secure、kern、应用日志都在此;logrotate 默认在此工作
- /var/lib:持久化状态数据,如 /var/lib/mysql(MySQL 数据库文件)、/var/lib/docker(Docker 镜像与容器元数据)
- /var/run 已被 /run 替代(FHS 3.0 明确推荐),但很多脚本仍兼容软链;/run 是 tmpfs 内存文件系统,关机即清空
/usr:只读软件仓库,不是“用户目录”
新手常误以为 /usr 是给“用户”用的,其实 usr = Unix System Resources,是系统级只读资源集合,包含绝大多数安装的程序、库、文档和共享数据。
- /usr/bin 和 /usr/sbin:现在承载了绝大部分命令,/bin 和 /sbin 只是兼容入口
- /usr/lib 和 /usr/lib64:动态链接库、内核模块、服务插件等存放地
- /usr/share:架构无关的共享数据,比如 man 手册页(/usr/share/man)、locale 语言包、图标主题
- 生产部署时,/usr 通常以只读方式挂载,防止意外篡改;升级软件包一般也只更新此处
/home、/root、/tmp、/opt:各司其职的补充角色
这些目录虽不在 FHS 第一层强制规范的核心圈,但在实际使用中不可或缺。
- /home/username:普通用户的个人空间,家目录默认在此,含 .bashrc、桌面文件等
- /root:root 用户的家目录,独立于 /home,保障管理员账户隔离与安全
- /tmp:临时文件存放处,系统重启后内容通常清空;FHS 建议设为 tmpfs 或自动清理策略
- /opt:第三方大型独立软件包(如 JetBrains 全家桶、Oracle DB)的传统安装位置,结构自成一体,不混入 /usr
这套结构不是教条,而是大量运维经验沉淀出的共识。它让不同发行版之间迁移配置、排查故障、编写自动化脚本变得可预期。哪怕你只是日常使用 Linux 桌面,知道 /etc 控制网络、/var/log 查看错误、/usr/bin 找命令,就已经跨过了最陡的入门坡。


















