Linux相关概念和重要知识点(5)(权限的修改、时间属性)

1.权限的修改

(1)提权行为

普通用户是会受到权限的限制,但root账户无视一切权限限制,因此当我们要获取更高的权限,有一种办法就是将自己变成root或者短暂拥有和root一样的权力。

普通用户 -> root :su - + 回车 + root的登录密码。su可以切换账户,对于普通用户而言,你需要知道对方的密码,但root可以随便su,即进入任何账户而无需对方的密码。

root用户的命令行标识是#,普通用户是$

除了直接切换用户,我们还可以使用sudo + 指令,意思是在当前用户以root身份执行该指令。当前用户如果要使用这个功能,我们需要先把该用户加到白名单中。

使用root账户进入/etc/sudoers文件,添加光标所在行,一定要和上面root那一行保持格式一致,vim可用yy+p来操作

因为sudoers禁止修改,所以我们只能使用root加wq!强制保存来突破权限。

添加之后我们就可以在自己的普通账户使用sudo了,sudo之后我们需要输入自己账户的密码(注意是自己的,而不是root账户的密码),这也是为什么要添加白名单。在合作时,我们将信任的人添加到白名单中,之后他们就可以使用root权限来短暂处理一些需要高权限的事。如果后续出了问题,我们也可以用白名单迅速找到对应的人,所以输自己的密码而不是root密码,安全性也有保障。

(2)拥有组 user、所属组 group、other

①为什么有这三个组?

一个文件或目录对不同人来说权限是不一样的,也即不同人在同一个地方身份不同。在Linux中划分了三个组,创建文件的用户自动变成该文件的拥有组和所属组,其余用户都是other。设计拥有组和所属组的用处在于权限更细粒度的管理,我们可以修改所属组给另一个我们信任的人,这就能保证所属组和other做出区分。Linux中我们能对最多能对两个用户进行精确权限管理(拥有组和所属组),其余的other共享一套权限。

②身份认定

当我们刚开始创建文件时,创建文件的用户自动变成该文件的拥有组和所属组,那么用户可以既是拥有组也是所属组吗?就像一个人在家里可以是母亲也可以是妻子?答案是否定的。

Linux中身份认定是唯一的,我们不能既是又是。认定顺序是拥有组->所属组->other,只要有其一匹配,身份不再向后检验。这就意味着如果拥有组和所属组都是某个普通用户,但所属组的权限更大,最后这个普通用户也只有前者拥有组的权限

③权限识别

第一个明确是目录还是文件,从第二个开始依次表示user、group、other权限

(3)权限修改

权限 = 角色 + 身份,你可以将su和sudo理解为修改自己的角色,su切换用户,sudo则是用root的权限来执行指令。我们还可以修改文件的属性,即修改当前用户在文件那里的身份。

①chmod(修改各个组的权限)

这是修改三个组别拥有的权限,只有拥有组和root有资格执行这条指令

用这条指令,我们可以随意增加删除组别的权限,注意的是有文件的x权限并不意味着一定能执行,它首先得是可执行文件

修改权限的方式是chmod + (组别) (权限调整) 文件名,其中u、g、o是拥有组、所属组、other的缩写,a(all)代表所有组别。组别可以写ug,权限可以写rw,表示拥有组、所属组同时进行rw权限的修改,不同组进行不同权限修改之间用,逗号间隔

还有一种二进制->八进制表示权限的修改。先使用二进制表示某个组的权限:拥有该权限为1,没有为0,三位数就能表示所有可能,如111代表rwx,000表示---,110表示为rw-,随后将这些数字转为八进制,111->7,000->0,110->6。每个组别都这样处理,最后按拥有组、所属组、other排列表示三个组的权限,如644、777等。

每一种权限组合表示的八进制都是唯一的,3个权限2种状态,共8种状态,对应0~7刚好。

②chown(修改拥有组、所属组的用户) 、chgrp(修改所属组的用户)

只有root能执行这些指令,所以普通用户必须sudo。因为我们修改拥有组、所属组的用户本质是直接将该文件交给别人,和chmod这种单一修改身份不一样,交给别人某样东西要经过它的同意,所以只有靠root强制交给它。chown、chgrp交给自己不会被拦截,可行但没意义,只要改了拥有组和所属组的用户必定被拦截。

注意chown、chgrp和是否有目录修改权限没关系

chown能同时修改拥有组和所属组,chown (新的拥有组,没有可不写):(新的所属组,没有可直接不写冒号) 文件名。

注意如果要修改所属组但不修改拥有组一定要记得些冒号:,否则就修改到拥有组去了

chgrp只能修改所属组,功能上欠缺了一点,了解即可。

(4)权限掩码

当我们新建一个文件或者目录时,我们会发现默认权限是不一样的,并且为什么会是这种权限呢?能不能自定义默认权限呢?这就要引入权限掩码了

