【Linux探索学习】第四弹——Linux权限管理详解:理解用户、组和权限之间的关系

news2024/10/12 1:07:33

前言:

在前面我们已经学习了Linux的基础指令,相信大家对Linux已经有了一定的认识,今天我们来学习Linux权限的相关知识点,Linux权限是Linux初学者必须要掌握的内容

目录

一、Linux下用户类型

二、权限基本概念

三、权限的表示

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

1. chmod指令

2. chowm指令

3. chgrp指令

4. umask指令

五、目录权限

粘滞位

六、特殊权限

七、总结


一、Linux下用户类型

在正式讲解Linux权限管理前,我们先来了解这样一个知识:Linux下的用户类型

在Linux下用户其实有两种类型:超级用户和普通用户——超级用户就是我们配置好环境后默认的用户类型,它也叫root用户,而普通用户则是我们在超级用户下自己创建的,因为为了平时学习和工作方便,我们可能需要多个用户身份,就好比VS下多个可执行程序文件一般,而普通用户跟超级用户比是有权限约束问题的,也就是说有些文件之类的可能在普通用户下无权访问,而超级用户则可以随意访问

我们可以用这样一个指令来查看我们当前的身份:whoami

超级用户:

普通用户:

这里的temp是普通用户的用户名,是自己创建的,而且一个超级用户可以创建多个普通用户,至于如何创建普通用户,我们会在下一篇进行详细讲解

二、权限基本概念

在 Linux 中,文件和目录的权限由以下三种操作控制:

  1. 读取(Read,r):查看文件内容或列出目录内容。
  2. 写入(Write,w):修改文件内容或在目录中添加、删除文件。
  3. 执行(Execute,x):执行文件(如脚本或程序)或进入目录。

这些权限可以被分配给三种类型的用户:

  • 文件所有者(User):文件的创建者或拥有者。
  • 用户组(Group):与文件所有者同属一个组的用户。
  • 其他用户(Others):不属于文件所有者和用户组的所有其他用户。

三、权限的表示

在这里我们先来解决一个问题:就是我们上面一直所说的权限到底是什么?

其实这里的权限说的是我们所创建的文件不同用户的执行能力

当我们查看我们所创建的文件的详细信息时:

我们可以看到每个文件的信息都是由相似的一排组成,那么这些信息分别表示什么意思呢?

如下图所示:

在 Linux 中,文件权限通常以字符串的形式表示,就比如上图中的:

这里,字符串的第一个字符表示文件类型:

  • - 表示普通文件
  • d 表示目录
  • l 表示符号链接
  • p:管道文件
  • c:字符设备文件(例如屏幕等串口设备)
  • s:套接口文件
  • b :块设备文件(例如硬盘、光驱等)

接下来的九个字符分为三组,每组三个字符,分别表示所有者、用户组和其他用户的权限:

  • 第一组(rwx):文件所有者的权限
  • 第二组(r-x):用户组的权限
  • 第三组(r--):其他用户的权限

每个字符的意义如下:

  • r:可读
  • w:可写
  • x:可执行
  • -:无权限

因为权限具有二态性,所以我们可以用二进制0/1来表示(可读可写可执行为1,无权限为0),比如一个文件的所有者对应的权限为:rwx,它的二进制表示为111,八进制表示为7

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

1. chmod指令

功能:设置文件的访问权限

注意事项:只有文件的拥有者和root用户才有权修改文章权限

chmod命令权限值的格式有两种:

① 用户表示符+/-=权限字符

+ :  向权限范围增加权限代号所表示的权限 
- :  向权限范围取消权限代号所表示的权限 
= :  向权限范围赋予权限代号所表示的权限 
用户符号 :  
u :拥有者 
g :拥有者同组用 
o :其它用户 
a :所有用户
实例:
# chmod u+w /home/abc.txt
# chmod o-x /home/abc.txt
如下:
在这个test.c文件中,所属组的权限为rw-,没有执行权限,且文件的拥有者为zwt,所以我们就可以用zwt身份或root身份下进行操作,赋予所属组执行权限
操作后我们就可以看到所属组也有了x执行权限
② 三位8进制数字

除了上面用字母表示外,我们还可以用八进制数字的方法来表示:

实例:

# chmod 664 /home/abc.txt
# chmod 640 /home/abc.txt

2. chowm指令

功能:修改文件的拥有者

格式:chown [参数] 用户名 文件名

注意事项:只有root用户才有权修改文件的拥有者

选项:-R 递归修改文件的拥有者

实例:

# chown user1 f1
# chown -R user1 filegroup1

3. chgrp指令

功能:修改文件的所属组

格式:chown [参数] 用户组名 文件名

注意事项:只有root用户才有权修改文件的所属组

选项:-R 递归修改文件的所属组

实例:

#  chgrp users /abc/f2

4. umask指令

功能:查看或修改文件掩码

在讲解这个指令前,首先我们要知道掩码是什么

当我们在Linux下创建文件时:

如图,我们创建了一个普通文件和一个目录文件

