跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

Linux 文件权限管理详解

Linux 系统中的文件权限概念,包括用户角色(root/普通用户)、权限标识(rwx)、以及常用命令(sudo、chmod、chgrp、chown)。详细说明了目录权限的特殊性、缺省权限(umask)的计算原理以及粘滞位的作用。旨在帮助读者掌握 Linux 基础权限管理技能。

樱花落尽发布于 2026/3/24更新于 2026/7/1655 浏览
Linux 文件权限管理详解

一、权限的概念

1.什么是权限

在现实生活中,可以通过常识确定:权限是限制人的。人=真实的人 + 身份角色,也就是权限会给不同身份的人不同限制。目标事物的属性也会影响权限。比如你不能在短视频软件上写代码,也不能在写代码软件上看短视频。总之,权限 = 人 + 事物属性。最终影响你能还是不能做一件事。

2.认识用户

Linux 下有两种用户:超级用户(root)、普通用户。

  • 超级用户:可以在 Linux 系统下做任何事情,不受限制。命令提示符是'#'。
  • 普通用户:在 Linux 下做有限的事情。命令提示符是'$'。
3.su 指令:切换用户
  1. root 用户下:su [普通用户] 可以直接切换,无需密码。
  2. 普通用户下:直接使用 su 或者使用 su -,然后输入 root 账户密码即可切换。
    • su:只切换身份,不改变路径。
    • su -:重新登录 root 账户,进入 root 家目录,并且显示上次登录时间。
  3. 普通用户之间的切换:su [用户名],然后需要输入对方账户密码(所在路径不会切换)。

快捷键:Ctrl + D

快速切换成上一个用户,本质是 exit 指令。

二、sudo 提权

如果我们想以普通用户的身份去执行更高权限的命令,就需要使用 sudo。

sudo 就是提权,获取更高权限,一般放在指令最前面使用。比如我们以普通用户创建一个文件,再使用 sudo 提权创建一个文件,可以明显看到文件属性中用户名称的变化,所以 sudo 提权本质就是以 root 身份去执行命令。

配置文件——sudoers

其实如果是新创建的用户,是无法使用 sudo 提权的。系统提示无法执行命令,并提到了一个文件——sudoers,其实这就是一个配置文件。该文件只能使用 root 账号才能打开,相当于一个白名单,只有写入了该名单的账号才能执行 sudo 指令。该文件位于 /etc/sudoers。

当我们将 user1 添加进白名单后,user1 就能正常使用 sudo 指令了。(建议学完 vim 的使用后再进行配置修改)

这样大概能理解为什么使用 sudo 需要输入当前普通用户的密码了吧,因为配置文件时 root 已经默许了,输入当前用户密码只是确认当前用户在操作。

sudo 的使用场景:

目前我们比较常见的使用场景就是下载软件时使用了。比如 sudo yum install ... / sudo apt install ...

普通用户使用 sudo 并输入密码后,短时间(大概 15min)以内再次使用 sudo 是不需要输入密码的。

三、文件属性和访问权限

前面说过,权限=角色 + 事物属性,而在 Linux 中,一切皆文件,文件的属性就和权限密切相关。

1.对文件属性的基本了解

首先通过 ll 就可以快速查看文件的属性。

关于后面 3 列:文件大小、修改时间、文件名,这些是我们比较熟悉的属性就不多说了。我们先具体认识一下文件类型有哪些:

  • d:目录(文件夹)
  • -:普通文件
  • c:字符设备文件,例如屏幕等串口设备
  • b:块设备文件,例如硬盘、光驱等
  • p:管道文件
  • l:链接文件,类似 Windows 的快捷方式
2.认识拥有者和所属组

第一列用户名代表的就是该文件的拥有者,一般谁创建就是谁;第二列用户名就代表该文件的所属组,默认是创建者单独一组,不过可以修改。

Linux 中的角色分 3 类:文件拥有者、文件所属组、other。

  • other 不需要存储,只要是拥有者或者所属组就一定不是 other,所以 other 不显示。
  • 注意角色是一层身份,它需要依附于具体的人,人 = 真实的人 + 身份角色。
  • 所属组存在的原因,是多人使用同一台服务器时,便于分组管理权限,比如某些文件哪些人可看那些人不可看就可以通过所属组实现。

接下来我们来看具体的访问权限。

3.认识文件的访问权限

首先需要知道这些权限:r 代表可读权限、w 代表可修改权限、x 代表可执行权限。除去第一列代表文件类型的字符,剩下的 9 个字符每 3 个为一组,分别代表拥有者权限、所属组权限、other 权限。(- 代表无此权限)

以拥有者为例,rwx 一组,这 3 个字母的位置是固定的,有这个权限对应位置就有这个字母,没有就是 - 。下面我们来讲如何修改这些权限。

四、chmod 指令

1.用法 1:chmod [角色字符][+/-/=][权限] [文件名]

