当前位置: 首页 > news >正文

【Linux】权限篇(一)

权限篇目录

  • 1. 前言
  • 2. shell
  • 3. 权限介绍
    • 3.1 什么是权限
    • 3.2 权限的本质
    • 3.3 Linux中的用户
    • 3.4 Linux中文件的权限

1. 前言

在之前的博客中已经学习了一些相关的操作,这次来分享的是与Linux的权限有关的一些笔记。
在正片开始之前,先来讲讲外壳(shell)。

2. shell

Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。

我们知道:

  1. 在Linux上面,大部分指令就是文件。
  2. 用户在执行某种功能的时候,不是直接让操作系统执行对应的指令的,而是先交给外壳程序。
    这句话是什么意思呢?
    在这里插入图片描述
    实际上用户是不能直接访问操作系统的,一般在操作系统外面都会封装一层外壳程序,也就是shell程序。

最典型的外壳有两种,一种是图形化界面,另一种是命令行。有的将图形化界面直接写道操作系统里面,比如windows。
就像我们电脑在开机的时候,最后一步就是在加载图形化界面。

-----------------------------------------------------------------------------------------

shell是什么呢?
介于用户和操作系统之间的软件,也就是命令解释器。
它的作用是:

  1. 将使用者的命令翻译给核心(kernel)处理。
  2. 同时,将核心的处理结果翻译给使用者。

那为什么会有shell?

  1. 用户不善于和操作系统(OS)之间交互。
  2. shell外壳的存在,可以对请求进行合法性检查,变相的保护OS。

在这里插入图片描述

bash不会直接执行命令,它会创建一个子进程,让子进程去执行。
这个子进程会帮用户进行命令行解释。
而真正的bash只需要等待就行。

总结:
对于大部分操作系统,在它的软件外层还有一个外壳层。这个外壳层通常进行命令行解释。
在用户和操作系统之间加一层软件层,主要将命令翻译给核心,同时将对应的操作系统执行结果翻译给用户。
其中这个外壳程序就叫做shell外壳,常见的外壳有图形化界面和命令行。

shell和bash有什么区别呢?
也就是说shell是所有外壳程序的统称,bash是具体的一款外壳程序。
命令行解释器在不同的操作系统中,有不同的种类,像sh。

3. 权限介绍

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

  1. 超级用户:可以再linux系统下做任何事情,不受限制,命令提示符是“#”。
  2. 普通用户:在linux下做有限的事情,普通用户的命令提示符是“$”。

3.1 什么是权限

权限就是通过一定的条件来拦住一部分人,给一部分人权利,来访问某种资源。

就和门禁和vip的道理相同。
权限的有无,就是能或者不能的问题。

3.2 权限的本质

  1. 权限和人有关,就像在视频网站上有的视频只能是vip才能看。
  2. 权限也与事物的属性有关,就像不能在视频网站什么刷题是一样的,它没有这个属性。

也就是说:权限=人+事物的属性有关

这个“人”,并不是指的具体某一个人,而是一种角色
就像是在学校的校门的门禁一样,并不是说你叫张三就能进入学校,而是说,你是这个学校的学生,是这个角色,才能进学校。

3.3 Linux中的用户

Linux下有两种用户:超级用户(root)、普通用户。
在这里插入图片描述
我们大部分用的就是root。

在Linux中root是超级管理员,所以它不受权限约束。

那么普通用户怎么将自己变成超级用户呢?
我们先使用普通账号
在这里插入图片描述
将普通用户变成root,直接su,这里提示要输入密码
在这里插入图片描述
那么这里输入哪个的密码?
我们登录的是root当然就是输入root的密码。
所有建议普通用户和root的密码不要设置成一样的。
在这里插入图片描述
此时就变成了root。

-----------------------------------------------------------------------------------------

那么怎么退回普通用户呢?
直接ctrl+D
在这里插入图片描述
就变成普通用户。

-----------------------------------------------------------------------------------------

普通用户变成超级用户还有一种方式就是su -
在这里插入图片描述
此时输入的还是root的密码,但是多了一条提示信息。

susu -的区别是什么?
su是就是直接将当前角色的身份变成root。
su -是相当于是让root重新做登录了。
此时路径会发生变化,直接到root的家目录下面了。
在这里插入图片描述
但是如果我们单纯的用su,所处的路径不会发生变化。
在这里插入图片描述