当我们查看它们两个权限时,我们可以看到目录文件的权限为775(八进制数组表示),普通文件的权限为664

但实际上默认权限与我们所看到的是有差别的,目录文件的默认权限为777,普通文件的默认权限为666,之所以我们看到的是上面的,就是因为掩码的存在

我们可以通过umask查看掩码:

我们可以看到掩码为0002,加到775中和664中恰好就是默认权限值,所以也就是说我们实际上得到的文件与默认权限相比,缺少了部分权限,而这一部分权限就是umask掩码中的权限

最终的权限 = 默认权限 & (~umask)

所以我们可以通过修改umask值来改变我们所创建的目录或文件的起始默认权限,从而达到我们想要的结果

五、目录权限

目录的权限与上面讲的文件的权限的内容是有不同的

目录文件的三种权限的结果如下:

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

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

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

也就是说,当一个用户对一个目录文件有写权限时,就可以删除里面的文件,即使这个用户可能对里面的文件并没有任何权限

但是这样就会导致一个问题,当我们以后在工作中,如果我们使用了网上的一个开源的目录文件,我们都是这个目录文件所属组的一员,且具有写权限,那么是不是意味着如果我们在这个目录文件下创建一个文件,别人可以随意的删除?

为了解决这个问题,我们引入了粘滞位的概念

粘滞位

  • 当设置在目录上的粘滞位时,只有文件的所有者可以删除或重命名该目录中的文件。标志位用 t 显示在其他用户权限的位置。

实例:

chmod +t dir       # 设置粘滞位

注意事项:

1、目录的可执行权限是表示你可否在目录下执行命令。
2、如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
3、而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

六、特殊权限

Linux中除了基本的权限外,还给了三种特殊的权限,上面的粘滞位就是其中一种

如下:

  1. Set UID(SUID)

    • 当设置了 SUID 权限的可执行文件被运行时,程序以文件所有者的权限运行。标志位用 s 显示在所有者权限的位置。
  2. Set GID(SGID)

    • 与 SUID 类似,但程序以用户组的权限运行。标志位用 s 显示在用户组权限的位置。
  3. Sticky Bit

    • 当设置在目录上的 Sticky Bit 时,只有文件的所有者可以删除或重命名该目录中的文件。标志位用 t 显示在其他用户权限的位置。

设置这些特殊权限时,可以使用 chmod 命令:

chmod u+s file.txt # 设置 SUID

chmod g+s dir # 设置 SGID

chmod +t dir # 设置 Sticky Bit

七、总结

Linux 权限管理是确保系统安全的关键组成部分。理解用户、组和权限之间的关系,以及如何查看和修改权限,对于管理和保护 Linux 系统至关重要。通过合理地设置权限,可以有效地防止未授权访问和数据泄露。

希望本文能帮助您更好地理解 Linux 权限机制,并在实际学习和工作中应用这些知识。

感谢各位大佬观看,创作不易,还请各位大佬点赞支持!!!

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

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

相关文章

SpringBoot整合web中使用jsp

1、在pom.xml文件中导入jsp依赖的jar包&#xff0c;一个是jstl标签&#xff0c;一个是jsp的引擎 <dependency><groupId>org.apache.taglibs</groupId><artifactId>taglibs-standard-spec</artifactId><version>1.2.5</version> <…

窗口售票系统1.0版本

本窗口售票系统实现了三个售票窗口的随机售票&#xff0c;实现随机到某一个窗口买票&#xff0c;总票余量都会减少&#xff0c;即三个窗口共享同一个票余量。若票余量小于一次性购票量&#xff0c;则提示报错&#xff1b;若车票售罄&#xff0c;则代码结束运行。 代码实现&…

代码随想录算法训练营第三十天|491. 非递减子序列,46. 全排列,47. 全排列 II,332. 重新安排行程,51. N 皇后,37. 解数独

491. 非递减子序列&#xff0c;46. 全排列&#xff0c;47. 全排列 II&#xff0c;332. 重新安排行程&#xff0c;51. N 皇后&#xff0c;37. 解数独 491. 非递减子序列46. 全排列47. 全排列 II332. 重新安排行程51. N 皇后37. 解数独 491. 非递减子序列 给你一个整数数组 nums…

技术成神之路:设计模式(二十)装饰模式

介绍 装饰模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许在不改变对象自身的情况下&#xff0c;动态地为对象添加额外的职责。这个模式通常用于增强或改变对象的功能。 1.定义 装饰模式通过创建一个装饰类&#xff0c;将功能动态地添加…

网站设计公司怎么评估?2024网站定制公司哪家好

在选择一家网站建设公司时&#xff0c;需要采取一些筛选方法来评估其能力和专业性。可以通过查看公司的案例展示、项目经验、团队规模等方面来评估公司的实力。同时&#xff0c;需要了解公司是否有与自己业务相似的项目经验&#xff0c;以便更好地满足自己的需求。在选择公司时…

win0删除 Windows.old

参考&#xff1a;https://blog.csdn.net/xitongzhijia_abc/article/details/126270452 win10如下所示&#xff1a; 打开 设置–>系统—>存储

