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.时间属性

(1)时间属性包含哪些?

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

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

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

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

(2)如何更新时间属性?

如果想要自己更新时间属性,可以考虑touch -m (name),这是修改Modify时间,但由于Modify是属性,修改属性也会修改Change的时间。另外还有touch -a (name)可以修改Access时间,同样Change时间也会修改。

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

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

相关文章

人工智能有助于解决 IT/OT 集成安全挑战

思科的一项研究表明,信息技术 (IT) 和运营技术 (OT) 融合所带来的安全问题可以通过人工智能 (AI) 解决,尽管该技术也可能被恶意行为者利用。 该报告由思科和 Sapio Research 联合发布,对 17 个国家的 1,000 名行业专业人士进行了调查&#x…

硬件(驱动开发)

一、OSC基本架构(片上系统) OSC(On-chip System Control,片上系统控制)基本架构通常涉及片上系统中的各个组件如何进行协调与控制,以实现高效的处理、通信和管理。OSC架构在现代微处理器和系统单芯片&…

华为HarmonyOS地图服务 3 - 如何开启和展示“我的位置”?

一. 场景介绍 本章节将向您介绍如何开启和展示“我的位置”功能,“我的位置”指的是进入地图后点击“我的位置”显示当前位置点的功能。效果如下: 二. 接口说明 “我的位置”功能主要由MapComponentController的方法实现,更多接口及使用方法…

rocky Linux 9.4系统配置zabbix监控MySQL主从复制状态与配置钉钉告警

MySQL主从复制原理: 1. 主从复制的基本概念 主服务器(Master):负责处理所有的写操作(INSERT、UPDATE、DELETE),并将这些操作记录到二进制日志(binary log)中。 从服务器…

计算机网络(月考一知识点)

