当前位置: 首页 > article >正文

Linux 权限浅谈

文章目录

  • 1. Linux中的文件权限
    • 1.1 权限是什么
    • 1.2 如何更改权限
    • 1.3 如何匹配权限
  • 2. Linux中的目录权限
  • 3. umask
  • 4. 更改拥有者和所属组
  • 5. 管理员权限

1. Linux中的文件权限

1.1 权限是什么

什么是Linux中的文件权限呢?
一般地,文件权限是指对文件进行读(用r代替)、修改(用m代替)和执行(用x代替)的权限,而权限肯定要有具体针对的对象,这个对象不是一个具体的人,而是强调一种身份,毕竟不同的身份,会对应有不同的权限。

Linux中,有三种身份:文件的所有者(即文件的创造者),文件的所属组(默认与文件的创造者相同),以及除此二者之外,所有的其它人。

总结成一个公式就是:文件权限 = 身份 + 文件的权限属性

这三种身份,对于文件有着不同的权限,我们可以通过查看文件的具体属性来看具体的权限。

在这里插入图片描述
就拿上图中的file.txt为例

-rw-rw-r-- 这就是代表不同身份所对应的权限。其中第一个 - 表示这是普通文件,后面三个字符为一组,共有三组,分别对应拥有者、所属组以及其他人的权限。

在这里插入图片描述
上图中有几点需要特别说明:

  • 权限分别用r/w/x来指代,如果不具备相应的权限,用 - 来替代。
  • 不同身份权限的排列顺序一定是:先拥有者,再所属组,最后其他人
  • 某种身份的三个权限,其排列顺序为:首先看有无 r 的权限,再是 w 的权限,最后 x 的权限。

本质上,这些权限都是用二进制来表示的,一个身份对应三个具体权限,而每个权限对应一个二进制数,所以一个八进制数,即可表示这三个权限。

比如说,r w - r w - r - -这个用八进制来表示就是664。

1.2 如何更改权限

在Linux中,如果想更改权限,可以通过chmod这个指令来实现。

chmod u/g/o(u代表user,g代表group,o代表other) +/-(+代表增加某种权限,-反之) 具体的权限

在这里插入图片描述
如果要进行多身份操作,使用逗号间隔不同的身份。如果确定要对三种身份一起操作,可使用 a 。

在这里插入图片描述
除了用具体的权限进行操作外,还可以使用八进制进行操作。

在这里插入图片描述

1.3 如何匹配权限

既然Linux下有三种身份,且三种身份会对应不同的权限,那么一个用户该如何进行身份匹配呢?
具体来说,一个用户会首先匹配owner的身份,如果成功,便停止匹配,不成功,则再匹配group,如果这个还不成功,那么这个用户就被认为是other的身份.

对于上面所提及的权限修改,不是所有的身份都可以进行权限修改的,只有owner这个身份以及特殊管理员用户root可以进行权限修改,其余身份或用户都不能修改。

2. Linux中的目录权限

Linux中的目录也有相应的权限,仍然是r w x这三个权限,只不过具体内容与普通文件的权限有所不同。

r:代表是否可查看目录中的文件内容
w:代表是否可在目录中新建或删除或重命名文件
x:代表是否可以进入该目录

对于目录,同样可以用chmod进行权限修改,具体的修改方式与文件相同,且权限的匹配方式亦相同,此处不再赘述。

3. umask

Linux中有umask,即权限掩码
实质上,在未修改权限的情况下,我们所看到的普通文件和目录的权限,并不是它们的初始权限,而是与权限掩码进行相应计算后得到的权限。

初始情况下,普通文件的默认权限是666,目录文件的默认权限是777,而Linux下,权限掩码的默认值是0002(第一个0不用在意,实际上是002)。

默认权限 & (~ umask) = 显示的权限

可以进行计算,最终就可以得到我们所见的权限:

在这里插入图片描述
若想要查看权限掩码或修改权限掩码,可以进行如下操作:

在这里插入图片描述
查看权限掩码或修改权限掩码,均使用umask即可。

4. 更改拥有者和所属组

前面提到了在文件的权限中有三种身份:拥有者、所属组和其它。其中,一个文件的拥有者和所属组是可以更改的。

更改拥有者,使用chown;更改所属组,使用chgrp。需要注意的是,普通用户是没有办法更改这两个的,要么使用sudo进行提权,要么切换成管理员账号再执行这些指令。

在这里插入图片描述

5. 管理员权限

在Linux中,管理员具有绝对最高的权限,换言之,管理员不受任何权限的限制,管理员账号root可以不受权限限制地做任何操作。


http://www.kler.cn/a/552416.html

相关文章:

  • 【Spring+MyBatis】留言墙的实现
  • 在Windows系统中安装Open WebUI并连接Ollama
  • MySQL中单引号和双引号(‘‘和““)的区别
  • 汽车同轴供电(PoC)电感器市场报告:未来几年年复合增长率CAGR为14.3%
  • 15.3.10 窗体下使用多线程
  • linux----docker配置nginx详细教程
  • 八、敏捷开发工具:自动化测试工具
  • Vue.prototype 详解及使用
  • 浅谈DNN(深度神经网络)算法原理
  • Spring MVC Streaming and SSE Request Processing SSE可以实现chatgpt一次请求分批次响应的效果
  • 基于Ubuntu系统的docker环境对MySQL8.0.36主从部署
  • Swagger 转 Word 技术方案
  • 【核心算法篇三】《DeepSeek强化学习:Atari游戏训练框架解析》
  • 如何利用爬虫抓取多个页面的商品销量数据
  • ubuntu网络及软件包管理
  • 算法每日一练 (3)
  • 使用 @Results 注解来手动指定字段映射
  • 24蓝桥省赛B-数字接龙
  • 【旋转框目标检测】基于YOLO11/v8深度学习的遥感视角船只智能检测系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】
  • Android Studio 提示 !Failed to initialize editor