【Linux之权限】理论篇

前言

Linux的权限是我们学习Linux初期非常重要的基础知识,接下来我将通过一个系列【Linux之权限】,共三篇文章,对此进行较为全面和详细的解说。

sudo

情况:如果我们不是超级管理员,但是想执行一个权限级别比较高的指令,比如我们想以超级管理员的身份来创建一个文件,那么就:

sudo touch root.txt

然后会要求我们输入密码,注意这里要求我们输入的并不是root的密码,而是当前用户的密码。

可以看到,这里创建的文件的身份是属于root的。

所以

sudo是用来进行指令的短暂提权的。

那么,什么时候我们会有这种需求呢?

比如安装软件,我们之前用yum,本质是把自己对应的指令写入/usr/bin这样的目录下。

通过ls -ld /usr/bin我们可以看到的是:

这个文件是属于root的。

(普通用户时)所以不允许cp my.txt /usr/bin,所以我们也就没法安装。

所以我们就可以使用sudo来进行提权,sudo cp my.txt /usr/bin

所以当我们往一些不属于我们的目录里去安装、拷贝、删除、增加都需要sudo提权。

其实在linux中,我们安装的所有程序只安装了一份,只不过安装的这一份通常允许大家使用,比如ls,普通用户和root都能使用。

一般指令都是普通用户也能用,但是像adduser这样的,普通用户肯定用不了。

人人都是root?

有一个疑问是,sudo时我们输入当前用户密码而非root密码,这难道说明人人都是root吗?

但其实,如果现在我们真的sudo ls,会发现输完密码后就报错了:

其实linux系统会提供一个类似白名单的东西。

ls /rtc/sudoers:

ll /etc/sudoers:

可以看到 这个文件的拥有者是root,也只有root有资格去修改这个文件。

就算我们vim /etc/sudoers

可以看到是不允许修改的。

也就是说需要修改这个配置文件,我们才能让自己这个用户能使用sudo。

要修改这个配置文件,我们首先得是超级管理员。

但是这里我们先不轻易修改这个配置文件。(以后在学到vim的使用的时候再说)

权限

是什么?

权限本质:能或不能做什么事情

为什么?

1.控制用户的行为,防止错误的发生。

2.理解

权限 = 角色+目标属性

  • 首先,权限限制的是“人”(是谁不重要,重要的是身份)

    • 角色一般有三种:拥有者、所属组、other。

    • (ls -l)

      我们可以看到在这只有两格,但是角色有三种,这是因为other不需要特意记录下来。为什么?因为我们拿一个身份去对照这行信息里的拥有者和所属组,如果既不是拥有者,也不是所属组,那就只能是other了(而且other太多了记不完)。

    • 什么是所属组?

      很多都是自成一组。

      但它存在的意义是什么呢?

      假设只有拥有者和other两种身份是有问题的,比如要把自己拥有的代码公开给组长看,但是因为只有拥有者和other两种身份,把other放开后,不仅组长,其他不该看到的人也会能看到这份代码。(如果公司采用的“赛马制”,竞争的组也能看到自己组的代码)

      • 所以所属组的存在就是为了进行更精细化的管理。
  • 其次,权限要求目标必须具备对应的属性(比如文件本身不具备某种属性,也就谁都没有权限)

    • 文件一般有三种属性:读、写、执行。也就是r、w、x。

ll显式出来的信息中的第一行代表的是文件类型。-是普通类型、d是目录……

还剩下9个字符,3个位一组。

第一组对应的是拥有者权限位。

第二组对应的是所属组权限位。

第三组对应的是other权限位。

(以第一组为例)

三个字符分别代表读、写、执行权限。如果拥有者可以读可以写可以执行,那第一组就是rwx;如果不能读不能写不能执行那就是—,以此类推。

比如现在如果我们要描述my.txt这个文件的权限是什么:

该文件拥有者是whb,拥有者权限是对这个文件可以读可以写但是不能执行;所属组是whb,所属组权限是对这个文件可以读可以写但是不能执行;other的权限是只能读不能写不能执行。

=_=
那么,本文到此结束,在下篇中,我们会学习具体的指令来操作权限,并进一步讲解权限的重点内容。

在这里插入图片描述

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

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

相关文章

[C++] 智能指针

文章目录 智能指针的使用原因及场景分析为什么需要智能指针?异常抛出导致的资源泄漏问题分析 智能指针与RAIIC常用智能指针 使用智能指针优化代码优化后的代码优化点分析 析构函数中的异常问题解决方法 RAII 和智能指针的设计思路详解什么是 RAII?RAII 的…

spark性能优化调优指导性文件

1.让我们看一下前面的核心参数设置: num-executors10||20,executor-cores1||2,executor-memory10||20,driver-memory20,spark.default.parallelism64 假设我们的火花队列资源如下: 内存1T,内…

视频流媒体播放器EasyPlayer.js RTSP播放器视频颜色变灰色/渲染发绿的原因分析

EasyPlayer.js RTSP播放器属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,无须安装任何插件,起播快、延迟低、兼容性强,使用非常便捷。 EasyPlayer.js播放器不仅支持H.264与H.265视频编码格式&#xff0…

零售项目管理的核心问题:如何让协作更高效?

在零售行业,团队协作的效率直接影响到市场反应速度和客户满意度。商品的上下架、库存管理、促销活动的策划与执行、跨部门的沟通与协作……每一个环节都需要精准的协调。而在这些纷繁复杂的任务中,项目管理软件正成为零售行业的关键工具,帮助…

用appinventor制作艾宾浩斯遗忘曲线app

(呕心沥血 仅供参考) 测试效果演示 用appinventor制作课本记背应用程序(基于遗忘曲线设计) 目录 效果演示 项目重难点 总体设计 系统功能模块设计 总体结构如下图所示: 功能模块 详细设计与实现 登录界面 界…

