Linux权限(下)

目录

文件访问权限的设置和更改

粘滞位

权限掩码


本期我们接着进行Linux权限的学习。

文件访问权限的设置和更改

在上期我们学习了文件的访问权限,这些访问权限其实是可以更改的。

chmod指令

chmod指令:用于设置访问权限和更改权限。

+:向权限范围增加权限代号所表示的权限

-:向权限范围取消权限代号所表示的权限

=:向权限范围赋予权限代号所表示的权限

用户符号:  

u:拥有者

g:所属组

o:其它用户

a:所有用户

 注意:只有文件的拥有者root管理员才能对文件不同用户的访问权限进行修改。

实例如下:

1.增加拥有者对test2.c文件的执行权限:

 2.取消所属组对test2.c文件的写权限:

3.增加其他人对文件test2.c的写权限和执行权限

 

4.取消拥有者,所属组,其他人对文件test1.c的所有访问权限

5.增加拥有者,所属组,其他人对文件test1.c的所有访问权限

除了上述增加权限的方式之外,还有一种通过八进制数更改权限的方法:

        我们知道,读写执行这三个访问权限有两种状态,要么具有权限要么不具有权限,所以我们可以将具有相关权限设置成0,不具有相关权限设置成1,总共三个权限,每种权限有两种状态,即二进制,三个权限组合总共有8种状态,刚好可以用一个八进制数表示(0-7)。

通过一个例子我们可以更清楚的认识上述的八进制更改权限的方法:

1.增加所有用户对test2.c的所有权限:

chown指令 

chown指令:更改文件的拥有者

注意:通过上代码我们发现,普通用户不能更改文件的拥有者,只有root用户可以更改文件的拥有者。

chgrp指令 

chgrp指令:更改文件的所属组

注意:通过上述代码我们发现,普通用户是不能直接更改文件的所属组,只有root管理员可以,但是当管理员将所属组信息更改之后,我们可以让普通用户,将更改后的所属组改回文件本身的所属组。这一点需要额外注意。 

如果我们要进入一个目录,需要什么权限呢?

这里直接给出结论,如果我们要进入一个目录,必须要拥有对这个目录的执行权限--x

通过上述代码不难发现,我们要进入一个目录,必须具有对这个目录的执行权限。 

如果没有执行权限,虽然也能显示一些信息,但只能显示这个目录下的文件的文件名称属性,其它属性都是不可以查看的。

我们再来看看如果具有了执行权限我们访问一个目录时是怎样的:

拥有了执行权限之后,可以访问目录的全部文件属性。

粘滞位

什么是粘滞位,通过字面意思可能我们无法理解,我们通过一个例子为大家讲解:

比如我们创建了一个目录p1,这个目录的拥有者和所属组都是root,我们让这个目录的其它用户具有了写(w)的权限,并在该目录下创建了四个文件:

因为其它用户对该目录具有写权限,所以其它用户yjd,可以在该目录下创建文件:

既然其他用户对这个目录具有写权限,那么自然就可以删除这个目录下的文件:

我们发现,虽然被删除的文件在被删除时受w权限的保护,但是我们仍然可以删除掉,那么此时就存在了一种情况,用户1在具有对当前目录的写权限,所以就可以在当前目录下面添加文件,此时来了个用户2,那么此时他肯定也可以在当前目录下添加和删除文件,此时就会导致一种情况用户2在创建自己的文件时,可能会删除掉用户1的文件,那么此时用户1不就是白创建文件了吗?怎样解决这种问题呢?

此时我们便引入了粘滞位的概念,粘滞位就是为了使对某个目录具有写权限的其他用户在当前目录中创建文件时,禁止当前用户删除其他用户所创建的文件。对某一目录添加了粘滞位之后,在该目录下,只有文件拥有者和root可以删除文件,其他用户均不可以删除文件。

粘滞位指令 

粘滞位指令:chmod o+t 目录名

我们发现此时其他用户yjd对目录p1中的文件不能再删除。

在Linux中的/tmp目录是一个存储临时文件的目录,这个目录会存储其他用户所创建的大量的临时文件,同时为了防止这些文件被删除丢失,这个目录的权限中也用到了粘滞位。 

权限掩码

不知道大家有没有注意到,当我们在Linux中创建文件时的创建出来的文件的权限,我们可以在linux中创建文件验证:

普通用户创建:

我们称:

目录所有用户整体权限的八进制表示为:775

普通文件所有用户的整体权限的八进制表示为:664 

root用户创建:

我们称:

目录的所有用户的整体权限的八进制表示为:755

普通文件的所有用户的整体权限的八进制表示为:644 

为什么在普通用户和root用户中创建的文件和目录的权限是不相同的呢?

其实无论是创建的目录还是文件,它们都是有初始权限的,目录的初始权限是777普通文件的初始权限是666

那么为什么我们创建出来的目录和文件的初始权限不是777和666呢?

这就是因为了权限掩码的存在,权限掩码就是为了让目录和文件的权限成为用户所需要的权限,所设置的一套掩码,查看掩码的指令是:umask

普通用户的权限掩码为:0002

root用户的权限掩码为:0022

那么权限掩码究竟是怎样把文件和目录的默认权限变成用户想要的文件和目录权限的呢?

