Ubuntu遵循Linux文件系统层次标准(FHS),根目录下各目录职责明确:/bin存基础命令,/sbin存管理命令,/etc存系统配置,/dev为设备文件入口,/boot存启动文件,/lib(/lib64)存共享库,/home为用户空间,/root为root家目录,/tmp存临时文件,/media和/mnt为挂载点;/usr为只读程序资源仓库,/var存运行时变化数据;/proc、/sys、/srv、/opt为Ubuntu扩展目录;乱放文件会破坏更新、安全与维护机制。

Ubuntu 遵循 Linux 的文件系统层次标准(FHS),这不是 Ubuntu 自定的规则,而是整个 Linux 生态统一采用的目录组织规范。理解它,等于掌握系统“文件该往哪放”的底层逻辑——不是凭感觉,而是有据可依。
/ 根目录下的核心目录分工
FHS 第一层规范定义了根目录下各目录的职责,这些是所有 Ubuntu 系统共有的骨架:
-
/bin:存放所有用户都可用的基础命令,如
ls、cp、cat。这些命令在单用户模式下也必须可用。 -
/sbin:专供系统管理员使用的管理命令,如
fdisk、ifconfig(新版多由ip替代)、reboot。 -
/etc:全系统的配置中心。所有服务和程序的设置文件都在这里,比如
/etc/nginx/nginx.conf、/etc/passwd、/etc/fstab。注意:它不存用户数据,只存“怎么运行”的指令。 -
/dev:设备文件的虚拟入口。硬盘、键盘、显卡等硬件,在这里表现为文件(如
/dev/sda、/dev/tty1),方便用统一接口操作。 -
/boot:启动必需文件所在。包括内核镜像(
vmlinuz-*)、初始内存盘(initrd.img-*)和 GRUB 配置(/boot/grub/)。 -
/lib 和 /lib64:存放
/bin和/sbin中命令依赖的共享库(.so 文件)。Ubuntu 22.04+ 多数已整合进/usr/lib,但兼容层仍保留。 -
/home:普通用户的个人空间。每个用户有独立子目录(如
/home/alex),存放文档、下载、桌面等个性化内容。 -
/root:超级用户(root)的家目录,与
/home分离,增强安全隔离。 -
/tmp:全局临时文件区。系统重启后通常清空,权限宽松(
1777),适合脚本短时存取。 - /media 和 /mnt:挂载点。前者由系统自动管理可移动设备(U 盘、光盘);后者供管理员手动挂载临时文件系统。
/usr 和 /var 的二级结构(FHS 第二层)
FHS 进一步细化了两个关键区域的内部组织:
-
/usr:原意为“Unix System Resources”,现为只读的用户级程序与资源仓库。
•/usr/bin:绝大多数用户命令(gcc、python3、curl)
•/usr/sbin:非基础的系统管理工具(sshd、postfix)
•/usr/lib:对应/usr/bin和/usr/sbin的库文件
•/usr/share:架构无关的共享数据(文档、图标、字体、locale 语言包)
•/usr/local:本地编译安装的软件(避开包管理器),结构模仿/usr(如/usr/local/bin) -
/var:存放系统运行中持续变化的数据。
•/var/log:所有日志文件(/var/log/syslog、/var/log/auth.log)
•/var/lib:应用程序运行时产生的状态数据(/var/lib/dpkg/存 APT 数据库,/var/lib/mysql/是 MySQL 数据目录)
•/var/cache:缓存内容(/var/cache/apt/archives/存 deb 包缓存)
•/var/run已被符号链接到/run(tmpfs 内存文件系统),存 PID 文件、socket 等进程运行时信息
现代 Ubuntu 的扩展与实践要点
除 FHS 基础外,Ubuntu 还引入了几个关键补充目录,它们虽不在原始 FHS 强制范围内,但已成为事实标准:
-
/proc:内核提供的虚拟文件系统,实时反映进程与内核状态(如
/proc/1/environ查看 PID 1 的环境变量)。 -
/sys:同样为虚拟文件系统,专注硬件与驱动参数(如
/sys/class/net/列出网卡,可直接写入开关)。 -
/srv:存放系统提供服务的数据(如
/srv/www/放网站文件,/srv/ftp/放 FTP 根目录),强调“服务产出”而非配置或日志。 - /opt:用于安装大型第三方闭源软件(如 Google Chrome、VMware Workstation),保持与系统包管理器完全隔离。
实际使用中需注意:
• 不要手动向 /bin 或 /usr/bin 复制命令,应通过 apt 或 snap 安装;
• 修改配置优先改 /etc 下对应文件,而非试图覆盖 /usr 中的默认值;
• 日志轮转由 logrotate 管理,不要直接清空 /var/log;
• 手动编译软件请走 /usr/local,避免污染系统路径。
为什么不能乱放文件?
FHS 不是教条,而是协作契约。Ubuntu 的更新机制、安全策略(如 AppArmor 路径规则)、备份脚本、容器镜像构建都依赖这套结构。把 Nginx 日志写进 /home,会导致日志轮转失效、权限混乱、审计工具找不到目标;把自定义脚本扔进 /lib,可能被系统更新误删。目录位置决定它如何被管理、保护和维护。










