【Linux】关于权限的理解

目录

一、Linux用户的分类

1.Linux下的两种用户

2.两种用户提示符的区别

3.用户的切换方法

二、Linux的权限管理

1.文件访问者分类

2.常见文件类型

3.文件访问权限

4.权限检查逻辑

5.文件权限的表示方式

三、与文件访问权限相关的设置方法

1.前提:

2.如何修改文件或目录权限

指令:

①符号模式(字母表示)

②数字模式(八进制)

③常用选项

④特殊权限

⑤典型使用场景

⑥注意事项

3.修改文件或目录的所有者或所属组

指令:

①常用选项

②示例

③注意事项

④chmod和chown的区别

4.修改文件的所属组

指令

①常用选项

②示例

③注意事项

④chgrp和chown的区别

5.权限掩码umask

①umask作用

②如何查看当前umask

③如何修改umask

④常见umask

⑤注意事项

四、目录权限

1.目录各权限作用

2.粘滞位的作用

3.如何设置粘滞位

①符号模式(更推荐)

②数字模式(八进制)

4.如何查看粘滞位

①使用 ls -l 查看

②使用 stat 查看

5.粘滞位和 SUID/SGID 的区别

6.注意事项


一、Linux用户的分类

1.Linux下的两种用户

①超级用户(root):可以在Linux系统下作任何事,不受限制。

②普通用户:在Linux系统下只能做一定权限内的事,受到约束。

2.两种用户提示符的区别

超级用户(root)的命令提示符是“#”,普通用户的命令提示符是“$”

3.用户的切换方法

切换用户指令:su

①root用户切换到普通用户(无需输入普通用户口令)

su + 空格 + 普通用户名,即: su user

②普通用户切换到root用户

su + 空格 + root  (su之后都可以省略不写)

然后输入root用户口令

二、Linux的权限管理

1.文件访问者分类

①文件及文件目录的所有者:u(User)

②文件和文件目录的所有者所在的组的用户:g(Group)

③其他用户:o(other)

注:三种身份在进行认证时,只能选择一种身份。

2.常见文件类型

①-:普通文件(文本、可执行程序、库基本都属于普通文件)

②d:目录文件

③b:块设备文件(磁盘文件等)

④c:字符设备文件(键盘文件、显示器文件等)

⑤p:管道文件

⑥l:软连接

⑦s:套接口文件

注:Linux系统中文件后缀名没有直接意义(但不代表不用)

3.文件访问权限

r :可读权限

w :可写权限

x:可执行权限

- :表示所在权限位置没有权限

4.权限检查逻辑

当用户尝试访问文件时,系统按以下顺序匹配身份并应用对应权限:

  1. 拥有者(Owner)

    • 若用户是文件的所有者,直接应用 owner 权限,忽略后续检查

  2. 所属组(Group)

    • 若用户不是所有者,但属于文件的所属组,则应用 group 权限,忽略后续检查

  3. 其他用户(Others)

    • 若用户既不是所有者,也不在所属组中,则应用 others 权限。

注:

  • 优先级是单向的:一旦匹配到身份(如 owner),后续身份(group/others)的权限不会生效。

  • 组权限的局限性:即使用户属于多个组,系统仅检查文件所属组,而非用户的所有组。

5.文件权限的表示方式

①字符表示

r--:表示仅可读

-w-:表示仅可写

--x:表示仅可执行

rw-:表示仅可读可写

rwx:表示可读可写可执行

---:表示无权限

②八进制数值表示

    权限符号                二进制                八进制
        r                100                4
        w                010                2
        x                001                1
        rw                110                6
        rx                101                5
        wx                011                3
        rwx                111                7
        ---                000                0

三、与文件访问权限相关的设置方法

1.前提:

只有文件拥有者和 root 可以修改文件权限。

2.如何修改文件或目录权限

指令:

chmod——名称来源于change mode

基本语法:chmod [选项] 权限模式 文件/目录

①符号模式(字母表示)
  • 用户类别

    • u:所有者(user)

    • g:所属组(group)

    • o:其他用户(others)

    • a:所有用户(all,默认值)

  • 操作符

    • +:添加权限

    • -:移除权限

    • =:直接设置权限

  • 权限类型

    • r:读(4)

    • w:写(2)

    • x:执行(1)

示例:

②数字模式(八进制)
  • 权限用 3 位八进制数表示,分别对应 所有者其他用户

  • 权限值:

    • 4:读(r)——对应2进制:100

    • 2:写(w)——对应2进制:010

    • 1:执行(x)——对应2进制:001

    • 权限组合通过相加得到(如 rwx=4+2+1=7)。

示例:

