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

Linux 权限概念与操作详解

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

心动瞬间发布于 2026/3/15更新于 2026/7/2041 浏览
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 粘滞位
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • Redis Hash 类型详解:核心指令与使用场景
  • OpenDroneMap 快速入门:无人机影像处理与三维建模
  • Stable Diffusion WebUI 落幕:AI 绘画框架的技术演进与思考
  • Python 豆瓣电影评论爬虫实战与数据分析
  • 无人机路径规划算法详解:原理与实战应用
  • C++ 异常处理机制详解
  • 用 ImGui 快速搭一个 C++ 调试面板
  • 工信部发布工业互联网开源行动方案 推动生态跃迁
  • ChatGPT 辅助 SEO 实战技巧与提示词指南
  • Spring AI MCP Server 技术解析与实战示例
  • MCPHost:命令行下利用大模型与外部工具交互
  • 风险管控而非修补:金仓 SQL 防火墙体系化实践
  • 基于 Python Django Vue3 的网上鲜花商城系统设计与实现
  • OmniSteward:基于 LLM Agent 的智能家居与电脑控制方案
  • 绿盟校招 C++ 研发工程师一面面试复盘
  • 基于 Rokid 眼镜的 AI 天气与旅游规划实现
  • OpenClaw 架构解析:实现从语言交互到主动执行的 AI 智能体
  • LLaMA Factory 核心原理讲解
  • 纯 Java 手写 TopoJSON 生成器:零依赖实现 GeoJSON 转换
  • Terraform 基础设施即代码入门与实践

相关免费在线工具

  • 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