我们使用八进制描述三个组的属性,普通文件创建时默认为664,目录为775,之所以默认权限是这样,依赖umask权限编码。目录的起始权限是777(x允许进入目录),普通文件的起始权限是666(普通文件不可执行),但最终权限的二进制表示 = 转为9位二进制的起始权限 &(~权限掩码的二进制形式),如何简单理解呢?3位权限掩码展开成二进制有9位,如002会展为000 000 010。取反之后我们发现为111 111 101(三三对应拥有组、所属组、other的3个权限)。根据与运算的规则,1 & 任何值,与上什么值,最后的结果就是什么值。0 & 任何值,无论与上什么值,最后的结果就是0。也就是说,002就是减掉other中和2对应的权限w,因此我们会发现最终权限表示中目录和文件的other都少了w权限。

因此,最终权限 = 起始权限 - umask权限掩码对应的权限,但最终权限掩码 != 起始权限掩码 - umask权限掩码对应的权限,一定要做好区分

用umask (num)修改权限掩码为154,根据154权限掩码规则,文件会在起始权限666上做减法。一位一位看:1会减掉x,这里看上去rw确实如此,但实际上新建文件本来就没有x,所以1是不做任何削减权限处理的;5会减掉rx,实际减掉的是r,x本来就没有;4会减掉r,实际减掉r,所以这就是为什么54处理后没有区别,多出来的1本来就没有,会被抛弃。因此,我们不能直接用起始权限掩码 - umask权限掩码得到权限,要逐个考虑,有的掩码是无用的

(5)粘滞位

当用户有目录的w权限时,就可以删除该目录下的所有文件而无需对文件本身有权限,这极为危险。当合作时,由于拥有组和所属组只能由两个用户当,大部分人都会是other,要保证共享目录编辑还必须开放目录中other的w权限,这就会导致一些误删的情况出现。

粘滞位就可以避免这个问题,chmod o+t (目录名)或chmod +t (目录名),之后有且仅有root、目录所有组、文件所有组才有资格删除、移动该文件(other和所属组都被限制)

2.时间属性

stat (name) 可查询任何文件和目录的属性信息(修改时间、大小、inode等),其中时间属性很值得注意。

文件和目录有三种时间属性,Access最近访问时间、Modify最近修改时间、Change最近被改变时间。其中Modify是指最近修改内容的时间,Change是指最近修改属性的时间(注意区分)。

当我们使用chmod时,属性被修改了,但内容没有被修改,于是只有Change被修改, 而Modify不会被修改。注意当我们修改内容时,虽然名义上只会修改Modify,但多数情况也会修改属性(大小属性等,只要修改内容很可能受到牵连)。

Access时间并不算准确,因为在运行一些程序时有的文件会多次重复访问,如果系统一直与硬盘进行交互,那么计算机的效率会大打折扣。所以现在Access时间修改策略一般是当积累一定次数才会刷新,我们平时不用多注意。

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

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

相关文章

C++QT医院专家门诊预约管理系统

目录 一、项目介绍 二、项目展示 三、源码获取 一、项目介绍 医院专家门诊预约管理系统 [要求] 该系统需创建和管理以下信息:1、门诊专家信息:专家姓名、编号、性别、年龄、职称、门诊科目、服务时间、门诊预约数据集等;2、门诊预约信息…

2024 研究生数学建模竞赛(E题)建模秘籍|高速公路应急车道紧急启用模型|文章代码思路大全

铛铛!小秘籍来咯! 小秘籍团队独辟蹊径,运用聚类分析,逻辑回归模型,决策树/规则,ARIMA等强大工具,构建了这一题的详细解答哦! 为大家量身打造创新解决方案。小秘籍团队,始…

Open3D 计算点云的曲率密度参数【2024最新版】

目录 一、算法原理1、曲率密度参数2、参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接,首发于:2024年9月21日。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的抄袭狗。 一、算法原理 1、曲率密度参数 对于点云数据集中任意一点 p i p_i

Python Selenium 自动化爬虫 + Charles Proxy 抓包

一、场景介绍 我们平常会遇到一些需要根据省、市、区查询信息的网站。 1、省市查询 比如这种,因为全国的省市比较多,手动查询工作量还是不小。 2、接口签名 有时候我们用python直接查询后台接口的话,会发现接口是加签名的。 而签名算法我…

vue3 TagInput 实现

效果 要实现类似于下面这种效果 大致原理 其实是很简单的,我们可以利用 element-plus 组件库里的 el-tag 组件来实现 这里我们可以将其抽离成一个公共的组件,那么现在有一个问题就是通讯问题 这里我们可以利用父子组件之间的通讯,利用 v-model 来实现,父组件传值,子组…

精密制造与质量控制:保障滚珠丝杆重载运行精度

滚珠丝杆作为精密机械传动领域的重要零部件,能够将旋转动力精准地转化为流畅的直线运动。在数控机床、精密制造及高度自动化生产线上扮演着不可或缺的角色。在应对温度波动、负载突变及严苛环境条件的考验中,都有很好的表现。那么,应该如何确…

