【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…

GRE数学高频难记词(个人考前重点复习版)

numerator 分子 denominator 分母 mixed number 带分数 reduce 约分 reciprocal 倒数 consecutive integer 连续整数 terminal decimal 有限小数 repeating decimal 循环小数 ones/units 个位数 origin 原点 quadrant 象限 slope 斜率 intercept 截距 rise over run 上升运动 p…

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

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

用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.状态模式(…

Docker compose部署RocketMQ(单机版)

整个工具的代码都在Gitee或者Github地址内 gitee:solomon-parent: 这个项目主要是总结了工作上遇到的问题以及学习一些框架用于整合例如:rabbitMq、reids、Mqtt、S3协议的文件服务器、mongodb github:GitHub - ZeroNing/solomon-parent: 这个项目主要是…

Ubuntu20.4系统编译瑞芯微RK3568 SDK

Ubuntu20.4系统编译瑞芯微RK3568 SDK ubuntu20.4系统中编译SDK时,需要安装部分依赖。除了官方给出的依赖之外,要先安装如下依赖,否则会报错 sudo apt-get install libatk-bridge2.0-02.34.1-3 -y sudo apt-get install libgtk-3-dev -y完整…

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;且是工作者…

Android 中的 Zygote 和 Copy-on-Write 机制详解

在 Android 系统中&#xff0c;Zygote 是一个关键的进程&#xff0c;几乎所有的应用进程都是通过它 fork&#xff08;派生&#xff09;出来的。通过 Zygote 启动新进程的方式带来了显著的性能优势&#xff0c;这得益于 fork 操作和 Linux 中的 Copy-on-Write&#xff08;COW&am…

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

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

关于写React的一些反思和总结

这两个星期我都一直在写IT资产管理这个模块。关于这个模块&#xff0c;前端和后端都是我来处理&#xff0c;对于后端&#xff0c;我碰到了很多问题&#xff0c;但是很多问题都可以在比较短的时间内解决&#xff0c;而且不会说完全没有头绪的那种&#xff0c;这一方面源于我本身…

Mybatis中批量插入foreach优化

数据库批量入库方常见方式&#xff1a;Java中foreach和xml中使用foreach 两者的区别&#xff1a; 通过Java的foreach循环批量插入&#xff1a; 当我们在Java通过foreach循环插入的时候&#xff0c;是一条一条sql执行然后将事物统一交给spring的事物来管理&#xff08;Transa…

Thinkphp6视图介绍

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

Ceph client 写入osd 数据的两种方式librbd 和kernel rbd

在Ceph存储系统中&#xff0c;客户端&#xff08;Ceph client&#xff09;写入OSD&#xff08;Object Storage Daemon&#xff09;数据确实可以通过两种主要方式&#xff1a;librbd和kernel rbd。这两种方式各有特点和适用场景&#xff0c;下面将分别进行详细介绍。 librbd方式…