一、前言
Linux 作为一款开源、稳定且高效的操作系统,广泛应用于服务器、嵌入式设备等领域。而文件系统结构 和权限管理是 Linux 学习的核心基石,掌握这两部分内容,不仅能理解 Linux 系统的运行逻辑,还能保障系统的安全性与可维护性。本文将详细拆解 Linux 核心目录结构,以及文件 / 目录权限管理的常用命令与实操技巧,帮助大家快速上手。
二、Linux 文件系统核心目录结构
Linux 采用树形目录结构 ,以 /(根目录)为起点,所有文件和目录都归属于根目录。不同目录有明确的功能分工,遵循 FHS(Filesystem Hierarchy Standard,文件系统层次标准) 规范,以下是核心目录的详细解析:
1. /:根目录
- 整个文件系统的起点,所有目录、文件的 "祖先"。
- 包含系统所有核心目录,是 Linux 系统的 "根",权限仅 root 用户可修改。
2. /home:用户主目录
- 存放普通用户的个人数据、配置文件、桌面文件等。
- 每个普通用户对应一个子目录,命名为用户名(如
/home/zhangsan),用户登录后默认进入自己的主目录。 - 示例:用户
lisi的文档、下载文件、桌面图标均存放在/home/lisi下。
3. /etc:系统配置文件目录
- 存放系统及服务的配置文件,是 Linux 系统的 "配置中心"。
- 核心配置文件:
/etc/passwd:用户账户信息(不含密码);/etc/shadow:用户密码(加密存储);/etc/hosts:本地域名解析配置;/etc/sudoers:sudo 权限配置;/etc/nginx/nginx.conf:Nginx 服务配置(需安装 Nginx)。
- 注意:修改该目录下的文件需谨慎,错误配置可能导致系统或服务无法启动。
4. /var:可变数据目录
- 存放系统运行过程中动态变化的文件,如日志、缓存、临时数据等。
- 核心子目录:
/var/log:系统日志(如/var/log/messages系统日志、/var/log/nginx/Nginx 日志);/var/cache:应用程序缓存(如 yum 缓存、浏览器缓存);/var/spool:任务队列(如邮件队列、打印任务队列);/var/tmp:临时文件(重启后可能保留,区别于/tmp)。
5. 其他核心目录补充
/bin:存放系统核心命令 (如ls、cp、rm),所有用户可执行;/sbin:存放系统管理命令 (如ifconfig、reboot),仅 root 用户可执行;/usr:存放用户安装的程序、库文件、文档 (如/usr/bin普通用户命令、/usr/local手动安装软件);/tmp:临时文件目录,所有用户可读写,系统重启后自动清空;/dev:设备文件目录 (如/dev/sda硬盘、/dev/tty终端),Linux 中 "一切皆文件",硬件设备以文件形式存在。
三、文件与目录权限管理
Linux 权限管理是系统安全的核心,通过权限位 控制用户对文件 / 目录的读、写、执行 操作,同时结合用户身份(所有者、所属组、其他用户)实现精细化权限控制。
1. 权限基础:权限位与身份
(1)权限类型
Linux 对文件 / 目录定义了 3 种核心权限,用字母和数字表示:
| 权限 | 字母 | 数字 | 作用(文件) | 作用(目录) |
|---|---|---|---|---|
| 读 | r | 4 | 查看文件内容 | 列出目录内文件 |
| 写 | w | 2 | 修改 / 删除文件 | 创建 / 删除 / 重命名目录内文件 |
| 执行 | x | 1 | 运行可执行文件 | 进入目录(cd 命令) |
(2)用户身份
Linux 将用户分为 3 类,对应权限位的 3 组:
- 所有者(u):文件 / 目录的创建者,拥有最高权限;
- 所属组(g):文件 / 目录归属的用户组,组内成员共享该组权限;
- 其他用户(o):除所有者、所属组外的所有用户。
(3)权限表示
权限位共 10 位,格式为:[文件类型][所有者权限][所属组权限][其他用户权限]
- 第 1 位:文件类型(
-普通文件、d目录、l软链接、c字符设备、b块设备); - 后 9 位:3 组权限(每组 3 位,对应 r/w/x)。
示例 :-rwxr-xr--
- 第 1 位
-:普通文件; - 所有者权限
rwx:读、写、执行; - 所属组权限
r-x:读、执行,无写权限; - 其他用户权限
r--:仅读权限。 - 数字表示:
754(所有者 7=4+2+1,所属组 5=4+1,其他 4=4)。
2. 核心权限命令
(1)chmod:修改文件 / 目录权限
-
语法 :
chmod [选项] 权限 文件/目录 -
常用选项:
-R:递归修改(对目录下所有子文件 / 子目录生效);u/g/o/a:分别表示所有者 / 所属组 / 其他用户 / 所有用户;+/-/=:增加 / 删除 / 设置权限。
-
实操示例:
-
给文件
test.txt所有者添加执行权限:bash
运行
chmod u+x test.txt -
给目录
data及其子文件 / 子目录,设置所有者读 / 写 / 执行、所属组读 / 执行、其他用户无权限(数字法):bash
运行
chmod -R 750 data -
移除文件
script.sh其他用户的所有权限:bash
运行
chmod o-rwx script.sh
-
(2)chown:修改文件 / 目录的所有者 / 所属组
-
语法 :
chown [选项] 所有者:所属组 文件/目录 -
常用选项 :
-R:递归修改。 -
实操示例:
-
将文件
app.log的所有者改为root,所属组改为admin:bash
运行
chown root:admin app.log -
将目录
/var/www及其子内容的所有者改为www-data(Web 服务常用用户):bash
运行
chown -R www-data /var/www -
仅修改文件
data.txt的所属组为dev:bash
运行
chown :dev data.txt
-
(3)sudo:以 root 权限执行命令
-
作用:普通用户临时获取 root 权限执行命令,避免直接登录 root 账户(提升安全性)。
-
语法 :
sudo 命令 -
前提 :用户需在
/etc/sudoers文件中配置权限(默认root用户和wheel组用户可使用)。 -
实操示例:
-
普通用户安装软件(需 root 权限):
bashsudo yum install nginx # CentOS/RHEL 系统 sudo apt install nginx # Ubuntu/Debian 系统 -
编辑系统配置文件
/etc/hosts(普通用户无写权限):bashsudo vim /etc/hosts -
重启系统服务(如 Nginx):
bashsudo systemctl restart nginx
-
3. 权限管理实操场景
场景 1:创建共享目录,允许组内成员读写,其他用户无权限
-
创建共享目录
/share:bashmkdir /share -
创建用户组
share_group:bashgroupadd share_group -
将用户
user1、user2加入share_group:bashusermod -aG share_group user1 usermod -aG share_group user2 -
修改
/share所有者为root,所属组为share_group,并设置权限:bashchown root:share_group /share chmod 770 /share # 所有者读/写/执行,组内读/写/执行,其他无权限 -
验证:
user1可在/share内创建文件,user2可读写该文件,其他用户无法访问。
场景 2:普通用户执行 root 专属命令(如重启网络)
-
普通用户直接执行
systemctl restart network会提示权限不足:bashsystemctl restart network # 报错:Permission denied -
使用
sudo临时提权执行:bashsudo systemctl restart network -
输入当前用户密码(需在
/etc/sudoers中配置权限),即可成功重启网络。