Linux_openEuler_24.03部署Oracle 19c部署安装实测验证(无图形桌面-RPM模式)

前言: 近期对openeuler有点兴趣,顺带在做个开发数据仓项目,那就正好安装个环境做个调测,做个记录放上来做个备录给到大家参考。 openEuler 24.03 LTS:四大升级, 首个AI原生开源操作系统正式发布 openEuler …

2024华为杯研赛数学建模E题分析

2024华为杯数学建模E题分析如下,完整版本可查看最下方名片

U9多组织单据关连生单时的错误提示

开立采购退货单时,有以下的错误提示。从这段文字来看。生成【采购退货单】同时生成关联公司的【退回处理单】,检查退回处理单的单据类型是正常的。不明所以。系统商出来的错误提示一般是用来迷惑人的,不可尽信。 【未找到满足条件【上游推式…

Mybatis的XML实现方法

Mybatis的开发有两种方式: 1、注解 2、XML 使用Mybatis的注解方式,主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能,建议使用XML来配置映射语句,也就是将SQL语句写在XML配置文件中。 Mybatis的XML的实现需要以下…

最新版本TensorFlow训练模型TinyML部署到ESP32入门实操

最新版本TensorFlow训练模型TinyML入门实操 1.概述 这篇文章介绍微型嵌入式设备的机器学习TinyML,它们的特点就是将训练好的模型部署到单片机上运行。 2.TensorFlow深度学习原理 TensorFlow开源项目是由google研发的一个嵌入式机器学习工具,通过调用…

Compose动画

一、Compose动画种类和选择 1.1 选择动画API 1.采用SVG:AnimatedVectorDrawable 是否第三方动画框架:Lottie动画 2.是否需要永久播放:rememberInfiniteTransition 3.布局动画 在内容不同的多个可组合项之间切换 3.1 导航过渡动画&#…

154-钓鱼篇Offfice-CVE漏洞RLO隐藏压缩包释放免杀打包捆绑

#知识点: 1、文件名-RLO 伪装-后缀 2、压缩文件-自解压-运行 3、捆绑文件-打包加载-运行 4、Office 套件-漏洞钓鱼-CVE #文件后缀-钓鱼伪装-RLO cs生成一个exe后门 重命名为一个png反过来或者jpg反过来的名字 然后再g前面输入其他字符在g字符前面右键选择这个插入…

CUDA-事件计时方法cudaEventElapsedTime

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 实现原理 事件计时方法是CUDA编程中一种用于测量GPU内核执行时间的高效手段。其基本步骤包括: 创建事件:…

Python模拟鼠标轨迹[Python]

一.鼠标轨迹模拟简介 传统的鼠标轨迹模拟依赖于简单的数学模型,如直线或曲线路径。然而,这种方法难以捕捉到人类操作的复杂性和多样性。AI大模型的出现,能够通过深度学习技术,学习并模拟更自然的鼠标移动行为。 二.鼠标轨迹算法实…

echarts柱图

样式如下 关键代码 // html部分<div class"echarts-container" :id"echartDiv id"></div>// js部分 data() {return {myChart: null,xAxisData: [云南, 浙江, 山东, 广东, 四川, 河南, 广西, 河南, 广西],yAxisData: [{value: 230,num: {r…

超实用线程调度方法!

文章目录 前言一、实现思路二、实现实例三、实现效果 前言 你有想过这样一个问题吗&#xff1f;线程之间是如何调度的&#xff1f; 更具体点说是这样&#xff0c;有两个线程&#xff1a;线程A和线程B&#xff0c;线程B要先于线程A运行&#xff0c;或者是线程B运行了多次之后在…

2024年华为杯中国研究生数学建模竞赛F题保姆级教程思路分析

2024年中国研究生数学建模竞赛F题保姆级教程思路分析 F题题目&#xff1a;X射线脉冲星光子到达时间建模 本题目围绕脉冲星导航与X射线光子到达时间建模展开。脉冲星由于其自转稳定性和规律性&#xff0c;被认为是宇宙中精确的时钟&#xff0c;并可以用作航天器的定位和导航基…

Ubuntu 22.04 源码下载、编译

Kernel/BuildYourOwnKernel - Ubuntu Wikihttps://wiki.ubuntu.com/Kernel/BuildYourOwnKernel 一、查询当前系统内核版本 rootubuntu22:~# uname -r 5.15.0-118-generic 二、查询本地软件包数据库中的内核源码信息 rootubuntu22:~# apt search linux-source Sorting... Do…

使用Maven创建一个Java项目并在repository中使用

JDK环境&#xff1a;1.8.0_371 Maven环境 &#xff1a;Apache Maven 3.6.3 配置完成jdk和mvn后&#xff0c;进入到指定文件夹下执行如下语句&#xff1a; mvn archetype:generate -DgroupIdtop.chengrongyu -DartifactIdCyberSpace -DarchetypeArtifactIdmaven-archetype-quic…