欢迎光临
我们一直在努力

Linux运维入门第二章(下):基本权限管理——UGO模型、rwx权限与chmod实战,一篇全搞定!

前言

你好,欢迎来到 Linux 运维第二章的下篇!

上一篇文章我们学习了用户与组管理,掌握了如何创建用户、分组以及通过 sudo 委派特权。用户建好了,组也分好了,但还有一个核心问题没有解决:用户对文件和目录到底能做什么?

这就好比公司给每个员工发了门禁卡,但不同的办公室门禁权限是不一样的——开发人员能进开发部,但不能进财务室;运维人员能进机房,但不能进人事档案室。Linux 系统中的权限管理,就是这套精细化的"门禁系统"。

今天我们将深入浅出地学习:

  • UGO 权限模型:属主、属组、其他人
  • rwx 权限:读、写、执行对文件和目录的不同含义
  • chmod、chown、chgrp:权限和归属的修改命令
  • umask:默认权限的秘密
  • 删除文件的本质:为什么删除文件需要对目录有写权限

学完今天的内容,你将能独立为任何应用配置合理的权限体系。

好,让我们正式开始今天的旅程 🚀

一、UGO 权限模型概述

1.1 UGO 权限模型

在 Linux 系统中,每个文件和目录都归属于一个属主(User) 和一个属组(Group) ,同时还有一个其他人(Other) 的概念。这三类对象各自有一套独立的权限,这就是 UGO(User-Group-Other)模型。

文件所有者(User)

├── 属主权限(u)—— 文件的主人能做什么

属组(Group)

├── 属组权限(g)—— 同组的小伙伴能做什么

其他人(Other)

└── 其他人权限(o)—— 陌生人能做什么

一句话理解:文件就像一间办公室——你是主人(User),你的团队成员(Group)可以进来,其他部门的人(Other)不能进。

1.2 查看文件权限

使用 ls -l 命令可以查看文件和目录的详细权限信息:

ls -l

输出示例:

-rwxr-xr-x 1 root root 1234 Jan 15 10:00 file.txt
drwxr-xr-x 2 root root 4096 Jan 15 10:00 dir1

权限字符串详解:

– rwx r-x r-x
│ │ │ │
│ │ │ └── 其他人权限(r-x)
│ │ └────── 属组权限(r-x)
│ └────────── 属主权限(rwx)
└───────────── 文件类型

首字符文件类型说明
普通文件 文本文件、二进制程序等
d 目录 文件夹
l 链接文件 软链接

二、权限类型及表示方法

2.1 权限类型

Linux 中有三种基本权限,它们对文件和目录的含义完全不同:

权限符号数字对文件的含义对目录的含义
r 4 可查看文件内容(如 cat) 可列出目录内容(如 ls)
w 2 可修改文件内容(如 vim) 可在目录中创建、删除、重命名文件
执行 x 1 可执行该文件(程序或脚本) 可进入该目录(如 cd)

⚠️ 关键理解:目录的 w 权限并不是让你"修改目录本身",而是让你修改目录中的文件列表——即可以创建、删除、重命名目录里的文件。这就是为什么删除文件需要对目录有写权限!

2.2 权限表示法

字符表示法:rwxr-xr–

rwx r-x r–
│ │ │
│ │ └── 后三位 r–:其他人权限(只读)
│ └────── 中间三位 r-x:属组权限(读+执行)
└────────── 前三位 rwx:属主权限(读+写+执行)

数字表示法(八进制):764

将每组 rwx 看成二进制(有权限为 1,无则为 0),再转换为十进制:

rwx = 111 = 4+2+1 = 7
rw- = 110 = 4+2+0 = 6
r– = 100 = 4+0+0 = 4

rwxrw-r– = 764

权限组合二进制数字
rwx 111 7
rw- 110 6
r-x 101 5
r– 100 4
000 0

三、修改属主和属组

3.0 准备实验环境

在开始练习之前,先创建测试用户和组:

# 创建测试用户
useradd qianyi
useradd jinghui

# 创建测试组
groupadd qa
groupadd op
groupadd devops

# 创建测试文件和目录
touch file1.txt
mkdir dir1
touch dir1/file{1..10}

3.1 chown —— 修改属主和属组

chown(Change Owner)用于修改文件或目录的属主和属组。

# 仅修改属主为 qianyi
chown qianyi file1.txt

# 仅修改属组为 op(注意冒号)
chown :op file1.txt

# 同时修改属主为 jinghui,属组为 devops
chown jinghui:devops file1.txt

# 递归修改 dir1 目录下所有内容的属主和属组(-R)
chown -R jinghui:op dir1

3.2 chgrp —— 修改文件属组

chgrp(Change Group)专门用于修改文件或目录的属组。

# 仅修改属组为 qa
chgrp qa file1.txt

💡 小技巧:chown :组名 文件 和 chgrp 组名 文件 效果相同,推荐使用 chown 一个命令搞定。

