【Linux】权限的理解和使用

在这里插入图片描述

👦个人主页:Weraphael
✍🏻作者简介:目前正在学习c++和算法
✈️专栏:Linux
🐋 希望大家多多支持,咱一起进步!😁
如果文章有啥瑕疵,希望大佬指点一二
如果文章对你有帮助的话
欢迎 评论💬 点赞👍🏻 收藏 📂 加关注😍


目录

  • 一、Linux下用户的分类
      • 1.1 用户切换
  • 二、用户和用户组
      • 2.1 文件拥有者(概念)
      • 2.2 用户组(概念)
      • 2.3 其他人(概念)
  • 三、文件权限
      • 3.1 文件属性
      • 3.2 修改文件权限
        • 3.2.1 数字类型修改文件权限
        • 3.2.2 符号类型修改文件权限
      • 3.3 修改文件所属组
      • 3.4 修改文件拥有者
      • 3.5 默认权限
        • 3.5.1 权限掩码
  • 四、目录权限
  • 五、粘滞位
      • 5.1 引入
      • 5.2 如何设置粘滞位

一、Linux下用户的分类

Linux下有两种用户:超级用户(root)、普通用户

  • 超级用户:基本不权限的约束。命令提示符是#
  • 普通用户:受权限的约束。命令提示符是$

1.1 用户切换

  • 普通用户 ->超级用户

【命令】 su / su -
【说明】

  1. 输入的密码是超级用户的密码
  2. 退回普通用户exit or 热键Ctrl + d

在这里插入图片描述

  • 超级用户 -> 普通用户

【命令】 su 普通用户名
【说明】 不要密码,从这可以看出超级用户基本不权限的约束

在这里插入图片描述

  • 普通用户 -> 另一个用户

【命令】 su 另一个用户名
【说明】 密码需要输入另一个用户的密码

