【从零开始学习Linux】一文带你了解Shell外壳及用户权限(一)

🚩纸上得来终觉浅, 绝知此事要躬行。
🌟主页:June-Frost
🚀专栏:Linux入门

🔭【从零开始学习Linux】系列均属于Linux入门,主要包含Linux操作系统下的指令、操作、权限以及开发工具,使得拥有基本编写代码的能力。

🔥该文章主要了解Shell外壳(理论)及用户权限,其中用户权限将分为两部分进行总结叙述。

目录:

  • 🔭 操作系统的基本结构和运行原理
  • 🔭 用户权限
    • ✉️ 用户的分类
    • ✉️ 身份切换(su指令)
    • ✉️ 短暂提权
  • 🔭 权限管理
    • ✉️ 更改权限
  • ❤️ 结语

🔭 操作系统的基本结构和运行原理

 内核和外壳是操作系统的两个主要组成部分。

 内核是操作系统的核心,负责管理系统的硬件和软件资源。它直接与硬件设备进行交互,控制硬件设备、管理内存、提供硬件接口、处理基本I/0、管理文件系统等。此外,内核还为程序分配内存和CPU时间,以及提供系统调用接口,以便应用程序能够使用操作系统的功能。

 外壳是用户与内核交互的界面,它提供了用户与操作系统的交互方式。它实际上是一个命令解释器,解释用户输入的命令并送到内核执行。它还提供了一些基本的命令和工具,例如文件管理、进程管理、设备管理等。此外,外壳还提供了图形界面(例如windows系统),使得用户可以通过图形界面与操作系统进行交互。

 内核与外壳协同工作,使得计算机能够正常运转,并为应用程序提供稳定、高效的运行环境。

重点来了❗️

 对于Linux系统来说,其内核本身只是一个基础组件。由于考虑到操作系统的易用性(用户不能直接访问操作系统)和安全性(防止用户非法操作导致操作系统受到损害),于是shell外壳就有了存在的意义,它是用户与内核之间的桥梁,为用户提供操作系统的接口。Shell外壳可以理解为用户与操作系统之间的交互界面,它接收用户输入的指令并提交给内核处理,同时将处理结果反馈给用户

 Shell外壳是一个用C语言编写的程序,在系统启动期间,它都会存在。当用户输入有风险,自定义的指令时,Shell会创建子进程去执行该操作。

 在CentOS 7 中 ,Shell通过Bash具体实现。


🔭 用户权限

✉️ 用户的分类

  Linux下一般有两种用户:

  • 超级管理员:具有一切操作权力,其用户名为root
  • 普通用户:为了使用Linux系统资源而建立的,通常由管理员创建,权限受限。

✉️ 身份切换(su指令)

  • 语法su [用户名]
    功能:变更用户身份。

 如果使用su命令时没有指定用户,那么默认会切换到root用户的身份。并且,su - 也可以切换到root用户。

susu - 是不一样的,主要区别在于它们切换用户身份时所携带的Shell环境su命令只切换用户身份,而不改变Shell环境。这意味着,使用su命令切换到root用户后,你的工作目录和环境变量仍然保持原用户的设置,而不是root用户的设置。相比之下,su-命令在切换用户身份的同时,也会将Shell环境切换到目标用户的环境。具体来说,使用su-命令切换到root用户后,你的工作目录会变成root用户的工作目录,环境变量也会变成root用户的环境变量。

📙注意:

  1. 当普通用户切换成root用户是需要输入root密码的。
  2. 当普通用户切换到另一个普通用户则需要对方的密码。
  3. root用户切换为普通用户是不需要密码的。


✉️ 短暂提权

  在Linux或Unix系统中,当你需要执行需要管理员权限的命令,但又不想以root用户身份登录时,可以使用sudo。例如,你可能需要使用sudo来安装软件包、修改系统配置、执行系统管理等操作。

📙sudo:

  • 语法sudo [选项] 命令
  • 功能:用于暂时获得超级用户权限来执行特定的命令。

 使用sudo时,需要输入当前用户的密码以验证其权限。这里无法执行是因为cy用户不在白名单中,需要使用vim去改变配置文件。


