
🔥草莓熊Lotso: 个人主页
❄️个人专栏: 《C++知识分享》 《Linux 入门到实践:零基础也能懂》
✨生活是默默的坚持,毅力是永久的享受!
🎬 博主简介:

文章目录
- 前言:
- [一. 核心前置问题铺垫(面试高频)](#一. 核心前置问题铺垫(面试高频))
- [二. umask:新文件权限的 "隐形调控者"](#二. umask:新文件权限的 “隐形调控者”)
-
- [2.1 功能与原理](#2.1 功能与原理)
- [2.2 格式与实际案例](#2.2 格式与实际案例)
- [2.3 细节问题总结(附创建一批文件的操作)](#2.3 细节问题总结(附创建一批文件的操作))
- [三. file 指令:文件类型的 "识别器"](#三. file 指令:文件类型的 “识别器”)
-
- [3.1 功能和语法](#3.1 功能和语法)
- [3.2 常用选项和实际案例](#3.2 常用选项和实际案例)
- [四. 目录权限:容易踩坑的 "特殊逻辑"](#四. 目录权限:容易踩坑的 “特殊逻辑”)
-
- [4.1 目录权限的核心规则](#4.1 目录权限的核心规则)
- [4.2 补充:Linux下的共享文件话题](#4.2 补充:Linux下的共享文件话题)
- [五. 粘滞位:解决目录权限 "不科学" 的方案](#五. 粘滞位:解决目录权限 “不科学” 的方案)
-
- [5.1 功能与设置](#5.1 功能与设置)
- [5.2 实际使用案例](#5.2 实际使用案例)
- 结尾:
前言:
在 Linux 系统中,权限管理是保障资源安全、控制用户访问的核心机制。从新文件创建时的默认权限分配(umask),到文件类型识别(file)、权限分配(sudo),再到目录权限的特殊逻辑(粘滞位),每一个环节都暗藏系统设计的精妙。本文将沿着这条逻辑链,逐一拆解这些知识点,帮你构建完整的 Linux 权限认知体系。
一. 核心前置问题铺垫(面试高频)
在本篇博客起始呢,我们先来看看下面这三个问题,都是面试经常问到的,这些问题在我们的文章中后续都会得到解答。
--在这里我们先对第一个问题进行一个回答,这个我们在上篇博客中就有解答过,这里就直接展示了

其它两个的答案先放着,后面再详细解释:


二. umask:新文件权限的 "隐形调控者"
2.1 功能与原理
umask (文件权限掩码)的核心作用是调整新创建文件 / 目录的默认权限。Linux 系统对新文件和目录有 "初始最大权限":
- 新文件默认最大权限为
0666(即rw-rw-rw-,可读、可写); - 新目录默认最大权限为
0777(即rwxrwxrwx,可读、可写、可执行)。 umask可以查看当前默认权限掩码,主要看后三位。
注意 :实际创建的资源权限并非直接使用这个 "最大值",而是要经过umask的一些运算(绝对不是简单的减法,后面的图片演示里有具体运算过程 )。公式为:实际权限 = 最大初始权限 & ~umask(~表示按位取反,&表示按位与,注意都是八进制转成二进制后运算)。
2.2 格式与实际案例
格式 :umask 权限值
说明 :将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为 0022,普通用户默认为 0002(后面的演示图里暂时用的超级用户,代码尽量会开始使用普通用户演示,但是如果大家会配置sudo权限的话,尽量全部使用普通用户比较好,不会也没事,以后会讲到的)
实际案例:
bash
# root查看umask以及创建文件和目录的默认权限
[root@VM-4-4-centos lesson7]# umask
0022
[root@VM-4-4-centos lesson7]# ll
total 4
drwxr-xr-x 2 root root 4096 Oct 29 22:54 dir
-rw-r--r-- 1 root root 0 Oct 29 22:19 text.txt
# 普通账户查看umask以及创建文件和目录的默认权限
[Lotso@VM-4-4-centos lesson7]$ umask
0002
[Lotso@VM-4-4-centos 118]$ ll
total 4
drwxrwxr-x 2 Lotso Lotso 4096 Oct 30 11:16 dir
-rw-rw-r-- 1 Lotso Lotso 0 Oct 30 11:16 text.txt
# 临时修改umask,达到不想让所属组和other有任何权限(文件用066也行本来就没x权限,目录必须077)
[Lotso@VM-4-4-centos lesson7]$ umask 077
[Lotso@VM-4-4-centos lesson7]$ umask
0077
# 我们再创建文件或者目录就会发现默认权限变了,达到了我们的目的
[Lotso@VM-4-4-centos 118]$ ll
total 4
drwx------ 2 Lotso Lotso 4096 Oct 30 11:18 dir
-rw------- 1 Lotso Lotso 0 Oct 30 11:18 text.txt
第2个常见问题的解答以及当前知识点演示图(一定要看):


2.3 细节问题总结(附创建一批文件的操作)
细节问题:
- 不同的系统,不同的用户,umask可能不同(上面讲过)
- 不用担心umask被更改的问题,退出登录,重登就会恢复默认
- 当需要创建一批文件并想要它们的默认权限符合我们的预期时,umask就很好用了;那如何创建和删除一批文件呢(我们后续也可能会用到,这里先看看),注意下面的演示。
bash
# 此时的umask是 0077,能让下面所有文件都达到不让所属组和other有任何权限的目的。
# 创建一批文件
[Lotso@VM-4-4-centos 118]$ touch hello{1..100}.txt
[Lotso@VM-4-4-centos 118]$ ll
total 4
drwx------ 2 Lotso Lotso 4096 Oct 30 11:18 dir
-rw------- 1 Lotso Lotso 0 Oct 30 11:56 hello100.txt
-rw------- 1 Lotso Lotso 0 Oct 30 11:56 hello10.txt
-rw------- 1 Lotso Lotso 0 Oct 30 11:56 hello11.txt
-rw------- 1 Lotso Lotso 0 Oct 30 11:56 hello12.txt
-rw------- 1 Lotso Lotso 0 Oct 30 11:56 hello13.txt
-rw------- 1 Lotso Lotso 0 Oct 30 11:56 hello14.txt
-rw------- 1 Lotso Lotso 0 Oct 30 11:56 hello15.txt
-rw------- 1 Lotso Lotso 0 Oct 30 11:56 hello16.txt
-rw------- 1 Lotso Lotso 0 Oct 30 11:56 hello17.txt
-rw------- 1 Lotso Lotso 0 Oct 30 11:56 hello18.txt
-rw------- 1 Lotso Lotso 0 Oct 30 11:56 hello19.txt
-rw------- 1 Lotso Lotso 0 Oct 30 11:56 hello1.txt
.............................. #省略
# 删除一批文件
[Lotso@VM-4-4-centos 118]$ rm -rf hello{1..100}.txt
[Lotso@VM-4-4-centos 118]$ ll
total 4
drwx------ 2 Lotso Lotso 4096 Oct 30 11:18 dir
-rw------- 1 Lotso Lotso 0 Oct 30 11:18 text.txt
三. file 指令:文件类型的 "识别器"
3.1 功能和语法
file 指令的核心作用就是辨识文件类型 ,语法为:file [选项] 文件或者目录 ...
3.2 常用选项和实际案例
常用选项:
-c:详细显示指令执行过程,便于排错或分析程序执行的情形。-z:尝试去解读压缩文件的内容。
实际案例:
bash
# 辨识文件类型
[Lotso@VM-4-4-centos 118]$ file text.txt
text.txt: empty
[Lotso@VM-4-4-centos 118]$ file /usr/bin/ls
/usr/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=c8ada1f7095f6b2bb7ddc848e088c2d615c3743e, stripped
[Lotso@VM-4-4-centos 118]$ file /usr/bin/yum
/usr/bin/yum: Python script, ASCII text executable
四. 目录权限:容易踩坑的 "特殊逻辑"
4.1 目录权限的核心规则
这个也是我们最上面解决第1个问题的核心关键
目录的权限与文件权限有本质区别,需重点理解三点:
可执行权限(x):无 x 权限则无法cd进入目录;可读权限(r):无 r 权限则无法用ls等命令查看目录内文件;可写权限(w):无 w 权限则无法在目录中创建、删除文件。

关键坑点 :只要用户对目录有w权限,就可以删除目录内的所有文件,无论该用户是否有文件本身的写权限。
我们直接拿上篇博客中最后的模拟示例来看看:
bash
# 1. root设置/home目录为777(所有用户可写)
[root@bite-alicloud ~]$ chmod 777 /home
[root@bite-alicloud ~]$ ls -ld /home
drwxrwxrwx. 3 root root 4096 Oct 22 15:58 /home
# 2. root在/home创建root.c(所有者为root)
[root@bite-alicloud ~]$ touch /home/root.c
[root@bite-alicloud ~]$ ls -l /home/root.c
-rw-r--r--. 1 root root 0 Oct 22 15:59 /home/root.c
# 3. 普通用户litao删除root.c(因/home有写权限,成功删除)
[root@bite-alicloud ~]$ su - litao
[litao@localhost ~]$ rm /home/root.c
rm: remove regular empty file '/home/root.c'? y # 确认删除
[litao@localhost ~]$ ls /home/root.c # 验证删除
ls: cannot access '/home/root.c': No such file or directory
第3个问题解答以及图示解析:

4.2 补充:Linux下的共享文件话题
我们这里再补充一个Linux下共享文件的操作,直接用图片展示给大家

--大家在上图中可以发现,我们引入了粘滞位去满足我们的需求解决一些问题,那么下面这个上次遗留下来的问题也可以得到解决了。我们接着来看下个版块吧。

五. 粘滞位:解决目录权限 "不科学" 的方案
为了修复 "用户可删除目录内他人文件" 的问题,Linux 引入了粘滞位(Sticky Bit)机制。
5.1 功能与设置
给目录添加粘滞位后,该目录下的文件仅能由三类主体删除:
- 超级管理员(root);
- 该目录的所有者(这点不那么重要,知道就行);
- 该文件的所有者。
设置粘滞位的指令为:
bash
chmod +t 目录名
5.2 实际使用案例
简单演示(大家可以自己去试试):
bash
[root@localhost ~]$ chmod +t /home/ # 加上粘滞位
[root@localhost ~]$ ls -ld /home/
drwxrwxrwt. 3 root root 4096 9⽉ 19 16:00 /home/
[root@localhost ~]$ su - litao
[litao@localhost ~]$ rm /home/abc.c #litao不能删除别⼈的⽂件
rm:是否删除有写保护的普通空⽂件 "/home/abc.c"?y
rm: ⽆法删除"/home/abc.c": 不允许的操作
结尾:
html
🍓 我是草莓熊 Lotso!若这篇技术干货帮你打通了学习中的卡点:
👀 【关注】跟我一起深耕技术领域,从基础到进阶,见证每一次成长
❤️ 【点赞】让优质内容被更多人看见,让知识传递更有力量
⭐ 【收藏】把核心知识点、实战技巧存好,需要时直接查、随时用
💬 【评论】分享你的经验或疑问(比如曾踩过的技术坑?),一起交流避坑
🗳️ 【投票】用你的选择助力社区内容方向,告诉大家哪个技术点最该重点拆解
技术之路难免有困惑,但同行的人会让前进更有方向~愿我们都能在自己专注的领域里,一步步靠近心中的技术目标!
结语:从umask对新文件权限的初始调控,到file对文件类型的识别,再到sudo实现的权限交接、目录权限的特殊逻辑,最后到粘滞位对目录安全的补强 ------ 这些知识点共同构成了 Linux 权限管理的完整图景。理解这些内容,不仅能帮你规避 "权限被拒""误删文件" 等常见问题,更能让你在多用户协作、系统运维场景中,精准控制资源访问边界,筑牢 Linux 系统的安全防线。后续学习中,可结合实际场景(如搭建 Web 服务、配置数据库权限)进一步实践,让这些理论真正转化为实操能力。
✨把这些内容吃透超牛的!放松下吧✨ ʕ˘ᴥ˘ʔ づきらど

