【Linux】文件目录管理
【Linux】文件目录管理
- 【一】Linux 标准根目录(FHS 文件系统层次标准)全目录及作用
- 【1】核心系统目录
- 【2】现代运行时目录(临时内存文件系统 tmpfs)
- 【3】用户专属目录
- 【二】新建用户 / 用户组自动创建的目录
- 【1】创建用户流程(useradd)自动生成内容
- ① 系统原始目录(/etc/bin /var/usr /root 等)
- ② 用户新建目录(/home/test 普通用户家目录)
- 补充:/root 特殊点
- 【2】/etc/skel 作用
- 【3】用户组对应目录
- 【4】核心差异总结
- 【三】不同用户启动服务的核心区别(权限、资源、安全、文件隔离)
- 【1】权限差异(最关键)
- (1)root 启动服务
- (2)专用系统用户(mysql、nginx、redis)
- (3)自定义普通业务用户(app、test)
- 【2】文件 / 目录隔离区别
- 【3】端口、资源限制
- 【4】日志、进程归属区分
- 【5】安全层面总结
- 【6】补充:Systemd 管理服务指定运行用户
- 【四】高频总结
【一】Linux 标准根目录(FHS 文件系统层次标准)全目录及作用
Linux 所有目录都挂载在/根下,分为系统核心目录、运行时临时目录、用户数据目录三大类。
【1】核心系统目录
表格
| 目录 | 全称 | 核心作用 |
|---|---|---|
/ | root 根 | 整个文件系统最顶层,所有文件起点 |
/bin | Binary | 普通用户可执行基础命令:ls、cp、mv、cat、cd 等,单用户模式也能用 |
/sbin | System Binary | 管理员 root 专用系统命令:fdisk、ifconfig、mount、reboot、iptables |
/boot | Boot | 系统启动文件:内核 vmlinuz、grub 引导程序、initramfs,磁盘分区很小 |
/dev | Device | 硬件设备文件:硬盘 /dev/sda、网卡 /dev/eth0、串口 /dev/tty、空设备 /dev/null |
/etc | Etcetera | 系统全局配置文件,所有服务、用户、网络配置都在这里passwd 用户、group 用户组、nginx/ssh/redis 配置都存放于此 |
/lib//lib64 | Library | 系统程序依赖的动态链接库(.so),对应 /bin/sbin 命令运行依赖 |
/mnt | Mount | 临时手动挂载目录:U 盘、移动硬盘、临时磁盘分区手动挂载点 |
/media | Media | 自动挂载外设:U 盘、光驱、移动存储,桌面系统常用 |
/opt | Optional | 第三方大型商业软件安装目录:Oracle、MySQL、JDK、商业化中间件 |
/root | Root home | 超级管理员 root 的家目录,只有 root 有权进入,和普通用户 /home 区分开 |
/tmp | Temporary | 全局临时文件目录,所有用户可读写,系统定时自动清理文件 |
/usr | Unix Software Resource | 系统预装软件资源,占磁盘最大/usr/bin:普通用户完整命令/usr/sbin:完整管理工具/usr/lib:应用程序库/usr/share:文档、字体、配置模板/usr/local:管理员手动编译安装软件(源码安装默认路径) |
/var | Variable | 可变数据目录,运行时不断产生数据/var/log:系统、服务日志/var/lib:数据库、容器持久化数据/var/run:进程 pid 文件(现已软链接到 /run)/var/spool:邮件、打印队列 |
【2】现代运行时目录(临时内存文件系统 tmpfs)
/run:进程运行时临时数据,存放 pid、socket 套接字,重启全部清空/proc:虚拟内核文件系统,不占磁盘,实时查看内核、进程、CPU、内存信息(ps、top 读取这里数据)/sys:硬件设备虚拟文件,管理内核硬件、驱动参数
【3】用户专属目录
/home:所有普通用户默认家目录根目录
新建用户 user1 会自动创建/home/user1
【二】新建用户 / 用户组自动创建的目录
【1】创建用户流程(useradd)自动生成内容
执行useradd test+passwd test时,默认生成:
- 用户记录写入
/etc/passwd - 用户组写入
/etc/group、密码影子文件/etc/shadow - 若加
-m参数:自动创建家目录/home/test - 复制模板文件
/etc/skel下隐藏文件到家目录:.bashrc、.profile、.bash_logout、.vimrc
① 系统原始目录(/etc/bin /var/usr /root 等)
- 归属系统、权限严格受控,属主 root,权限 755/700;
- 系统安装时自带,全局共用,所有用户共享读取(写入仅 root);
- 存放系统命令、全局配置、系统日志、内核、硬件驱动;
- 删除会直接导致系统崩溃、命令失效、服务无法启动;
- 生命周期跟随操作系统重装,全局生效。
② 用户新建目录(/home/test 普通用户家目录)
- 归属单独用户,属主 test:test,权限默认 700,其他用户无法进入查看;
- 创建用户时生成,仅当前用户私有空间;
- 存放用户个人文件、脚本、个人配置、下载数据、个人程序;
- 删除用户(userdel -r test)目录同步删除,不影响系统运行;
- 内部隐藏文件
.bashrc仅当前用户登录生效,只修改个人 shell 环境。
补充:/root 特殊点
root 是超级用户家目录,不属于 /home,权限比普通家目录更严格,只有 root 能访问。
【2】/etc/skel 作用
创建用户家目录的模板文件夹,所有新建用户都会复制里面环境配置;修改 skel 文件,后续新建用户自动继承自定义 shell 配置。
【3】用户组对应目录
单纯创建组groupadd testgroup不会生成任何文件夹;
只有把用户加入组、创建用户家目录后,目录属组才会变成对应组,组仅控制文件读写权限,不创建独立目录。
【4】核心差异总结
表格
| 维度 | 系统原始目录 | 用户家目录 /home/xxx |
|---|---|---|
| 创建时机 | 系统安装初始化 | useradd -m 创建用户时生成 |
| 属主权限 | root,普通用户仅读 | 当前用户私有,他人无访问权限 |
| 作用范围 | 全系统全局共用 | 仅单个用户私有存储 |
| 删除影响 | 删则系统损坏 | 删除仅丢失该用户数据,系统无恙 |
| 配置生效 | 所有用户全局生效 | 仅登录该用户时生效 |
【三】不同用户启动服务的核心区别(权限、资源、安全、文件隔离)
Linux 服务分三类启动身份:root 用户、普通系统用户(nginx/mysql)、自定义业务普通用户(app)
【1】权限差异(最关键)
(1)root 启动服务
- 拥有系统最高权限:读写所有目录、修改系统配置、绑定 1024 以下低端口(80、443、22、3306)、操作硬件、修改内核参数;
- 风险极高:服务漏洞会直接拿到服务器最高权限,入侵后可删全盘、篡改系统;
- 适用:极少数底层系统服务(sshd、crond、networkd),业务软件禁止 root 运行。
(2)专用系统用户(mysql、nginx、redis)
安装中间件自动创建的无登录用户(/sbin/nologin),无家目录、不能 ssh 登录服务器;
- 权限最小化:仅拥有软件数据目录读写权限(如
/var/lib/mysql); - 无法修改系统文件、无法绑定低端口(需 root 授权或端口转发);
- 安全:即便程序被攻破,攻击者权限受限,无法篡改系统;
行业标准:数据库、web 服务统一使用独立专用用户运行。
(3)自定义普通业务用户(app、test)
开发 / 运维手动创建可登录用户(/bin/bash),有独立 /home/app 家目录;
- 仅拥有家目录、分配的业务目录读写权限;
- 不能修改系统配置、无法操作核心系统目录;
- 多用于自研 Java/Go/Python 业务程序,程序日志、代码存放自家目录;
- 支持 ssh 登录,可手动启停程序。
【2】文件 / 目录隔离区别
- root 启动服务:日志、数据可随意存放在
/etc/root/var任意位置; - 专用用户(mysql):数据强制隔离在专属目录
/var/lib/mysql,其他用户无权限读写数据库文件; - 普通 app 用户:业务代码、日志、缓存全部隔离在
/home/app,和系统目录完全分开,互不干扰。
【3】端口、资源限制
- root:可绑定 1~65535 所有端口,无文件句柄、进程数硬限制(可直接修改系统限制);
- 普通用户(nginx/app):默认只能绑定 1024 以上高端口;打开文件数、最大进程受
/etc/security/limits.conf限制,资源耗尽无法随意突破。
【4】日志、进程归属区分
- 进程 PID 文件、日志文件属主 = 启动服务的用户;
- root 启动进程:ps 查看 UID=0;普通用户进程 UID 为 1000+;
- 权限不足场景:普通用户启动 nginx 监听 80 端口会直接报错
permission denied,必须用 root 启动或 setcap 授权。
【5】安全层面总结
- root 运行:权限无隔离,漏洞 = 服务器沦陷;
- 独立专用用户:最小权限原则,生产环境推荐所有中间件、业务程序使用;
- 可登录普通用户:兼顾手动调试,适合自研业务,禁止运行数据库、对外 web 服务。
【6】补充:Systemd 管理服务指定运行用户
服务配置文件/usr/lib/systemd/system/xxx.service可配置:
User=appGroup=app实现进程以普通用户身份后台运行,即便 systemd 由 root 管理,业务进程权限被隔离。
【四】高频总结
- Linux 系统目录分全局系统目录(root 归属)和用户私有家目录(/home);
- 创建用户
-m才会生成独立私有目录,组本身不生成文件夹,仅管控权限; - 系统目录全局共享、删则系统损坏;用户家目录私有、删除不影响系统;
- root 启动服务权限无限但风险极高,专用 / 普通用户权限隔离,是生产环境安全规范。