四、chmod —— 修改文件权限

谁可以修改权限?

  • 文件的所有者(User)
  • root 用户(超级管理员)
4.1 字符模式

字符模式通过操作对象 + 操作符 + 权限来设置:

操作对象含义
u 属主(User)
g 属组(Group)
o 其他人(Other)
a 所有人(All = u+g+o)
操作符含义
+ 添加权限
移除权限
= 精确设置权限

示例:

# 给属主添加执行权限
chmod u+x file1.txt

# 从属组移除读权限
chmod g-r file1.txt

# 为其他人设置权限为读写
chmod o=rw file1.txt

# 为所有人设置权限为读、写、执行
chmod a=rwx file1.txt

# 为属主属组设置读写,其他人只读
chmod ug=rw,o=r file1.txt

4.2 数字模式

数字模式直接使用三位八进制数字设置权限:

# u=rwx (7), g=rx (5), o=rx (5)
chmod 755 file1.txt

# u=rw- (6), g=r– (4), o=r– (4)
chmod 644 file1.txt

# u=rwx (7), g=rwx (7), o=— (0)
chmod 770 file1.txt

# u=rw- (6), g=— (0), o=— (0)
chmod 600 file1.txt

常用权限速查:

数字权限适用场景
755 rwxr-xr-x 可执行程序、目录(最常见)
644 rw-r–r– 普通文件(最常见)
750 rwxr-x— 组内可访问的目录或程序
640 rw-r—– 组内可读的配置文件
600 rw——- 私密文件(如私钥)
777 rwxrwxrwx ⚠️ 所有用户可读写执行(危险!)
4.3 权限掩码 umask 【扩展】

umask 决定新创建文件和目录的默认权限。

计算规则:

文件默认权限 = 666umask
目录默认权限 = 777umask

常见 umask 值及效果:

umask文件权限目录权限
0022 666-022=644(rw-r–r–) 777-022=755(rwxr-xr-x)
0002 666-002=664(rw-rw-r–) 777-002=775(rwxrwxr-x)
0027 666-027=640(rw-r—–) 777-027=750(rwxr-x—)

修改 umask(临时):

umask 0027

验证效果:

touch file10
mkdir dir10
ls -ld file10 dir10/

输出示例:

drwxr-x—. 2 root root 6 Jul 16 23:34 dir10/
-rw-r—–. 1 root root 0 Jul 16 23:34 file10

修改 umask(永久生效):

echo "umask 0027" >> ~/.bashrc
source ~/.bashrc

五、实战案例:为若依项目配置权限

5.1 需求

为若依项目配置合理的权限体系:

目录/文件属主属组权限说明
/opt/ruoyi ruoyi ruoyi 755 应用根目录
/opt/ruoyi/config ruoyi ruoyi 750 配置文件(组内可访问)
/opt/ruoyi/logs ruoyi ruoyi 755 日志目录
/opt/ruoyi/backend/ruoyi-admin.jar ruoyi ruoyi 644 JAR 包文件
5.2 实施步骤

第 1 步:创建用户和组

useradd ruoyi

第 2 步:创建目录结构

mkdir -p /opt/ruoyi/{config,logs,backend,frontend,backup}

第 3 步:设置属主和属组

chown -R ruoyi:ruoyi /opt/ruoyi

第 4 步:设置权限

# 根目录 755
chmod 755 /opt/ruoyi

# 日志目录 755
chmod 755 /opt/ruoyi/logs

# 配置目录 750(同组人员可进入查看,其他人无权)
chmod 750 /opt/ruoyi/config

# 如果有 JAR 包文件,设置为 644
chmod 644 /opt/ruoyi/backend/ruoyi-admin.jar

验证结果:

ls -lR /opt/ruoyi

六、删除文件的本质【扩展】

6.1 核心原理

很多初学者会误以为"删除文件需要文件的 w 权限",但实际上:

删除文件 = 从目录中移除文件名的 inode 映射关系

删除操作改的是目录,而不是文件本身。因此:

位置需要的权限为什么
目录 必须有 w(写)权限 目录的 w 权限 = 修改目录条目(增删改文件名)
文件本身 不需要 w 权限 删除操作改的是目录,不是文件内容
6.2 图解

删除前:

/root/dir 目录

├── 文件名:file1.txt ──→ inode: 131420 ──→ 数据块(file1.txt 的内容)

└── 文件名:file2.txt ──→ inode: 123456 ──→ 数据块(file2.txt 的内容)

删除后:

/root/dir 目录

└── 文件名:file2.txt ──→ inode: 123456 ──→ 数据块(file2.txt 的内容)

inode: 131420 被标记为"未使用"
数据块被释放

删除 file1.txt 时,只是在目录中移除了文件名与 inode 的映射关系,inode 和数据块被标记为"未使用"(数据并没有被立即擦除,这也是数据恢复的原理)。

6.3 实验验证

验证一:目录有写权限,文件无任何权限(000)