文章目录 计算机网络背诵默写版计算机网络知识点(月考1版) 计算机网络背诵默写版 为我自己留个印记,本来荧光笔画的是没记住的,但是后面用紫色的,结果扫描的时候就看不见了。 计算机网络知识点(月考1版&a…

静态链表:实现、操作与性能优势【算法 16】

静态链表:实现、操作与性能优势 在算法和数据结构的探索中,链表作为一种基础且灵活的数据结构,广泛应用于各种场景。然而,在算法竞赛或需要高效内存管理的环境中,传统的动态链表可能会因为内存分配和释放的开销而影响性…

【H2O2|全栈】关于CSS(5)如何制作一个搜索网页的首页?

目录 CSS基础知识 前言 准备工作 简单网页的组成部分 案例 浏览器的窗口大小 划分主要部分 固定定位 头部导航(左侧) 头部导航(右侧) LOGO ​编辑搜索框 热搜标题 热搜内容 文字简介 资源 预告和回顾 后话 CSS…

Tomcat中BIO和NIO的区别(Tomcat)

BIO Tomcat中BIO的模型和理论很简单,例图如下 1.Acceptor线程死循环阻塞接收客户端的打过来的socket请求 2.接收到请求之后打包成一个SocketProcessor(Runnable),扔到线程池中读取/写入数据 参数配置 1.Acceptor默认线程是1&#…

网络丢包定位记录(二)

网卡驱动丢包 查看:ifconfig eth1/eth0 等接口 1.RX errors: 表示总的收包的错误数量,还包括too-long-frames错误,Ring Buffer 溢出错误,crc 校验错误,帧同步错误,fifo overruns 以及 missed pkg 等等。 …

Cursor免费 GPT-4 IDE 工具的保姆级使用教程

Cursor免费 GPT-4 IDE 工具的保姆级使用教程 简介 Cursor 是一款基于人工智能技术的代码生成工具。 它利用先进的自然语言处理和深度学习算法,可根据用户的输入或需求,自动生成高质量代码。 不管是初学者,还是资深开发者,Curs…

uniapp 微信小程序 订阅消息功能实现

该网址 https://api.weixin.qq.com 上线后不可访问,调用该网址操作需在后端( 重要! 重要! 重要!) 1.首先拿到的三个码 //微信公众平台 //https://mp.weixin.qq.com const wxappid "管理-开发管理-A…

Java语言程序设计基础篇_编程练习题***18.32 (游戏:骑士的旅途)

目录 题目:***18.32 (游戏:骑士的旅途) 习题思路 代码示例 输出结果 题目:***18.32 (游戏:骑士的旅途) 骑士的旅途是一个古老的谜题,它的目的是使骑从棋盘上的任意一个正方 形开始移动,经过其他的每个正方形一次,如…

Web_php_include 攻防世界

<?php show_source(__FILE__); echo $_GET[hello]; $page$_GET[page]; while (strstr($page, "php://")) { 以是否检测到php://为判断执行循环$pagestr_replace("php://", "", $page);//传入空值&#xff0c;替换 } include($page); ?&g…

单样本Cellchat(V2)细胞通讯分析学习和整理

细胞通讯分析是一种研究不同细胞类型之间如何通过信号分子&#xff08;如配体和受体&#xff09;进行相互交流和调控的分析方法。它在揭示细胞间相互作用的机制&#xff0c;理解组织和器官如何协调运作方面具有重要意义。 细胞通讯分析的主要内容如下&#xff1a; 配体-受体相…

连续数组问题

目录 一题目&#xff1a; 二思路&#xff1a; 三代码&#xff1a; 一题目&#xff1a; leetcode链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 二思路&#xff1a; 思路&#xff1a;前缀和&#xff08;第二种&#xff09;化0为-1hash&#xff1a; 这样可以把…

【深入学习Redis丨第六篇】Redis哨兵模式与操作详解

〇、前言 哨兵是一个分布式系统&#xff0c;你可以在一个架构中运行多个哨兵进程&#xff0c;这些进程使用流言协议来接收关于Master主服务器是否下线的信息&#xff0c;并使用投票协议来决定是否执行自动故障迁移&#xff0c;以及选择哪个Slave作为新的Master。 文章目录 〇、…

五种数据库特性对比(Redis/Mysql/SQLite/ES/MongoDB)

做后端开发的程序员基本都要学会数据库的相关知识。 1、关系型数据 今天就着这段时间了解大模型的事需要牵扯到是我们接触最多的、也是入门后端必学的关系型数据库。在关系型数据库中&#xff0c;数据以表的形式进行组织和存储&#xff0c;每个表就像一个 Excel 表格&#xf…

如何写一个自动化Linux脚本去进行等保测试--引言

#我的师兄喜欢给我的休闲实习生活加活&#xff0c;说是让我在实习期间写一个自动化脚本去进行等保测试。呵呵哒。 怎么办呢&#xff0c;师兄的指令得完成&#xff0c;师兄说让我使用Python完成任务。 设想如下&#xff1a; 1、将Linux指令嵌入到python脚本中 2、调试跑通 …

基于微信小程序的宠物寄养平台的设计与实现+ssm(lw+演示+源码+运行)

摘 要 随着科技和网络的进步&#xff0c;微信小程序技术与网络、生活贴和的更加紧密。需要依靠客户端的单机系统逐渐被淘汰&#xff0c;利用互联网可以处理大量数据的新型系统如雨后春笋般迅速发展起来。这类系统和信息化时代的同步发展对传统的办公管理方式造成了很大的压力。…

Linux入门学习:Git

文章目录 1. 创建仓库2. 仓库克隆3. 上传文件4. 相关问题4.1 git进程阻塞4.2 git log4.3 上传的三个步骤在做什么4.4 配置邮箱/用户名 本文介绍如何在Linux操作系统下简单使用git&#xff0c;对自己的代码进行云端保存。 1. 创建仓库 &#x1f539;这里演示gitee的仓库创建。…