chmod 指令就是用来设置文件的访问权限。

角色字符:

  • u:拥有者
  • g:所属组
  • o:其它用户
  • a:所有用户

+ / - / = :

  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限

常用选项:

  • R -> 递归修改目录文件的权限

说明:只有文件的拥有者和 root 才可以改变文件的权限。

演示:

  • 取消拥有者 w 权限,使其无法写入文件。
  • 取消拥有者 r 权限,使其无法读文件。
  • 取消所属组的 rw 权限。
  • 取消 other 的 r 权限。
  • 一次性给三位角色增加不同权限。
  • 一次性取消三位角色的不同权限。
  • 给所有人增加 r 权限。
  • 给所有人取消 r 权限。
  • 最后,给所有人增加所有权限。(绿色一般代表可执行文件,但 test.txt 并不是一个可执行文件)Linux 下能执行 = 真的是一个可执行文件 + 可执行权限
  • 给所有人取消可执行文件。

注意,取消权限时即使有角色对应权限本来就没有,也不会有影响,所以 a-rwx 就能直接取消全部权限。然后如果增加或者取消权限时,没有带上用户字符,直接 + 或者 - 权限时,默认是给所有人加减权限。只有文件的拥有者和 root 能修改文件的访问权限。

"Permission denied" 的核心翻译是 '权限被拒绝'。

(1)root 不受访问权限约束:

root 用户可以无视文件权限进行操作。

(2)文件识别访问者身份时,只会识别一次

你有没有疑惑过,一个用户既是文件的拥有者又是文件的所属组,那他能通过所属组的权限来访问文件吗?

如:很明显,user1 作为拥有者和所属组,如果对应拥有者权限没有,即使对应所属组有权限,那 user1 也不能访问文件。这就是因为文件在第一次识别操作者身份时,会依次对比其是否为:拥有者->所属组->other。一旦识别到操作者身份为拥有者时,就不会往下识别了,以后该操作者只能使用拥有者的权限。同理,如果操作者为所属组,在文件第一次识别到操作者身份是所属组后,以后该操作者只能使用该文件的所属组权限。我们可以使用 chgrp 指令修改所属组对应的用户(下文详说)

2.用法 2:chmod [数字] [文件名]

3 个字符为一组的权限,每个位置有两种情况 (r/-)(w/-)(x/-),在 C 语言中 1 表示有 0 表示无,所以 rwx 可以用二进制 111 代替,换算为八进制就是 7。所以每组权限无非以下 8 种情况:000、001、010、011、100、101、110、111;并且可以用八进制代替表示:0、1、2、3、4、5、6、7。

所以 chmod 加数字就能设置文件权限。

  • 如:给拥有者和所属组设置 rw-(110 / 6)权限、给 other 设置 r--(100 / 4)权限。
  • 如:给所有人所有权限。
  • 如:去掉所有人所有权限。

两种方法各有好处,自行选择即可:用法 1 可读性强,用法 2 便捷性强。

五、chgrp 和 chown 指令

1.chgrp 指令

用法:chgrp [用户名] [文件名] 功能:修改文件或目录的所属组。

**演示:**注意普通用户需要 sudo 提权。 现在 txp 用户就能使用该文件的所属组权限了。

注意:以上操作在其他用户的家目录下可能不成功,这是因为家目录也存在权限,我们可以在根目录下创建一个所有人都有完整权限的目录进行操作验证。

2.chown 指令

用法 1:chown [用户名] [文件名] 说明:修改文件的拥有者,需要 root 权限或者 sudo 提权。

用法 2:chown [用户名]:[用户名] [文件名] 说明:同时修改文件的拥有者和所属组,同样需要 root 或者 sudo 提权。

演示:

  • 修改拥有者:此时 user1 不具备拥有者权限,只有所属组权限。
  • 同时修改拥有者和所属组。

温馨提示:如果一个用户对某文件没有 r 权限,那么该用户无论用什么工具(包括但不限于:nano、vim 等)都无法查看文件内容。

六、目录权限

前面我们都是在说普通文件的权限,那么对于目录的权限有什么不一样呢?

下面是使用 root 用户在根目录下创建的一个全权限的目录。

现在,我们来了解目录的 r w x 权限分别对应什么功能:

  1. 对于目录的 r 权限,如果没有就无法查看该目录下的所有文件和文件内容。
    • 演示,只去掉 r。
  2. 对于目录的 w 权限,如果没有就不能修改该目录下的所有文件,包括创建、删除、移动、拷贝等操作。
    • 演示,只去掉 w。
  3. 对于目录的 x 权限,如果没有就无法进入该目录。
    • 演示:只去掉 x。

家目录,只有对应的拥有者拥有权限,其他普通用户没有任何权限:

同样,对于根目录,只有 root 有修改的权限:

七、缺省权限

1.什么是缺省权限