【设计模式】行为型模式(三):责任链模式、状态模式

行为型模式(三):责任链模式、状态模式 5.责任链模式(Chain of Responsibility)5.1 通俗易懂的解释5.2 具体步骤5.3 代码示例5.3.1 处理者接口5.3.2 具体处理者5.3.3 测试类5.3.4 输出 5.4 总结 6.状态模式(…

CC3学习记录

🌸 CC3 之前学习到的cc1和cc6都是通过Runtime进行命令执行的,如果Runtime被加入黑名单的话,整个链子也就失效了。而cc3则是通过动态类加载机制进行任意代码执行的。 🌸 版本限制 JDK版本:8u65 Commons-Collections…

flutter字体大小切换案例 小字体,标准字体,大字体,超大字体案例

flutter字体大小切换案例 小字体&#xff0c;标准字体&#xff0c;大字体&#xff0c;超大字体案例 Android iOS设备带有选择记录 我的flutter项目版本 environment: sdk: ‘>3.4.4 <4.0.0’ 图片案例 pubspec.yaml 添加依赖 # 屏幕尺寸适配 https://github.com/OpenF…

设计模式(四)装饰器模式与命令模式

一、装饰器模式 1、意图 动态增加功能&#xff0c;相比于继承更加灵活 2、类图 Component(VisualComponent)&#xff1a;定义一个对象接口&#xff0c;可以给这些对象动态地添加职责。ConcreteComponent(TextView)&#xff1a;定义一个对象&#xff0c;可以给这个对象添加一…

django入门【05】模型介绍(二)——字段选项

文章目录 1、null 和 blank示例说明⭐ null 和 blank 结合使用的几种情况总结&#xff1a; 2、choices**choices 在 Django 中有以下几种形式&#xff1a;**&#xff08;1&#xff09; **简单的列表或元组形式**&#xff08;2&#xff09; **字典映射形式**&#xff08;3&#…

C++清除所有输出【DEV-C++】所有编辑器通用 | 算法基础NO.1

各位小伙伴们&#xff0c;上一期的保留小数位数教学够用一辈子&#xff0c;有不错的点赞量&#xff0c;可我连一个粉丝铁粉都没有&#xff0c;你愿意做我的第一个铁粉吗&#xff1f;OK废话不多说&#xff0c;开始&#xff01; 温故与知心 可能你也学过&#xff0c;且是工作者…

【提高篇】3.3 GPIO(三,工作模式详解 上)

目录 一,工作模式介绍 二,输入浮空 2.1 输入浮空简介 2.2 输入浮空特点 2.3 按键检测示例 2.4 高阻态 三,输入上拉 3.1 输入上拉简介 3.2 输入上拉的特点 3.3 按键检测示例 四,输入下拉 4.1 输入下拉简介 4.2 输入下拉特点 4.3 按键检测示例 一,工作模式介绍…

Thinkphp6视图介绍

一.MVC MVC 软件系统分为三个基本部分&#xff1a;模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和控制器&#xff08;Controller&#xff09; ThinkPHP6 是一个典型的 MVC 架构 控制器—控制器&#xff0c;用于将用户请求转发给相应的Model进行处理&a…

C++(Qt)软件调试---内存泄漏分析工具MTuner (25)

C(Qt)软件调试—内存泄漏分析工具MTuner &#xff08;25&#xff09; 文章目录 C(Qt)软件调试---内存泄漏分析工具MTuner &#xff08;25&#xff09;[toc]1、概述&#x1f41c;2、下载MTuner&#x1fab2;3、使用MTuner分析qt程序内存泄漏&#x1f9a7;4、相关地址&#x1f41…

QT_CONFIG宏使用

时常在Qt代码中看到QT_CONFIG宏&#xff0c;之前以为和#define、DEFINES 差不多&#xff0c;看了定义才发现不是那么回事&#xff0c;定义如下&#xff1a; 看注释就知道了QT_CONFIG宏&#xff0c;其实是&#xff1a;实现了一个在编译时期安全检查&#xff0c;检查指定的Qt特性…

Redis下载历史版本

Linux版本&#xff1a; https://download.redis.io/releases/ Windows版本&#xff1a; https://github.com/tporadowski/redis/releases Linux Redis对应gcc版本

8 软件项目管理

软件项目管理 1、软件项目管理概念1.1 软件项目管理内容1.2 软件项目管理的4P要素人员产品过程项目 2、软件项目度量2.1 软件项目度量定义及度量方法2.2 面对规模的度量2.3 面对功能的度量UFC相关的五类组件14个复杂性调节因素 F i F_i Fi​一个功能点开发代码行数 2.4 软件估算…

游戏引擎学习第12天

视频参考:https://www.bilibili.com/video/BV1yom9YnEWY 这节没讲什么东西&#xff0c;主要是改了一下音频的代码 后面有介绍一些alloc 和malloc,VirtualAlloc 的东西 _alloca 函数&#xff08;或 alloca&#xff09;分配的是栈内存&#xff0c;它的特点是&#xff1a; 生命周…

如何保证Redis与MySQL双写一致性

什么是双写一致性问题&#xff1f; 双写一致性主要指在一个数据同时存在于缓存&#xff08;如Redis&#xff09;和持久化存储&#xff08;如MySQL&#xff09;的情况下&#xff0c;任何一方的数据更新都必须确保另一方数据的同步更新&#xff0c;以保持双方数据的一致状态。这一…

STM32设计学生宿舍监测控制系统

目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 电路图采用Altium Designer进行设计&#xff1a; 三、实物设计图 四、程序源代码设计 五、获取资料内容 前言 随着科技的飞速发展和智能化时代的到来&#xff0c;学生宿舍的安全、舒适…