# 准备环境
mkdir /opt/data
echo "test content…" > /opt/data/file1.txt

# 设置权限:目录 777,文件 000
chmod 777 /opt/data/
chmod 000 /opt/data/file1.txt

# 查看权限
ls -ld /opt/data/ /opt/data/file1.txt

输出示例:

drwxrwxrwx. 2 root root 23 Jul 16 23:59 /opt/data/
———-. 1 root root 15 Jul 16 23:59 /opt/data/file1.txt

切换到普通用户 jinghui 测试:

su – jinghui

# 查看文件(文件权限 000,无法读取)
ls -l /opt/data/file1.txt
# 输出:———-. 1 root root 15 Jul 16 23:59 /opt/data/file1.txt

# 但可以在目录中创建新文件
touch /opt/data/jinghui.txt

# 可以列出目录内容
ls /opt/data/
# 输出:file1.txt jinghui.txt

# 可以删除目录中的文件
rm -rf /opt/data/*

✅ 结论:目录有 w 权限,即使文件权限为 000,仍然可以删除文件。


验证二:目录无写权限,文件有全部权限(777)

# 准备环境
mkdir /opt/data2
touch /opt/data2/file2.txt

# 设置权限:目录 755(无写权限),文件 777
chmod 755 /opt/data2/
chmod 777 /opt/data2/file2.txt

# 查看权限
ls -ld /opt/data2/ /opt/data2/file2.txt

输出示例:

drwxr-xr-x. 2 root root 23 Jul 17 00:06 /opt/data2/
-rwxrwxrwx. 1 root root 0 Jul 17 00:06 /opt/data2/file2.txt

切换到普通用户 jinghui 测试:

su – jinghui

# 查看目录内容可以(目录有 r 和 x)
ls -l /opt/data2/
# 输出:total 0 -rwxrwxrwx. 1 root root 0 Jul 17 00:06 file2.txt

# 删除文件失败(目录没有 w 权限)
rm -rf /opt/data2/file2.txt
# 输出:rm: cannot remove '/opt/data2/file2.txt': Permission denied

# 创建文件也失败(目录没有 w 权限)
touch /opt/data2/jinghui.txt
# 输出:touch: cannot touch '/opt/data2/jinghui.txt': Permission denied

✅ 结论:目录没有 w 权限,即使文件权限是 777,也无法删除或创建文件。

6.4 核心结论

删除文件,需要的是目录的 w 权限,而不是文件本身的 w 权限!

这一原理同样适用于:

  • 创建文件(需要在目录中有 w 权限)
  • 重命名文件(需要在目录中有 w 权限)

七、结语

恭喜你!😊 到这里,你已经完成了 Linux 运维第二章(下)的全部学习内容。

今天我们系统学习了:

  • UGO 权限模型:属主、属组、其他人的概念
  • rwx 权限:读、写、执行对文件和目录的不同含义
  • 权限表示法:字符表示法和数字表示法
  • chown、chgrp、chmod:权限和归属的修改命令
  • umask:默认权限的计算和配置
  • 删除文件的本质:为什么删除文件需要对目录有写权限

权限管理是 Linux 安全体系的核心支柱。掌握了今天的内容,你就理解了 Linux"门禁系统"的运作原理。

如果在学习过程中遇到任何问题,欢迎在评论区留言讨论!也别忘了点赞收藏,方便以后查阅~

附录:核心知识点速查表

你想干什么敲什么命令
查看文件权限 ls -l file.txt
查看目录权限 ls -ld dir/
修改属主 chown qianyi file.txt
修改属组 chown :op file.txt
同时修改属主和属组 chown qianyi:devops file.txt
递归修改属主属组 chown -R qianyi:devops dir/
修改属组 chgrp qa file.txt
字符模式添加权限 chmod u+x file.txt
字符模式移除权限 chmod g-r file.txt
字符模式精确设置 chmod ug=rw,o=r file.txt
数字模式设置权限 chmod 755 file.txt
查看 umask umask
临时设置 umask umask 0027
永久设置 umask echo "umask 0027" >> ~/.bashrc
创建目录并设置权限 mkdir -p /opt/app && chmod 755 /opt/app
常用文件权限 644(文件)、755(目录/程序)

附录:权限数字速查卡

权限数字权限数字
0 r– 4
–x 1 r-x 5
-w- 2 rw- 6
-wx 3 rwx 7

三位数字的组合:

数字属主属组其他人含义
755 rwx r-x r-x 目录/可执行程序(最常用)
644 rw- r– r– 普通文件(最常用)
750 rwx r-x 组内可访问
640 rw- r– 组内可读配置文件
600 rw- 私密文件
777 rwx rwx rwx ⚠️ 危险!所有用户可读写执行
赞(0)
未经允许不得转载:171主机测评 » Linux运维入门第二章(下):基本权限管理——UGO模型、rwx权限与chmod实战,一篇全搞定!
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址