缺省权限其实就是我们在创建文件或目录时系统默认给出的权限,一般对于普通文件缺省权限为 664(rw-rw-r--),对于目录缺省权限一般是 775(rwxrwxr-x)。

但这缺省权限其实并不是文件的初始权限,对于普通文件的初始权限一般为 666(rw-rw-rw-),对于目录的初始权限一般是 777(rwxrwxrwx),那为什么最终会变为缺省权限的 664 和 775 呢?这其实的奥秘就是权限掩码->umask。

2.权限掩码:umask

使用指令 umask 就能查看当前的权限掩码:一般默认就是 002,最前面那个 0 暂时可以忽略。

哪权限掩码是做什么的呢?权限掩码的功能:设置缺省权限。

权限掩码设置缺省权限的原理:缺省权限 = 起始权限 & (~umask)

说明:这其实是二进制的位运算,缺省权限等于起始权限的二进制码与权限掩码的反码的与运算结果。

**演示:**664 和 775 的缺省权限由来。

设置缺省权限演示:

用法:umask [数字]

例如 1:设置权限掩码为 000,效果就是初始权限是多少就是多少,也就是 666 和 777。

例如 2:设置权限掩码为 777,因为其反码为 000,0&任何都是 0,所以效果就是权限为 0。

umask 设置缺省权限在一些常见下还是有意义的,更加方便初始化文件的权限等等。

八、粘滞位

1.什么是粘滞位: 粘滞位其实就是将目录权限的最后一位,也就是 other 的 x 权限修改为 t。

用法:chmod +t [目录](普通用户需要 sudo 提权)

说明:粘滞位只能给目录设置,不需要给普通文件设置。

2.粘滞位有什么用: 在设置了粘滞位的目录下,用户创建的文件其他人无法删除,只有文件的拥有者具有删除文件的权限。root 无视。

粘滞位的用处:

比如现在需要一个共享文件,那么 root 可以在根目录下创建一个全权限的目录,提供给所有用户使用。

现在,txp 在该目录中创建一个文件,并限制其他人只有读的权限。

但是,不合理的是,其他用户可以直接删掉该文件。

这里的原因就是目录给了所有人修改的权限,普通文件是否可删除在于目录是否给了 w 权限,所以为了解决这个问题,粘滞位就出现了,只要使用 chmod +t 给对应目录加上粘滞位,文件的删除只能是该文件的拥有者。

先加上粘滞位,目录的最后一个权限位会变为 t。

此时,txp 创建一个文件。

其他用户就无法删除 txp 创建的文件了。

只要该文件的拥有者或者 root 才能删除该文件。

最后说明一下,Linux 根目录中存在默认的共享目录:tmp。

很明显的能看到其粘滞位 t。

目录

  1. 一、权限的概念
  2. 1.什么是权限
  3. 2.认识用户
  4. 3.su 指令:切换用户
  5. 二、sudo 提权
  6. 三、文件属性和访问权限
  7. 1.对文件属性的基本了解
  8. 2.认识拥有者和所属组
  9. 3.认识文件的访问权限
  10. 四、chmod 指令
  11. 1.用法 1:chmod [角色字符][+/-/=][权限] [文件名]
  12. (1)root 不受访问权限约束:
  13. (2)文件识别访问者身份时,只会识别一次
  14. 2.用法 2:chmod [数字] [文件名]
  15. 五、chgrp 和 chown 指令
  16. 1.chgrp 指令
  17. 2.chown 指令
  18. 六、目录权限
  19. 七、缺省权限
  20. 1.什么是缺省权限
  21. 2.权限掩码:umask
  22. 八、粘滞位
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 大模型应用架构设计与最佳实践:全局视角下的系统构建
  • 基于 MCP Tools 构建 Trae Agent 实现 Gitee 自动化管理
  • Llama3-8B 本地部署:vLLM 和 Open-WebUI 直装方案
  • 基于 Python 的餐饮供应链管理系统设计与实现
  • Rust 异步 Web 框架 Axum 深入原理与高级用法
  • 解决 GitHub SSH 连接端口 22 超时问题
  • Claude Code 安装配置与使用指南
  • Java 核心面试题与答案详解
  • 前端新手必备:10 款 VS Code 插件提升开发效率与配置指南
  • Spring Boot Web 后端开发核心注解详解
  • Git 用户名与邮箱配置指南
  • OpenClaw 新手指南:环境搭建、模型配置与远程访问
  • C++11 右值引用与移动语义详解:从性能瓶颈到零拷贝优化
  • VS Code 前端开发:10 款必备插件安装与配置实战
  • AI 智能体驾驭工程(Harness Engineering)全解析
  • OpenClaw 上门服务模式与 AI 时代信息差机会分析
  • C++ 四种强制类型转换运算符详解
  • 35 道常见前端 Vue 面试题解析与实战指南
  • ima Copilot 任务模式 PPT 生成功能评测
  • 攻防世界 Web 安全挑战题解 (八): 加密、反序列化与 RCE

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online