因为我们知道每个用户的每个权限都是由一个二进制位表示的,3个用户总共有9个权限,总共九个二进制位,权限掩码的第一位不用考虑,剩余的3位都是由3位二进制组成的八进制,所以总共也有9个二进制位,注意此时的运算方法:我们先将权限掩码的每一位按位取反,取反之后然后与目录或者文件的三个用户的所有权限的9个二进制位进行按位与,按位与得到的结果就是每个用户的每个权限的结果。

举个例子:因为目录的初始权限为777:二进制表示为 111111111

                         文件的初始权限为666:二进制表示为 110110110

对于普通用户权限掩码为0002,  除去第一位表示为000000010,按位取反为111111101。

目录初始权限按位与得到的二进制位为:111111101,转为八进制为:775

文件初始权限按位与得到的二进制位为:110110100,转为八进制为:664

对于root用户也是同理的。

   这便是为什么我们以普通用户和root用户在创建目录和文件时,创建出来的目录和文件的权限是我们看到的样子的原因。

以上便是权限相关所有的知识点了,内容比较多且比较复杂,对于某些指令大家可以下去多多练习。本期内容到此结束^_^              

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

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

相关文章

产品调研——AI平台

本文主要记录了对腾讯云-TIONE平台、华为云-ModelArt等主流AI平台的产品调研。 交互式建模 简单点说就是提供了带训练资源的云IDE,使用形态包括Notebook、VsCode等。 腾讯云-TI平台 TI平台将tensorflow、pytorch、spark环境等均集成到一个Notebook容器中&#xf…

【Java 集合】ArrayBlockingQueue

ArrayBlockingQueue, 顾名思义: 基于数组的阻塞队列, 位于 JUC (java.util.concurrent) 下, 是一个线程安全的集合, 其本身具备了 不支持 null 元素: 存入 null 元素会抛出异常固定容量: 在初始化时需要指定一个固定的容量大小。这意味着一旦队列达到最大容量,将不再…

人工智能原理课后习题(考试相关的)

文章目录 问答题知识表示一阶谓词逻辑表示法语义网络表示法 确定推理谓词公式永真和可满足性内容归结演绎推理 不确定推理主观贝叶斯可信度方法证据理论 搜索策略机器学习 问答题 什么是人工智能? 人工智能就是让机器看起来像人类表现出的智能水平一样 人工智能就是…

磁盘及文件系统(上)

这次博客我们将重点理解Ext2文件系统。 首先我们要理解什么是文件系统。 在之前我们一直理解的文件都是一个被打开的文件,而os为了能够管理这样的文件创建了struct_file这样的结构体对象在内核中描述被打开的文件,这个结构体对象中包含了被打开文件的基…

9、ble_mesh基础

node节点,不属于网络的设备称为未配置设备。未配置的设备无法发送或接收网格消息;但是,它会向 Provisioners 宣传其存在。 Provisioner供应,验证,邀请,加入网络成为节点。 一个节点有多个控制或开关&#x…

音视频学习(二十一)——rtmp收流(tcp方式)

前言 本文主要介绍rtmp协议收流流程,在linux上搭建rtmp服务器,通过自研的rtmp收流库发起取流请求,使用ffmpegqt实现视频流的解码与播放。 关于rtmp协议基础介绍可查看:https://blog.csdn.net/www_dong/article/details/13102607…

webpack学习-6.缓存

webpack学习-6.缓存 1.前言2.输出文件的文件名3. 提取引导模板4.模块标识符5.总结 1.前言 webpack 会在打包后生成可部署的 /dist 目录,并将打包后的内容放在此目录。一旦 /dist 目录中的内容部署到服务器上,客户端(通常是浏览器&#xff09…

一文搞懂系列——DBC数据库信号解析规则及案例

背景 最近在项目中,同事遇到了一个dbc数据库解析错误的问题:基于ekuiper 对can报文解析,发现实际输出结果与预期差距较大。当时他第一反应是ekuiper的解析规则有误,因此就没有跟踪下去了。因为之前我用过ekuiper的CAN报文解析功能…

采购oled屏幕,应注意什么

在采购OLED屏幕时,应注意以下几点: 规格和参数:了解OLED屏幕的规格和参数,包括尺寸、分辨率、亮度、对比度、响应时间等。确保所采购的屏幕符合项目的需求和预期效果。 品质和可靠性:选择具有可靠品质和稳定性的OLED屏…

Shell三剑客:sed(命令)二

一、插入命令:i(之前) [rootlocalhost ~]# sed -r 2i aaaaaaa passwd.txt root:x:0:0:root:/root:/bin/bash aaaaaaa bin:x:1:1:bin:/bin:/sbin/nologin[rootlocalhost ~]# sed -r 2i aaaaaaa\ > bbb\ > ccc passwd.txt root:x:0:0:r…

Stable-Diffusion|从图片反推prompt的工具:Tagger(五)

stable-diffusion-webui-wd14-tagger 前面几篇: Stable-Diffusion|window10安装GPU版本的 Stable-Diffusion-WebUI遇到的一些问题(一) 【Stable-Diffusion|入门怎么下载与使用civitai网站的模型(二)】 Stable-Diffusi…

【深度强化学习】确定性策略梯度算法 DDPG

前面讲到如 REINFORCE,Actor-Critic,TRPO,PPO 等算法,它们都是随机性策略梯度算法(Stochastic policy),在广泛的任务上表现良好,因为这类方法鼓励了算法探索,给出的策略是…