这里就不为大家演示了

  • 对某条指令提权(不用转化root

【命令】 sudo 某条指令
【说明】输入的是普通用户的密码

大家可能会有疑问,我们对指令进行提权,为什么输入的是普通用户的密码?

大家可以先在自己的命令行解释器输入sudo 随便一个指令,其实目前我们普通用户没办法执行sudo,因为系统默认不信任你。除非未来将普通用户添加到系统的信任名单里。由于目前知识有限,后期带领大家配置。

二、用户和用户组

2.1 文件拥有者(概念)

初次接触Linux的同学会觉得很怪异,为什么Linux会有这么多用户,还分什么用户组?

其实这个“用户与用户组”的功能可是相当健全并且好用的一个安全防护措施。这是因为Linux是一个多人多任务的系统,因此可能有很多人同时使用同一个服务器来进行开发,这就涉及到每个人的隐私权,有的人不喜欢把自己写的代码给别人看(因为自己写的代码时常会有bug,就像每个人的内裤一样,有漏洞就不喜欢给别人看),因此文件拥有者的角色就显得相当重要。

2.2 用户组(概念)

用户组是最有用的功能之一,就是当你在团队进行协同开发的时候。举例来说,假设你和你的舍友一起进入到腾讯实习。你在项目A组,而你的舍友在项目B组。这两个组的项目是王者荣耀,哪个组写的好就采用哪个组。假设某一天,你的老板要检查你们组的代码写的怎么样,但不能让项目B组看到你们组的文件内容,此时该如何是好?

因此,是不是可以将老板拉入你们组(用户组),这样老板能看到整个组的开发进度,而别的组看不到,很方便吧!

这样说可能还不容易理解。再举一个例子,假设有一家人,爸爸叫张三,家里有三兄弟,三个人都有自己的房间,并且拥有一个客厅。

  • 用户的意义:由于三兄弟都有自己各自的房间。所以他们不能闯入别人的房间窥视他人的隐私。
  • 用户组的概念:由于客厅是共用的,三兄弟可以在客厅做任何事情,因为大家都是一家人。

这样说大家应该有点了解了吧!张三家就是所谓的用户组,至于三兄弟就是用户,而这三个用户是在同一个用户组里。而三个用户虽然在同一个用户组内,但是有各自的私人空间,而设置用户组共享,则可让大家共同分享。

2.3 其他人(概念)

有一个叫李逵,它是三兄弟中张飞的同班同学,那么李逵就可以通过张飞进入张三的家,也可以通过张飞的同意进入他的房间。因此,李逵就是所谓的其他人(Others

因此,我们可以知道,在Linux里面,任何一个文件都具有用户(User)、所属组(Group)以及其他人(Other)三种身份,我们可以将以上的说明用下面的图来解释

在这里插入图片描述

不过,这里有一个特殊的人物要介绍,那就是神父。神父具有神力,它想干嘛就可以干嘛。不打哑谜了,这个人其实在Linux中担任root。所以要小心,这个root可是神父!

三、文件权限

3.1 文件属性

在上篇博客讲过,查看文件属性的指令是ls -al或者是ll

在这里插入图片描述

现在我们来拆分,以上字符串到底是什么意思

在这里插入图片描述

第一栏代表文件的类型和权限。这个地方最需要注意,仔细看的话,你应该可以发现这一栏其实有十个字符。

  • 第一个字符代表这个文件是目录或文件等。其中a.out的第一个字符是-,因此是文件。
    在这里插入图片描述

  • 接下来的字符中,以三个位一组,且均为[rwx]的三个参数的组合。其中,[r]代表可读、[w]代表可写、[x]代表可执行。要注意的是这三个权限的位置不会改变,如果没有权限,就会出现减号[-]而已。

在这里插入图片描述

  • 实际例子

以下我在普通用户wj中创建普通文件test.c并往里头写你好 testUser,并且文件的拥有者和所属组都是wj,那么另一个普通用户testUser能否看文件呢?

在这里插入图片描述

答案是可以的,首先testUser不是拥有者,也不是所属组,那就是其他人,而文件test.c对于其他人的权限只有r--,因此是可以读的,但是不能写

在这里插入图片描述

那么现在还有一个问题,超级用户root可以读和写吗?

在这里插入图片描述

通过以上实验我们发现,超级用户可以既可以查看、也可以修改(其实也可以执行,这里就不演示了)。那有的人就很奇怪,root既不是拥有者,也不是所属组,怎么可能可以做得到?

别忘了,超级用户root可是神父,具有神力,可以掌握一切!

3.2 修改文件权限

文权限修改使用的命令是chmod(change mode)。但是,权限的设置方法有两种,分别可以使用数字或者符号来进行权限修改。

3.2.1 数字类型修改文件权限

Linux文件的基本权限就只有9个,分别是拥有者(owner)、所属组(group)、其他人(others)三种身份各有自己的读(read)、写(write)、执行(execute)权限。假设现在有一个文件权限字符是[rwxrwxrwx],这9个权限是三个三个一组。其中,我们可以使用数字来代表各个权限,各权限的数组对照表如下:

r:4  (2^2)
w:2  (2^1)
x:1  (2^0)

每种身份(ownergroupothers)各自的三个权限(rwx)数字是需要累加的,例如当权限为[rwxrwx---],数字则是:

owner = rwx = 4 + 2 + 1 = 7
group = rwx = 4 + 2 + 1 = 7
others = --- = 0 + 0 + 0 = 0

所以等下我们设置权限时,该文件的权限数字就是770,修改权限的命令chmod的语法是:

chmod [权限数字] [文件或目录]

举个例子:假设现在有一个普通文件的权限是[rw-rw-r--],现在我要让每种身份的人都可以执行此文件[rwxrwxr-x],那么权限数字就是775

在这里插入图片描述

3.2.2 符号类型修改文件权限

因为九个权限分别是usergroupothers三种身份,那么我们就可以借ugo来代表三种身份的权限。此外,a则代表all,也就是全部人的身份。那么读写的权限就可以写成rwx。因此,符号类型修改文件权限的语法如下:

chmod [身份] [设置符号] [权限] [文件或目录]
// 身份选项:u、g、o
// 设置符号:+(加入)、-(移除)
// 权限:r、w、x

我们可以来实践一下,假设有一个文件test.txt的权限为[-rwx---r-x],那我现在我想让所属组和其他人都具有rwx权限,那么命令应该为chmod g+rwx,o+rwx test.txt

在这里插入图片描述

接下来我再假设所有人(包括拥有者)都不许对test.txt有读、写和可执行权限

在这里插入图片描述

3.3 修改文件所属组

修改文件拥有者的基本指令是chgrp(change group)。注意,要被修改的组名必须在/etc/group文件中存在才行

在这里插入图片描述

假现将text.txt文件的所属组改为tempuser(此用户我已经创建好了)

在这里插入图片描述

奇怪,为什么提示说“操作不被允许”?我们知道:你拿一个东西需要征得别人的允许,同样的,你给别人一个东西也需要征得别人的允许。因此,现在有一个暴力的方法,将自己提升为神父root,别人不要也得要

在这里插入图片描述

3.4 修改文件拥有者

修改文件拥有者的基本指令是chown(change owner),要注意的是,用户必须是已经存在系统中的账号,也就是在/etc/passwd这个文件中有记录的用户名称才能被修改

在这里插入图片描述
假设你已经是root身份了,现将text.txt文件的拥有者改为tempuser(此用户我已经创建好了)

在这里插入图片描述

那么现在我要将拥有者和所属组全部改回wj,又该怎么做呢?难道要分别使用两个指令来更改?会不会麻烦了些?

在这里插入图片描述

3.5 默认权限

无论是创建文件还是创建目录,系统都会分配默认权限

首先给出结论

  • 系统默认给普通文件的起始权限是666,即[rw-rw-rw-]
  • 默认给目录的起始权限是777,即[rwxrwxrwx]

在这里插入图片描述

奇怪?那么为什么创建出来的默认权限和我们说的不一样?

3.5.1 权限掩码

这是因为Linux存在权限掩码umask

在这里插入图片描述

CentOS 7.6中,默认的权限掩码为0002,平台不同,权限掩码可能存在差异

  • 需要注意的是:umask的数字指的是该默认值需要减掉的权限

什么意思呢?以文件为例:在上面我们说过了,系统默认给普通文件的起始权限是666,转换为二进制1010011010,默认的权限掩码转换为二进制0000000010。由于umask的数字指的是该默认值需要减掉的权限,因此666的二进制从右向左的第二个1需要去掉,因此最后的结果是110110100,转换为权限rw-rw-r--,这下刚刚好也解释完了

但是默认权限的计算方式是以下这样的:

  • 默认权限的计算方式:默认权限 = 起始权限 & (~umask)

在这里插入图片描述

目录默认权限的计算也是一样的这里就不为大家演示了

四、目录权限

目录的基础权限也是:r(读) w(写) x(可执行)

  • r:是否允许查看该目录中的内容

在这里插入图片描述

  • w:是否允许当前目录进行创建、更改、删除

在这里插入图片描述

  • x:是否允许用户进入当前目录

在这里插入图片描述

五、粘滞位

5.1 引入

大家想想:有多个人在一个共享目录里分享文件,那么里头的人是否能删除你的文件呢?

在这里插入图片描述

竟然可以删除!!那这就很可怕了。

假设一个公司有一个共享目录,供多个员工存储和共享文件。如果没有粘滞位,某个员工误删了其他员工的文件,那么对于其他员工来说,他们将无法恢复自己的文件,也无法确定是谁删除了自己的文件,这会导致很大的不便和困扰。

因此才有了粘滞位:一般是给共享目录设置,当一个目录被设置粘滞位了后,只有文件所有者和超级用户root才能够删除或重命名该目录下的文件,其他用户则不能进行这些操作。

5.2 如何设置粘滞位

使用chmod命令可以设置和取消目录的粘滞位。对于一个目录,设置粘滞位的命令为:

chmod +t [共享目录]

取消粘滞位的命令为:

chmod -t [共享目录]

在这里插入图片描述

以后在这种共享目录中,别的用户就无法删除里头的文件。

在这里插入图片描述

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

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

相关文章

智能座舱架构与芯片- (15) 测试篇 下

三、持续集成与交付 3.1 自动化编译框架 在智能座舱软件中,分为上层应用软件和底层软件。有些上层应用软件是与指令集平台无关的,例如Java应用程序等,它们对所运行的CPU平台没有依赖性,可以很好的适配当前平台进行执行。而在底层…

微服务学习|初识Docker、使用Docker、自定义镜像、DockerCompose、Docker镜像仓库

初识Docker 项目部署的问题 大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题 依赖关系复杂,容易出现兼容性问题 开发、测试、生产环境有差异 Docker如何解决依赖的兼容问题的? 将应用的Libs (函数库)、Deps (依赖)配置与应用…

缓存雪崩、击穿、穿透及解决方案_保证缓存和数据库一致性

文章目录 缓存雪崩、击穿、穿透1.缓存雪崩造成缓存雪崩解决缓存雪崩 2. 缓存击穿造成缓存击穿解决缓存击穿 3.缓存穿透造成缓存穿透解决缓存穿透 更新数据时,如何保证数据库和缓存的一致性?1. 先更新数据库?先更新缓存?解决方案 2…

虚拟机里为什么桥接模式可以广播,NAT模式不能广播?

虚拟机里为什么桥接模式可以广播,NAT模式不能广播? 我们在虚拟机里做调试的时候,进场会遇到NAT广播包发不出,而桥接模式可以。下面是找到的资料。 在虚拟机网络配置中,桥接模式(Bridged mode)允…

Android组件化搭建学习

什么是组件化? 为什么要用组件化?在项目的开发过程中,随着开发人员的增多及功能的增加,如果提前没有使用合理的开发架构,那么代码会越来臃肿,功能间代码耦合也会越来越严重,这时候为了保证项目…

Redisson分布式锁源码解析

一、使用Redisson步骤 Redisson各个锁基本所用Redisson各个锁基本所用Redisson各个锁基本所用 二、源码解析 lock锁 1) 基本思想: lock有两种方法 一种是空参 另一种是带参 * 空参方法:会默认调用看门狗的过期时间30*1000&…

JMeter压测常见面试问题

1、JMeter可以模拟哪些类型的负载? JMeter可以模拟各种类型的负载,包括但不限于Web应用程序、API、数据库、FTP、SMTP、JMS、SOAP / RESTful Web服务等。这使得JMeter成为一个功能强大且灵活的压力测试工具。 2、如何配置JMeter来进行分布式压力测试&a…

防爆智能安全帽、防爆手持终端,防爆智能矿灯守护安全,在煤矿安全生产远程可视化监管中的应用

煤矿安全新守护:如何通过防爆智能装备实现远程可视化监管 煤矿是国民经济的重要支柱产业,但长期以来,安全生产事故的频发一直是困扰煤矿行业发展的严峻问题。安全生产事故不仅危及矿工的生命安全,也对企业和地方经济造成了重大的…

驯服大数据的超强利器——PySpark数据处理引擎

你是否曾经为了处理大规模数据而烦恼?是否曾经为了解决日常的数据科学挑战而彻夜难眠?现在,Spark数据处理引擎正在向你敞开大门。这是一个惊人的分析工厂,输入原始数据,输出洞察。 PySpark,作为Spark的核心…

壹基金宣传进瑞金河背街社区 安全家园项目防灾减灾深入人心

11月16日下午,瑞金赋能公益、蓝天救援队等联合象湖镇河背街社区开展家庭安全计划社区活动包挑战赛活动暨壹基金安全家园项目防灾减灾宣传社区行活动。活动得到了救助儿童会北京代表处、壹基金、艾特公益、益心益意公益的指导,得到了阿里巴巴公益平台广大…

服务器 jupyter 文件名乱码问题

对于本台电脑,autodl服务器,上传中文文件时,从压缩包名到压缩包里的文件名先后会出现中文乱码的问题。 Xftp 首先是通过Xftp传输压缩包到Autodl服务器: 1、打开Xftp,进入软件主界面,点击右上角【文件】菜…

C++设计模式之工厂模式(上)——简单工厂模式

工厂模式 概述简单工厂模式介绍示例示例使用运行结果缺点 概述 工厂模式属于一种创建型设计模式。其可以分为简单工厂模式,工厂模式和抽象工厂模式。工厂模式分为上、中、下三篇,本篇主要介绍简单工厂模式。 简单工厂模式 介绍 简单工厂模式可以理解…

竞赛选题 题目: 基于深度学习的疲劳驾驶检测 深度学习

文章目录 0 前言1 课题背景2 实现目标3 当前市面上疲劳驾驶检测的方法4 相关数据集5 基于头部姿态的驾驶疲劳检测5.1 如何确定疲劳状态5.2 算法步骤5.3 打瞌睡判断 6 基于CNN与SVM的疲劳检测方法6.1 网络结构6.2 疲劳图像分类训练6.3 训练结果 7 最后 0 前言 🔥 优…

二百零七、Flume——Flume实时采集5分钟频率的Kafka数据直接写入ODS层表的HDFS文件路径下

一、目的 在离线数仓中,需要用Flume去采集Kafka中的数据,然后写入HDFS中。 由于每种数据类型的频率、数据大小、数据规模不同,因此每种数据的采集需要不同的Flume配置文件。玩了几天Flume,感觉Flume的使用难点就是配置文件 二、…

【电路笔记】-星三角变换(Star-Delta Transformation)

星三角变换(Star-Delta Transformation) 文章目录 星三角变换(Star-Delta Transformation)1、概述1.1 单相配置1.2 多相配置 2、三相连接2.1 Y配置2.2 Δ配置 3、Y-Δ 和 Δ-Y 变换3.1 Y-Δ变换3.2 Δ-Y变换3.3 应用 4、总结 本文…

2023年DevOps国际峰会暨BizDevOps企业峰会(DOIS北京站)-核心PPT资料下载

一、峰会简介 在数字化转型的大背景下,企业选择实践 DevOps 来提升 IT 效能成为常态,BizDevOps 作为企业自身数字化变革的重要主题之一,需要全行业共同努力促进繁荣和发展。从 DevOps 到 BizDevOps,业务与技术如何融合&#xff1…

大模型的交互能力

摘要: 基础大模型显示出明显的潜力,可以改变AI系统的开发人员和用户体验:基础模型降低了原型设计和构建AI应用程序的难度阈值,因为它们在适应方面的样本效率,并提高了新用户交互的上限,因为它们的多模式和生…

Flink 替换 Logstash 解决日志收集丢失问题

在某客户日志数据迁移到火山引擎使用 ELK 生态的案例中,由于客户反馈之前 Logstash 经常发生数据丢失和收集性能较差的使用痛点,我们尝试使用 Flink 替代了传统的 Logstash 来作为日志数据解析、转换以及写入 ElasticSearch 的组件,得到了该客…

为何越来越多的程序员纷纷转行网络安全?

目前,我国IT行业的人才结构不断升级,公司对程序员的要求越来越高,出现了大量的裁员现象,导致很多的程序员纷纷想转行的想法。 可能对于早期的程序员而言,学好编程语言就能找到比较好的工作。而现在伴随着互联网的不断发…

十一 动手学深度学习v2计算机视觉 ——微调

一、网络架构 一个神经网络一般可以分成两块 特征抽取,将原始像素变成容易线性分割的特征。线性分类器来做分类。 二、训练 是一个目标数据集上的正常训练任务, 但使用更强的正则化 使用更小的学习率使用更少的数据迭代 源数据集远远复杂于目标数据集…