③常用选项
选项作用
-R递归修改目录及其子内容的权限
-v显示权限变更的详细信息
-c类似 -v,但仅显示修改过的文件
--reference=FILE参照某个文件的权限设置目标文件

示例:

④特殊权限
  • SUID(Set User ID)

    • 用户执行文件时临时获得所有者权限。

    • 设置:chmod u+s file 或数字模式前缀 4(如 4755)。

  • SGID(Set Group ID)

    • 用户执行文件时临时获得所属组权限,或目录下新建文件继承组权限。

    • 设置:chmod g+s dir 或数字模式前缀 2(如 2755)。

  • Sticky Bit

    • 仅允许所有者删除/重命名目录下的文件(如 /tmp)。

    • 设置:chmod +t dir 或数字模式前缀 1(如 1777)。

示例:

⑤典型使用场景

⑥注意事项
  1. 权限顺序:符号模式下操作顺序为 用户类别→操作符→权限(如 u+rx)。

  2. 安全风险:谨慎使用 777 或 -R 777,避免过度开放权限。

3.修改文件或目录的所有者或所属组

指令:

chown——名称来源change owner

基本语法:chown [选项] 新所有者:新所属组 文件/目录

注:可以单独修改所有者或组,也可以同时修改

①常用选项
选项作用
-R递归修改目录及其子内容的所有者/组
-v显示修改的详细信息(verbose)
-c类似 -v,但仅显示修改过的文件
--reference=FILE参照某个文件的所有者/组设置目标文件
-h修改符号链接本身的所有者(默认修改链接指向的文件)
②示例

1. 修改文件的所有者

2. 修改目录的所有者及组(递归)

3. 参照另一个文件设置权限

4. 修改符号链接的所有者(默认修改链接指向的文件)

③注意事项

需要 root 权限

  • 普通用户只能修改自己拥有的文件,root 可以修改任何文件的所有者。

  • sudo 提权:这个需要用root用户将普通用户添加进白名单,操作并不复杂,感兴趣的可以自行了解

用户和组必须存在

  • 如果指定的用户或组不存在,chown 会报错

目录权限影响

  • 如果目录的权限不允许写入,即使是 root,也可能无法修改其子文件的所有者

④chmod和chown的区别

chown:修改 所有者/组(谁拥有文件)。

chmod:修改 权限(谁能读/写/执行文件)。

4.修改文件的所属组

指令

chgrp——名称来源于:change group

基本语法:chgrp [选项] 新组名 文件/目录

  • 新组名:可以是组名(如 developers)或 GID(如 1001)。

  • 可以同时修改多个文件或目录。

①常用选项
选项作用
-R递归修改目录及其子内容的所属组
-v显示修改的详细信息(verbose)
-c类似 -v,但仅显示修改过的文件
--reference=FILE参照某个文件的组设置目标文件
-h修改符号链接本身的组(默认修改链接指向的文件)
②示例

1. 修改文件的所属组

2. 递归修改目录的所属组

3. 参照另一个文件设置组

4. 修改符号链接的组(默认修改链接指向的文件)

③注意事项

需要权限

  • 普通用户只能修改自己拥有的文件的组,且必须是该组的成员

  • root 可以修改任何文件的组。

  • 使用 sudo 提权:感兴趣的自行了解

组必须存在

  • 如果组不存在,chgrp 会报错

④chgrp和chown的区别

chgrp:仅修改 (如 chgrp dev file)。

chown:可以同时修改 所有者和组(如 chown user:dev file)。

5.权限掩码umask