🔭 权限管理

 可以从两个方面去看待权限,首先权限一定存在身份限制,定义了用户对特定资源的访问能力,其次权限一定得保证对应的资源有人们所需的属性,例如:影视软件的属性就是让人们观看电影,而身份(vip)的不同决定了能免费观看什么电影。

 在之前的文章中,提到了Linux系统的一个设计理念——Linux系统下一切皆文件,所以谈及Linux的权限问题,主要是在文件权限上。

📗在Linux中,访问者的身份分为3类:

  • 拥有者(owner)指的是创建文件或目录的用户,每个文件或目录都有一个唯一的拥有者。拥有者可以对该文件或目录进行修改、删除等操作。
  • 所属组(group)是拥有者所在的组,可以是系统中的任何一个组。所属组决定了拥有者所在的组对文件或目录的访问权限。
  • other是指不属于拥有者和所属组的用户,也就是除了拥有者和所属组的成员之外的所有用户。other用户对文件或目录的访问权限取决于系统管理员设置的权限。

💫 所属组存在的意义:

 所属组(group)的存在主要是出于管理方面的考虑,尤其是要控制对文件和其他系统资源的访问。在Linux中,每个用户都可能隶属于一个或多个组,而每个组也都有唯的一个名称和一个组标识符(GID)。用户和组ID的主要用途有二:一是确定各种系统资源的所有权;二是控制赋予进程访问上述资源的权限。例如,每个文件都属于某个特定的用户和组,而每个进程也拥有相应的用户ID和组ID属性,这就决定了进程的所有者,以及进程访问文件时所拥有的权限。

 在团队工作的场景下,所属组的概念就很容易理解。比如在老师的计算机里,可以设置文件权限,就能限制非自己班级(即非本组)的其他用户的可读权限,也可以让自己的班级(即本组)成员可以修改文件。

📗Linux中操作的对象是文件,而文件对应的属性也有3种:

  • 读(r):表示具有读取文件内容的权限。
  • 写(w):表示具有修改文件内容的权限。
  • 执行(x):表示具有执行文件的权限。

 在文件属性列表上,对应有9个字符,每3个为一组,分别对应拥有者,所属组和other的权限。例如:这个文件拥有者的权限为rw- ,说明拥有者有读权限,写权限,但是没有执行权限。

 如果一个用户同时是拥有者和所属组,系统在匹配时只会匹配一次,会将该用户匹配到拥有者,然后看对应是否有权限,所以如果同一个用户如果作为拥有者没有读权限,作为所属组有读权限,在这种匹配下是不可以读文件的。

⏳ 对于一个文件是否可执行,需要满足两个条件:① 有执行权限。② 该文件是个可执行文件。

✉️ 更改权限

 一般来说,只有文件的拥有者和root才可以改变文件的权限。

📙chmod:

  • 语法chmod [参数] 权限 文件名
  • 功能:更改文件或目录的权限。它允许用户控制谁可以读取、写入和执行文件。
  • 常用选项R 递归修改目录文件的权限

  权限的表示格式:[{ugoa}{+-=}{rwx}]

u:表示拥有者(owner)权限。
g:表示所属组(group)权限。
o:表示其他用户(others)权限。
a:表示所有用户(all)权限。
+:表示添加(增加)权限。
-:表示移除(删除)权限。
=:表示设置(明确)权限。
r:表示读取(read)权限。
w:表示写入(write)权限。
x:表示执行(execute)权限。

 这些参数可以组合在一起使用,以精确地控制需要修改的权限。

在这里插入图片描述

 除了这种方式,还有一种三位8进制数字的方式来改变权限。由于一个身份所对应的文件权限,就只有rwx,那么每一位如果有对应的权限就为1,如果没有就为0,所以就形成了 000 ~ 111 的一个二进制组合,转化8进制就为0~7。例如:chmod 755 filename 就会将文件的拥有者设置为读、写和执行权限,而所属组和其他用户只有读和执行权限。


