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

Linux 权限概念与操作详解

Linux 权限体系包含超级用户与普通用户,通过 su 和 sudo 进行身份切换与提权。文件权限分为拥有者、所属组和其他人,对应 rwx 读、写、执行属性。使用 chmod 修改权限(支持符号法与八进制),chown 修改所有者,chgrp 修改所属组。umask 控制新创建文件的默认权限掩码。目录权限中 x 代表进入权限,粘滞位防止共享目录下文件被非拥有者删除。

心动瞬间发布于 2026/3/15更新于 2026/10/2595 浏览
Linux 权限概念与操作详解

1. 用户类型

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

超级用户:可以在 Linux 系统下做任何事情,不受限制。 普通用户:在 Linux 下做有限的事情。

超级用户的命令提示符是 #,普通用户的命令提示符是 $。

使用 su 命令切换用户。

  1. 从普通用户切换到 root 用户使用 su root(root 可以省略)。注意此时虽然用户切换了但家目录还是原用户的家目录,相当于在原家目录下换了一个用户。
  2. 从普通用户切换到 root 可以使用 su - 指令,相当于重新登录,家目录发生变化。
  3. 可以使用 exit 或 Ctrl+d 来返回原用户。
  4. 也可使用 su user 直接返回普通用户,家目录不变。

总结:普通用户切换到其他用户 (包括 root) 需要输入目标用户的密码,而 root 用户切换到其它用户直接切换不需要密码。

1.2 Sudo 提权

当我们执行某条指令时需要提升权限怎么办?用指令 sudo command。

为什么提权反而是要求输入自己账户的密码?因为 root 超级用户并非人人可用,我们需要在 sudo 的配置文件 sudoers 中输入自己信息获得认可,相当于白名单。

新建的用户无法执行 sudo,除非将普通用户添加到系统信任的白名单里面。

查看配置文件权限,发现只有读权限,所以需要 root 用户来修改。打开配置文件,找到白名单条目,复制并粘贴加入自己的用户名。保存修改时使用 wq! 强制保存退出。

加入白名单后,账号就可以用 sudo 提权以 root 的身份来执行指令。

1.3 权限定义

权限就是一件事是否允许被你做。

  1. 权限认证的是身份(和人有关)。 人(具体用户)包括:root,普通用户。 权限身份 包括:拥有者,所属组,其他人。为什么需要所属组?因为需要组内协同的同时,不给其他人权限。 人和权限身份的关系不是割裂冲突的,而是需要相结合的,权限身份需要一定的人来承担。

  2. 权限也和事物的属性有关。 从文件的属性出发包括:

    • r(read):读取权限,允许用户读取文件内容或列出目录中的文件。
    • w(write):写入权限,允许用户修改文件内容或向目录中添加/删除文件。
    • x(execute):执行权限,允许执行文件(对于目录,表示可以进入该目录)。
    • -:对应的权限位置,没有权限。

2. 文件类型与访问权限

文件类型:

  • -:普通文件:文本,可执行程序,库基本属于普通文件。
  • d:目录文件。
  • b:块设备文件:磁盘文件。
  • c:字符设备文件:键盘,显示器文件。
  • p:管道文件:用来进行通信的。

注意:Linux 系统中文件名后缀没有直接意义(不代表不适用后缀),在 Linux 系统上运行的其他软件可能需要后缀如编译器 gcc。

通过 ls -l 查看文件详细信息,可得文件对应部分的属性。

  1. 可以发现权限身份信息中没有其他人的信息,因为用户在访问文件前需要登录,访问时比对权限身份若既不是拥有者也不是所属组,那么就是其他人。其他人的信息太多所以没必要列举,另外 root 不受权限约束。
  2. 绿色事物属性的权限部分,人的权限身份和事物的属性结合起来了,每个位置是什么含义都是确定的,第一个为读,第二个为写,第三个为可执行,每个位置只有是或否具有该权限。

3. 权限设置与修改

3.1 chmod 命令

使用 chmod 指令,全称是 change mode,可对文件和目录的权限进行修改。 格式:chmod [参数] 权限 文件名

  • -R:递归修改目录文件的权限。 说明:只有文件的拥有者和 root 才可以改变文件的权限。

  • u(user):文件或目录的所有者。

  • g(group):文件或目录所属组的成员。

  • o(others):其他用户。

  • a(all):所有用户。

可用符号来修改:

  • +:添加权限。
  • -:移除权限。
  • =:设置权限(覆盖现有权限)。

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

将上述的参数和权限名组合起来使用指令。

对单个权限身份的属性进行添加。 对单个权限身份的属性进行移除。 对多个权限身份的属性进行添加。 三个权限身份间要用 , 相隔,也等价于 a+rwx。 同理只要把 + 变成 - 可以实现单个或多个权限身份的属性移除,同时属性 ± 的数量也可以自己控制。

3.1.2 权限表示法

由于每一个属性只存在具有或没有权限的两种状态,所以可以用二进制来表示每一属性的状态,有三个属性,三位刚好可以用 8 进制来表示三个属性各种状态的组合。

例如全部移除。 全部添加。

3.2 chown 命令

功能:修改文件的拥有者。 格式:chown [参数] 用户名 文件名

作为普通用户没权限直接修改文件。 需要 root 权限,或普通用户使用 sudo 提升权限执行该指令。

注意:修改文件拥有者后,自己的身份权限变成所属组。

3.3 chgrp 命令

功能:修改文件或目录的所属组。 格式:chgrp [参数] 用户组名 文件名 常用选项:-R 递归修改文件或目录的所属组。

