FHS是企业级Linux服务器目录规范的底层依据,核心要求:/bin和/sbin存放单用户模式必备命令并已链接至/usr;/etc为只读配置中枢;/var专管动态数据;/usr与/opt严格区分官方软件与第三方应用。

企业级 Linux 服务器的目录规范不是靠经验拍脑袋定的,而是以 FHS(Filesystem Hierarchy Standard)为底层依据,再结合高可用、可维护、易审计的实际运维需求来落地。核心在于理解“哪些目录必须独立分区”“哪些内容绝不能混放”“哪些路径是服务部署和日志收集的统一入口”。下面从四个关键维度讲清楚怎么真正用好 FHS。
/bin 和 /sbin:单用户模式下必须能活的命令
这两个目录存放的是系统启动、故障修复时依赖的最小命令集。/bin 是所有用户都能用的基础工具(如 bash、ls、cp、ps),/sbin 是管理员专用工具(如 ip、fdisk、reboot、systemctl)。现代主流发行版(CentOS 7+、Ubuntu 16.04+、Debian 9+)已将它们软链接到 /usr/bin 和 /usr/sbin,这是 FHS 3.0 推动的“/usr 合并”方案——既保持传统路径兼容,又简化维护。
运维建议:
- 不要手动修改 /bin 或 /sbin 的软链接指向,避免破坏系统初始化流程
- 排查启动失败问题时,优先检查 /usr 是否成功挂载;若 /usr 单独分区但未挂载,/bin 和 /sbin 将不可用
- 自定义脚本或二进制工具禁止直接丢进 /bin 或 /sbin,应放入 /usr/local/bin 并通过 PATH 管理
/etc:全系统配置的唯一可信源
/etc 是整个系统的静态配置中枢,只允许存放纯文本配置文件,严禁放二进制、日志、数据或临时文件。FHS 明确要求它必须是只读挂载的候选目录(生产环境可设为 mount -o remount,ro /etc 实现强约束)。
典型内容包括:
- 系统级:/etc/passwd、/etc/fstab、/etc/hosts、/etc/profile
- 服务级:/etc/nginx/nginx.conf、/etc/ssh/sshd_config、/etc/systemd/system/*.service
- 安全策略:/etc/pam.d/、/etc/security/limits.conf
运维建议:
- 所有配置变更前执行 cp /etc/xxx /etc/xxx.$(date +%Y%m%d).bak
- 推荐用 git 管理 /etc(如 etckeeper 工具),每次 yum/apt 升级或手动改配置都会自动 commit
- 禁止在 /etc 下创建子目录存放应用数据(例如 /etc/myapp/data),这类内容应归入 /var/lib/myapp
/var:运行时动态数据的法定归属地
/var 存放所有生命周期内持续变化的数据,是磁盘空间监控和日志治理的重点区域。FHS 将其细分为多个语义明确的子目录:
- /var/log:所有服务与系统日志(messages、secure、audit/、应用自定义日志)
- /var/lib:服务持久化状态(MySQL 数据目录、Docker 镜像存储、systemd journal)、软件运行时生成的数据
- /var/run(现多为 /run 的软链接):进程 PID 文件、socket 文件、锁文件
- /var/spool:待处理任务队列(cron、mail、at)
运维建议:
- /var/log 必须单独挂载或配 logrotate,防止日志写满根分区导致系统僵死
- 数据库、消息队列等有状态服务的数据目录应明确指向 /var/lib/xxx,而非 /opt 或 /home 下随意创建
- 避免把临时上传文件、缓存文件扔进 /var/tmp(该目录用于跨重启保留的临时文件),常规缓存应走 /tmp 或应用自身缓存路径
/usr 与 /opt:软件安装的职责边界
/usr 是只读软件资源库,存放由包管理器(yum/dnf/apt)安装的官方软件及其文档、库、帮助页。/opt 则专供第三方独立软件包(尤其是闭源、自包含、不依赖系统库的商业软件)使用,例如 Oracle JDK、JetBrains Toolbox、Zabbix Agent 二进制包。
关键区别:
- /usr/bin、/usr/lib 属于系统基础设施,不应被人工覆盖或删除
- /opt/
/bin 应加入 PATH,但需确保不与 /usr/bin 中同名命令冲突 - 任何通过 tar.gz 手动解压部署的软件,若无明确包管理支持,一律进 /opt,不得塞进 /usr/local(后者仅限源码编译安装且遵循标准 make install 流程的软件)
运维建议:
- 对 /usr 做只读挂载(mount -o remount,ro /usr)可防误操作篡改系统命令
- /opt 目录结构建议统一为 /opt/
/ / ,便于版本管理和清理 - 禁止将业务代码、配置模板、SQL 脚本等放 /usr/src 或 /opt/src —— 这些属于项目资产,应归入 /srv 或专用应用目录


