❤️ 结语

 文章到这里就结束了,如果对你有帮助,你的点赞将会是我的最大动力,如果大家有什么问题或者不同的见解,欢迎大家的留言~

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

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

相关文章

基于.net framework4.0框架下winform项目实现寄宿式web api

首先Nuget中下载包:Microsoft.AspNet.WebApi.SelfHost,如下: 注意版本哦,最高版本只能4.0.30506能用。 1.配置路由 public static class WebApiConfig{public static void Register(this HttpSelfHostConfiguration config){// …

Axure插件浏览器一键安装:轻松享受高效工作!

Axure插件对原型设计师很熟悉,但由于Axure插件是在国外开发的,所以在安装Axure插件时不仅需要下载中文包,激活步骤也比较繁琐,有时Axure插件与计算机系统不匹配,Axure插件格式不兼容。本文将详细介绍如何安装Axure插件…

CCFCSP试题编号:201912-2试题名称:回收站选址

这题只要比较坐标的四周&#xff0c;然后计数就可以了。 #include <iostream> using namespace std;int main() {int n;cin >> n;int arr[1005][2] { 0 };int res[5] { 0 };int up 0;int down 0;int left 0;int right 0;int score 0;for (int i 0; i <…

23款奔驰GLC260L升级原厂360全景影像 高清环绕

本次星骏汇小许介绍的是23款奔驰GLC260L升级原厂360全景影像&#xff0c;上帝视角看清车辆周围环境&#xff0c;更轻松驾驶 升级360全景影像系统共有前后左右4个摄像头&#xff0c;分别在车头&#xff0c;车尾&#xff0c;以及两边反光镜下各一个&#xff0c;分别用来采集车头&…

Modbus RTU、Modbus 库函数

Modbus RTU 与 Modbus TCP 的区别 一般在工业场景中&#xff0c;使用 Modbus RTU 的场景更多一些&#xff0c;Modbus RTU 基于串行协议进行收发数据&#xff0c;包括 RS232/485 等工业总线协议。采用主从问答式&#xff08;master / slave&#xff09;通信。 与 Modbus TCP 不…

基于springboot实现实习管理系统的设计与实现项目【项目源码+论文说明】计算机毕业设计

基于sprinmgboot实现实习管理系统的设计与实现演示 摘要 随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;实习管理也不例外&#xff0c;但目前国内仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;…

普通平衡树

题意&#xff1a;略&#xff0c;题中较清晰。 用二叉查找树来存储数据&#xff0c;为了增加效率&#xff0c;尽量使左子树和右子树的深度差不超过一&#xff0c;这样可以时间控制在logn&#xff0c;效率比较高。 右旋和左旋&#xff0c;目的是为了维护二叉树的操作&#xff0…

Dubbo引入Zookeeper等注册中心简介以及DubboAdmin简要介绍,为后续详解Dubbo各种注册中心做铺垫!

文章目录 一&#xff1a;Dubbo注册中心引言 1&#xff1a;什么是Dubbo的注册中心&#xff1f; 2&#xff1a;注册中心关系图解 3&#xff1a;引入注册中心服务执行流程 4&#xff1a;Dubbo注册中心好处 5&#xff1a;注册中心核心作用 二&#xff1a;注册中心实现方案 …

Springboot+vue的新冠病毒密接者跟踪系统(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的新冠病毒密接者跟踪系统(有报告)。Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的新冠病毒密接者跟踪系统&#xff0c;采用M&#xff08;model&#xff09;V&#xff08;v…

景区智慧旅游智能化系统方案:PPT全文58页,附下载

关键词&#xff1a;智慧景区解决方案&#xff0c;智慧文旅解决方案&#xff0c;智慧旅游解决方案&#xff0c;智慧文旅综合运营平台 一、景区智慧旅游智能化系统建设背景 近年来&#xff0c;随着信息技术的快速发展和普及&#xff0c;以及旅游市场的不断扩大和升级&#xff0…

电脑自动删除文件怎么办?如何恢复?

在数字化时代&#xff0c;电脑已经成为人们不可或缺的工具之一。然而&#xff0c;由于各种原因&#xff0c;我们有时会遇到电脑自动删除文件的情况&#xff0c;这给我们的工作和生活带来了很多不便。那么&#xff0c;当电脑自动删除文件时&#xff0c;我们应该如何处理呢&#…

【Python爬虫】8大模块md文档从0到scrapy高手,第8篇:反爬与反反爬和验证码处理

本文主要学习一下关于爬虫的相关前置知识和一些理论性的知识&#xff0c;通过本文我们能够知道什么是爬虫&#xff0c;都有那些分类&#xff0c;爬虫能干什么等&#xff0c;同时还会站在爬虫的角度复习一下http协议。 Python爬虫和Scrapy全套笔记直接地址&#xff1a; 请移步这…

数据结构与算法编程题14

设计一个算法&#xff0c;通过一趟遍历在单链表中确定值最大的结点。 #include <iostream> using namespace std;typedef int Elemtype; #define ERROR 0; #define OK 1;typedef struct LNode {Elemtype data; //结点保存的数据struct LNode* next; //结构体指针…

RedHat NTP时间服务器配置Chrony(所有节点时间跟主节点时间同步)

NTP NTP&#xff08;Network Time Protocol&#xff09;是一种用于在计算机网络中同步时钟的协议。它的主要目的是确保网络中的各个设备具有准确的时间参考&#xff0c;以便协调事件顺序、安全通信和日志记录等应用。它通过分层体系结构、时间同步算法和准确的时间参考源来确保…

Linux设置静态IP

Linux设置静态IP 使用ip addr查看ip&#xff0c;如下所示就是动态IP 1、什么是静态IP&#xff1f; 静态ip就是固定的ip&#xff0c;需要手动设置。静态IP地址&#xff08;又称固定IP地址&#xff09;是长期分配给一台计算机或网络设备使用的 IP 地址。一般来说&#xff0c;一…

738. Monotone Increasing Digits 968. Binary Tree Cameras

738. Monotone Increasing Digits An integer has monotone increasing digits单调递增数字 if and only if each pair of adjacent digits x and y satisfy x < y. Given an integer n, return the largest number that is less than or equal to n with monotone increa…

TypeScript 学习笔记 第三部分 贪吃蛇游戏

尚硅谷TypeScript教程&#xff08;李立超老师TS新课&#xff09; 1. 创建开发环境 创建工程&#xff0c;使用学习笔记的第二部分安装css部分 npm i -D less less-loader css-loader style-loader对css部分处理&#xff0c;能够运行在低版本浏览器 npm i -D postcss postcss…

音色逼真、韵律自然的AI人声克隆限时福利!

声音&#xff0c;为数字人注入灵魂。 2023云栖大会上&#xff0c;阿里云视频云接受了CCTV-2财经频道的采访&#xff0c;分享并演示了如何利用云端智能剪辑&#xff0c;一站式完成数字人渲染及视频精编二创。 正如视频开头所呈现的AI重现演员“原声”&#xff0c;近年来&#x…

基于SpringBoot的图书管理系统

基于SpringBoot的图书管理系统 图书管理系统开发技术功能模块代码结构数据库设计运行截图源码获取 图书管理系统 开发技术 技术&#xff1a;SpringBoot、MyBatis-Plus、MySQL、Beetl、Layui。 框架&#xff1a;基于开源框架Snowy-Layui开发。 工具&#xff1a;IDEA、Navicat等…

【Linux】进程间通信——进程间通信的介绍和分类、管道、匿名管道、命名管道、匿名管道与命名管道的区别

文章目录 进程间通信1.进程间通信的介绍1.1目的和发展 2.进程间通信分类3.管道3.1匿名管道3.1.1匿名管道的原理&#xff08;文件角度&#xff09;3.1.2匿名管道的原理&#xff08;内核角度&#xff09;3.1.3管道读写规则3.1.4管道特点 3.2命名管道3.2.1创建命名管道3.2.2命名管…