同理可得相同操作,可在更改拥有者后更改所属组,完成后自己的身份权限变成其他人。普通用户没权限更改,需要 sudo 提权或使用 root 超级用户。

可以使用 chown 拥有者:所属组 文件或目录,一次性更改人的权限信息。 chgrp 不能进行该操作。

3.4 权限冲突处理

进行身份认证的时候,只能选择一个角色进行认证。

文件拥有者和所属组都是 ywb,所以从前往后就只认证 ywb 为拥有者,不再往后认证。

3.5 默认权限与 Umask

知识储备:默认普通文件的起始权限是 666,二进制为 110 110 110; 目录是 777,二进制为 111 111 111。

我们创建时所看到的: 普通文件是 664,二进制为 110 110 100。 目录文件是 775,二进制为 111 111 101。 最终权限与起始权限不同中间肯定发生了某种转化,了解权限掩码。

3.5.1 Umask 掩码

凡是在 umask 中出现的权限,不会在最终的文件权限中出现。

普通用户默认的 umask 为 0002,第一位代表八进制数不计入计算。 超级用户默认掩码值为 0022。

最终权限 = 起始权限 & (~umask),还可以通过 umask 0xxx 来设置掩码。

权限掩码的应用:重要!!! 当我们想或不想让创建的文件或目录具有某种权限,那么就更改对应的权限掩码,应为最终权限需要经过与运算所以会遵循上述所说在 umask 出现过的权限不会在最终文件中出现。

3.5.2 File 命令

功能说明:辨识文件类型。 语法:file [选项] 文件或目录…

常用选项:

  • -c 详细显示指令执行过程,便于排错或分析程序执行的情形。
  • -z 尝试去解读压缩文件的内容。

4. 目录权限

  • r: 读权限并不会影响我们进入目录,但限制我们查看目录下文件列表。
  • w: 是否允许我们在当前目录下进行创建、更改、删除。
  • x: 如果目录没有可执行权限,则无法 cd 到目录中。

普通用户自己的家目录权限是 700,在各自家目录创建的文件,别人都看不见。 但是有时多个用户间需要文件数据的共享,所以这就要求所建立的共享文件,不能在任何一个人的家目录下可以在根目录下创建共享目录,作为共享用户的我们身份权限都为其他人,只需通过根目录进行其他人权限的添加即可。 这里会有一个问题? 通过测试,发现属于自己的文件在共享文件中可以被其他人删除,这说明一个文件能否被删除,并不由文件本身决定,而是由这个文件所处的目录决定。 可以通过修改目录其他用户的写权限来禁止删除他人文件操作,但同时也禁止了在该目录下创建文件,失去了共享目录的意义。 需要我们引入一个新的权限位—粘滞位。

在根目录下创建共享目录需要 root 用户,其他用户没有读写权限。

注意: 目录的可执行权限是表示你可否在目录下执行命令。如果目录没有 -x 权限,则无法对目录执行任何命令,甚至无法 cd 进入目,即使目录仍然有 -r 读权限(易错,认为有读权限就可以进入目录读取目录下的文件)。

4.1 粘滞位

t 就是粘滞位,添加之后原来的 x 变为 t,t 是一种特殊的可执行权限,允许用户新建文件,但禁止互删。

粘滞位意义: 一般给共享目录设置,大家可以在共享目录中进行各自文件的增删查改,只允许文件拥有者或 root 能删这个文件,其他人不允许,t 是一种特殊的 x 权限。

我们不一定需要自己在根目录下创建共享目录,系统中自带了一个共享目录 tmp,唯一一个有粘滞位的目录并且所有权限打开,可以将临时文件存入其中。

目录

  1. 1. 用户类型
  2. 1.2 Sudo 提权
  3. 1.3 权限定义
  4. 2. 文件类型与访问权限
  5. 3. 权限设置与修改
  6. 3.1 chmod 命令
  7. 3.1.2 权限表示法
  8. 3.2 chown 命令
  9. 3.3 chgrp 命令
  10. 3.4 权限冲突处理
  11. 3.5 默认权限与 Umask
  12. 3.5.1 Umask 掩码
  13. 3.5.2 File 命令
  14. 4. 目录权限
  15. 4.1 粘滞位

更多推荐文章

查看全部
  • Grok 开源发布:程序员在大模型时代的技术机遇
  • 基于 OpenClaw 与飞书集成构建 AI 新闻推送机器人
  • Windows 本地部署 Ollama 与 OpenClaw 构建 AI 工作流
  • MySQL 在 CentOS 7 环境下的安装教程
  • 大模型在医学领域的应用
  • JavaAI 辅助生成 SpringBoot 项目的实战流程与效果评估
  • C++ 轻量级开源项目推荐:适合阅读源码
  • C++ 模板的幻觉:实例化、重定义与隐藏依赖
  • 数据结构:单链表与双链表的操作详解
  • 前端三个月速成学习路线与面试核心考点
  • RabbitMQ 延迟队列插件安装与使用详解
  • Python、NumPy、Pandas 与 Matplotlib 版本兼容指南
  • Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码
  • Ansible 批量部署 Nginx 实战指南
  • Java + AI 混合编程落地实施方案
  • OpenMAIC:清华开源的 AI 课堂生成与多智能体教学平台
  • Trae、Cursor、Copilot、Windsurf AI 编程工具深度对比
  • AskGo:集成多模型的一站式 AI 工具平台
  • IntelliJ IDEA 中 Tomcat 控制台乱码解决方法
  • vLLM-Omni 部署 Qwen3-Omni 模型实战指南

相关免费在线工具

  • 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