①umask作用
  • 文件/目录创建时,系统会使用 umask 值来屏蔽(去除)某些权限。

  • 默认权限

    • 文件:0666(即 rw-rw-rw-

    • 目录:0777(即 rwxrwxrwx

但实际上我们所创建的文件和目录,看到的权限往往不是上面的默认值,原因就是创建文件或目录的时候还要受到 umask的影响。

假设默认权限是mask

则实际创建的出来的文件权限是:

二进制计算表示:

  • 最终权限 = mask & ~umask

八进制计算表示:

  • 最终权限 = mask - umask 权限

符号表示:

  • umask 也可以使用 u/g/o 和 r/w/x 表示:

②如何查看当前umask

输出结果:

③如何修改umask

临时修改(仅当前会话有效)

永久修改(对所有用户生效)

  • 修改 /etc/profile 或用户 ~/.bashrc

  • 重新加载配置:

④常见umask
umask文件权限目录权限适用场景
0000666rw-rw-rw-777rwxrwxrwx开放权限(不安全)
0022644rw-r--r--755rwxr-xr-x默认推荐(用户可读写,其他只读)
0027640rw-r-----750rwxr-x---组内共享,其他用户无权限
0077600rw-------700rwx------仅所有者可访问(最严格)
⑤注意事项
  1. umask 是权限的“反码”

    • umask=022 表示 去掉 w 权限(即 rw-r--r--)。

  2. root 用户的默认 umask 通常是 022,普通用户可能是 002

  3. umask 不影响已有文件,仅对新创建的文件/目录生效。

四、目录权限

1.目录各权限作用

可执行权限(x): 如果目录没有可执行权限, 则无法cd到目录中

可读权限(r): 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容

  • 目录的 r 权限仅允许查看文件名列表(需配合 x 才能读取文件内容)

可写权限(w): 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件

但是这并不科学

上面的目录权限说明只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限,但是我张三创建的一个文件, 凭什么可以被你李四删掉?

于是Linux引入了粘滞位

2.粘滞位的作用

  • 用于目录(对普通文件无效)。

  • 允许用户创建文件,但只能删除自己拥有的文件(防止误删他人文件)。

3.如何设置粘滞位

①符号模式(更推荐)

②数字模式(八进制)
  • 粘滞位对应 权限数字的最前面一位

    • 1 表示粘滞位(如 1777

    • 0 表示无粘滞位(如 0755

4.如何查看粘滞位

使用 ls -l 查看

如果目录有粘滞位,权限的 其他用户(others)执行位 x 会变成 t

输出结果:

  • 其他用户rwt 表示:

    • rw-:可读写,不可执行

    • rwx:可读写可执行

    • rwt:其他用户可读写 + 粘滞位

使用 stat 查看

5.粘滞位和 SUID/SGID 的区别

细心的朋友应该注意到了,这里就是前面提到过的特殊权限

特殊权限作用适用对象
SUID用户执行时临时获得所有者权限可执行文件
SGID用户执行时临时获得组权限,或目录下新建文件继承组可执行文件/目录
粘滞位仅允许所有者删除文件目录

6.注意事项

粘滞位一般是给目录设置,而且一般是共享目录

共享目录一般只有root用户有权限创建


本文有些长,若有错漏之处,烦请各位指正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/81930.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端antd,后端fastapi,解决文件上传

一、技术架构概述 前端框架:React Ant Design 5.x 使用antd的Upload组件(支持拖拽/多文件/分片) 后端框架:Python FastAPI 利用UploadFile类处理文件流 传输协议:HTTP FormData(兼容性强) 二…

⭐️⭐️⭐️ 模拟题及答案 ⭐️⭐️⭐️ 大模型Clouder认证:RAG应用构建及优化

考试注意事项: 一、单选题(21题) 检索增强生成(RAG)的核心技术结合了什么? A. 图像识别与自然语言处理 B. 信息检索与文本生成 C. 语音识别与知识图谱 D. 数据挖掘与机器学习 RAG技术中,“建立索引”步骤不包括以下哪项操作? A. 将文档解析为纯文本 B. 文本片段分割(…

为什么建立 TCP 连接时,初始序列号不固定?

主要原因有两个方面: 很大程度上避免历史报文被下一个相同四元组的 TCP 连接接收问题(主要方面)防止黑客伪造相同序列号的 TCP 报文被接收 接下来,详细说说第一点 假设每次建立 TCP 连接时,客户端和服务端的初始序列…

VScode-使用技巧-持续更新

一、Visual Studio Code - MACOS版本 复制当前行 shiftoption方向键⬇️ 同时复制多行 shiftoption 批量替换换行 在查找和替换面板中,你会看到一个 .∗ 图标(表示启用正则表达式)。确保这个选项被选中,因为我们需要使用正则…

【瑶池数据库训练营及解决方案本周精选(探索PolarDB,参与RDS迁移、连接训练营)】

一、训练营 数据库迁移训练营 自建数据库运维难?本次训练营教您迁移至云数据库 RDS,高可用架构跨区容灾,降本增效!模拟教程 实战演练,零基础也能上手。 (一)开营时间 2025年4月8日-6月2日16…

Xamarin劝退之踩坑笔记

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…

使用ray扩展python应用之流式处理应用

流式处理就是数据一来,咱们就得赶紧处理,不能攒批再算。这里的实时不是指瞬间完成,而是要在数据产生的那一刻,或者非常接近那个时间点,就做出响应。这种处理方式,我们称之为流式处理。 流式处理的应用场景…

火狐安装自动录制表单教程——仙盟自动化运营大衍灵机——仙盟创梦IDE

打开火狐插件页面 安装完成 使用 功能 录制浏览器操作 录入地址 开始操作 录制完成 在当今快速发展的软件开发生态中,自动化测试已从一种新兴技术手段,转变为保障软件质量与开发效率不可或缺的关键环节。其重要性体现在多个维度,同时&#x…

小程序 - 视图与逻辑

个人简介 👨‍💻‍个人主页: 魔术师 📖学习方向: 主攻前端方向,正逐渐往全栈发展 🚴个人状态: 研发工程师,现效力于政务服务网事业 🇨🇳人生格言: “心有多大,舞台就有多大。” 📚推荐学习: 🍉Vue2 🍋Vue3 🍓Vue2/3项目实战 🥝Node.js实战 🍒T…

【LLM应用开发】上下文记忆的解决方案(主流全面)

一、前言 上下文记忆(Contextual Memory)解决方案的作用: 提升 AI(尤其是大语言模型,LLM)的对话连贯性和个性化。 本文将介绍几个主流的实现方式。 二、🧠 什么是上下文记忆? 在对…

C/C++ 面试复习笔记(2)

C语言如何实现快速排序算法? 答案:快排是一种分治算法,选择一个基准元素,将数据划分成两部分,然后递归排序 补充: void quick_sort(int arr[], int start, int end) {//判断是否需要排序if (start > …

2025吉林CCPC 题解(前六题)

// Problem: J - Odd-Even Game // Contest: Virtual Judge - sdccpc20250527 // URL: https://vjudge.net/contest/719585#problem/J // Memory Limit: 1024 MB // Time Limit: 1000 ms // 签到题 // Powered by CP Editor (https://cpeditor.org)#include <bits/std…

Q: dify知识库模块主要库表和字段

【回到目录】~~~~【回到问题集】 Q: dify知识库模块主要库表和字段 A: 表1&#xff1a;datasets 知识库表 name 知识库名称 index_struct 向量索引node 表2&#xff1a;document 文档表 name 文档名称 word_count 字数 doc_form 分段类型(hierarchical_model、qa_model、te…

NodeMediaEdge快速上手

NodeMediaEdge快速上手 简介 NodeMediaEdge是一款部署在监控摄像机网络前端中&#xff0c;拉取Onvif或者rtsp/rtmp/http视频流并使用rtmp/kmp推送到公网流媒体服务器的工具。 通过云平台协议注册到NodeMediaServer后&#xff0c;可以同NodeMediaServer结合使用。使用图形化的…

通用前端框架项目静态部署到Hugging Face Space的实践指南

背景介绍 在轻量级展示前端项目的场景中,Hugging Face Space 提供了一个便捷的静态托管平台。需求是将无后端服务的Vite的 Vue项目部署到Hugging Face Space 上。其实无论是基于Vite的Vue/React项目,还是使用Webpack构建的工程化方案,都可以通过两种方式将其部署到Space:自…

Android studio 查看aar源码出现/* compiled code */

如图查看aar源码时看不到具体实现&#xff0c;在排除是sdk版本导致的问题后&#xff0c;下面说解决方法 打开设置&#xff0c;找到插件 输入decompiler 搜索 这个是自带的反编译工具&#xff0c;启用就好了

Spark实时流数据处理实例(SparkStreaming通话记录消息处理)

所用资源&#xff1a; 通过网盘分享的文件&#xff1a;spark-streaming-kafka-0-8-assembly_2.11-2.4.8.jar等4个文件 链接: https://pan.baidu.com/s/1zYHu29tLgDvS_L2Ud-22ZA?pwdhnpg 提取码: hnpg 1.需求分析 &#xff1a; 假定有一个手机通信计费系统&#xff0c;用户通…

Vue3处理number输入框避免NaN

在 Vue3 中处理 number 类型输入框避免显示 NaN&#xff0c;核心在于正确处理用户输入的非数字值。以下是几种解决方案&#xff1a; 方案1&#xff1a;使用字符串中转 计算属性&#xff08;推荐&#xff09; vue 复制 下载 <template><input v-model"input…

Python自动化之selenium语句——浏览器设置显示尺寸、截图、刷新网页

目录 一、浏览器设置最大化、最小化 1.浏览器最大化 2.浏览器最小化 二、浏览器打开的位置、尺寸 1.浏览器打开位置 2.浏览器打开尺寸 三、浏览器截图 1.截图语句 2.运行成功后查看 四、刷新网页 上一节实现了打开浏览器、打开指定网址、关闭浏览器的操作&#xff0c…

model.classifier:分类头

model.classifier:分类头 分类头(model.classifier)含义 在基于Transformer架构的模型(如BERT、GPT等 )用于分类任务时,“分类头(model.classifier)” 是模型的一个重要组成部分。以Hugging Face的Transformers库为例,许多预训练模型在完成通用的预训练任务(如语言…