如果要将普通用户切换为root,建议直接su就行。

-----------------------------------------------------------------------------------------

如果超级管理员想变成普通用户怎么办呢?
在这里插入图片描述
如果想变成指定的用户,直接su+指定用户就行。
在这里插入图片描述
退出直接ctrl+D就行了。

-----------------------------------------------------------------------------------------

如果不想直接变成root,但想以root的身份执行一个工作该怎么做?
在创建的文件前面加sudo
在这里插入图片描述
这里输入的是普通用户自己的密码。
这种操作叫做指令提权。

那为什么sudo对指令进行提权的时候,输入的是普通用户自己的密码?
在这里插入图片描述
一般普通用户是没有权限去执行这个的,会报错。在云服务器上默认是不行的。

默认普通用户目前是无法执行sudo,在之后的学习vim,再来解决这个问题。

所以目前我们想以root的身份执行一个工作时,直接变成root就行。

3.4 Linux中文件的权限

在这里插入图片描述
在Linux中有三种“人”:
拥有者
所属组
other
在这里插入图片描述
但是我们看不见other啊?
在Linux下是有组的概念的,一般情况下自己就是一组。
other是匹配完拥有者和所属组后,剩下的不匹配的都是other了。

为什么会有所属组的概念?
举个例子;在一家公司里可能会有两组人做同时一个项目,如果这两组都在同一个服务器上做。当某一天,如果领导需要看第一组的源代码时,当放开的时候,另外一组可能会看到第一组的源代码。所以在Linux系统中就得有所属组。
当第一组组内在所属组内放开权限时候,另外一组也看不到。
所属组就是为了在多人协作的时候,更好的进行权限管理。

-----------------------------------------------------------------------------------------

Linux中具体的角色是需要具体的人来扮演的。

在这里插入图片描述
我们会发现前边有10个字符,第一列的第一个字符,就表示文件的类型。-:表示普通文件;d:表示目录文件。

文件

剩下的9个字,33为一组,分别对应拥有者,所属组,other。

在这里插入图片描述
所以说:
权限=用户角色(具体的人)+文件权限属性

对于这三个字符,所对应的位置是固定的。
没有就用-,有就对应相关那个字符。
在这里插入图片描述

如果有错误请指出,大家一起进步!

相关文章:

  • uniapp H5项目使用ucharts的Echart组件方式创建圆环
  • 刷题记录第五十一天-去除重复字母
  • 【STL】C++ string基本使用
  • 前端技术的新趋势:React、Vue与Angular的比较
  • 2023 英特尔On技术创新大会直播 |探索视觉AI的无限可能
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • 如何在Linux中查看正在运行的进程以及过滤特定端口和进程名称
  • LVS最终奥义之DR直接路由模式
  • 基于FPGA的简易BPSK和QPSK
  • 65 数学游戏
  • 【delphi11】delphi基础探索【三、基础组件和事件】
  • 巧用map实现springbean的命令模式
  • Python 时间日期处理库函数
  • Gemini 1.0:Google推出的全新AI模型,改变生成式人工智能领域的游戏规则!
  • 做一个wiki页面是体验HTML语义的好方法
  • js
  • JSDuck 与 AngularJS 融合技巧
  • Js基础——数据类型之Null和Undefined
  • miaov-React 最佳入门
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • PAT A1092
  • Redash本地开发环境搭建
  • TCP拥塞控制
  • web标准化(下)
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 成为一名优秀的Developer的书单
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 解析带emoji和链接的聊天系统消息
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 普通函数和构造函数的区别
  • 设计模式 开闭原则
  • 使用 QuickBI 搭建酷炫可视化分析
  • 一个SAP顾问在美国的这些年
  • - 转 Ext2.0 form使用实例
  • ionic入门之数据绑定显示-1
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • $(function(){})与(function($){....})(jQuery)的区别
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (C#)获取字符编码的类
  • (C语言)球球大作战
  • (JS基础)String 类型
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (十六)Flask之蓝图
  • (实战篇)如何缓存数据
  • (图)IntelliTrace Tools 跟踪云端程序
  • (一)Dubbo快速入门、介绍、使用
  • (原)Matlab的svmtrain和svmclassify
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • .NET Core WebAPI中使用swagger版本控制,添加注释