Ps:PDF 演示文稿

Ps菜单&#xff1a;文件/自动/PDF 演示文稿 Automate/PDF Presentation PDF 演示文稿 PDF Presentation命令提供了创建 PDF 演示文稿的多种选项&#xff0c;用户可以添加当前打开的文件或手动选择文件&#xff0c;选择背景颜色、字体大小等&#xff0c;设置演示文稿的页面切换间…

哪个牌子充电宝性价比高?2024年精选性价比排行榜充电宝推荐

在数字化生活日益普及的今天&#xff0c;充电宝作为我们移动设备的“能量加油站”&#xff0c;其重要性不言而喻。无论是商务出行、旅行探险还是日常通勤&#xff0c;一款性价比高、安全可靠的充电宝都是不可或缺的伴侣。然而&#xff0c;面对市场上琳琅满目的充电宝品牌与型号…

芯课堂 | Synwit_UI_Creator(μgui)平台之图像处理篇

今天小编给大家介绍的是UI_Creator&#xff08;μgui&#xff09;平台下关于图像处理的选项。 UI_Creator&#xff08;μgui&#xff09;平台图片类控件有图像控件和分级图像控件&#xff0c;均包含以下选项&#xff1a; 1、消除水波纹&#xff1a; 由于16位真彩色&#xff08…

MySQL常用语句(二)

#数据修改 #insert insert语句用于将一行或多行插入到表中。insert语句的语法&#xff1a; 在insert into子句之后的括号内指定表名和逗号分隔列的列表&#xff0c;然后将括号内相应列的逗号分隔值放在values关键字之后。创建一个名为tasks的新表来练习insert语句&#xff1a…

火山引擎边缘智能×扣子,拓展AI Agent物理边界

9月21日&#xff0c; 火山引擎边缘智能扣子技术沙龙在上海圆满落地&#xff0c;沙龙以“探索端智能&#xff0c;加速大模型应用”为主题&#xff0c;边缘智能、扣子、地瓜机器人以及上海交大等多位重磅嘉宾出席&#xff0c;分享 AI 最新趋势及端侧大模型最新探索与应用实践。 …

C++继承深度剖析:从理论到实践的跨越

✨✨小新课堂开课了&#xff0c;欢迎欢迎~✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C&#xff1a;由浅入深篇 小新的主页&#xff1a;编程版小新-CSDN博客 前言&#xff1a; 前面我们已经学了很多有关…

纠删码参数自适应匹配问题ECP-AMP实验方案(中)

6.方法设计 6.1.数据获取 为了收集不同的文件大小和纠删码参数对性能指标的影响&#xff0c;本文在Hadoop平台上进行了模拟实验。Hadoop是一种开源的分布式存储和计算框架&#xff0c;它可以支持不同类型的纠删码&#xff0c;并提供了一些应用程序接口和工具来测试和评估纠删…

Rstudio 绘制elecdaily的时序图与预测

&#xff08;1&#xff09;绘制上述数据的时序图并将温度作为解释变量对日度耗电量建模。为什么是它们之间是正向相关关系&#xff1f; head(elecdaily,20) %>% as.data.frame() %>% ggplot(aes(xTemperature, yDemand)) ylab("电量能耗 %") xlab("温度…

论文笔记:D-vlog 用于抑郁症检测的多模态数据集

整理了AAAI2022 D-vlog: Multimodal Vlog Dataset for Depression Detection 论文的阅读笔记 背景方法特征提取模型 实验数据集主实验不同模态的性能性别的影响 背景 以往关于抑郁症检测的工作大多集中在实验室环境下对抑郁症个体的检测&#xff0c;难以在实践中推广。本文提出…

Java之API

前言 这一篇讲API&#xff0c;有很多很多的API 1. Object 它是所有类的祖宗类&#xff0c;所以任何类都可以直接使用Object的一些方法 1.1 toString 从这个我们就可以看出&#xff0c;平时对s1的打印其实是默认调用了它的toString函数&#xff0c;因为toString是灰色的 但…

qt数据库的系统

pro文件 QT core gui sqlgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # depend on your compiler). Plea…

四款电脑录屏的软件,谁更胜一筹?

作为一名喜欢搜罗各种办公软件的打工人&#xff0c;我每天的工作都离不开电脑&#xff0c;而录屏软件就成了我工作中不可或缺的小帮手。最近&#xff0c;我试用了四款流行的录屏软件&#xff0c;今天就来跟大家分享一下我的使用感受&#xff0c;看看哪款软件更得我心。 一、福…

Python和C++及MATLAB低温磁态机器学习模型

&#x1f3af;要点 使用小规模磁态训练模型&#xff0c;并在二维三维爱德华兹-安德森模型上使用四种算法测试&#xff1a;贪婪算法、模拟退火算法、并行回火算法和本模型。将磁态基态搜索视为马尔可夫决策过程 (MDP)&#xff0c;学习最优策略以累积其最大回报。设计图神经网络…