【Linux】解锁权限的神秘面纱,让你的系统更安全、更高效!

XShell原理+权限

  • 1. Shell命令以及运行原理
    • 1.1 Shell外壳
    • 1.2 shell周边知识
  • 2. Linux权限的概念
    • 2.1 用户
    • 2.2 用户切换
    • 2.3 sudo
  • 3. Linux权限管理
    • 3.1 文件访问者的分类
    • 3.2 文件类型
    • 3.3 file指令
    • 3.4 文件访问权限
    • 3.5 文件权限值的表示方法
  • 4. 文件访问权限的设置方法
    • 4.1 chmod指令
    • 4.2 chown指令
    • 4.3 chgrp指令
    • 4.4 umask指令
  • 5. 目录权限
  • 6. 粘滞位

1. Shell命令以及运行原理

1.1 Shell外壳

  1. Shell外壳:也称为Shell环境,是用户和操作系统内核进行交流的界面和通道,即:是提供命令输入和执行环境的平台。相当于Windows的图形化界面。
  2. Shell命令:是用户在Shell环境中输入的指令。这些指令会被传递给Shell解释并传递给操作系统执行。

1.2 shell周边知识

  1. 为什么要有Shell外壳程序?
  • Shell提供了用户界面、即:命令行解释器,因为用户不能直接访问操作系统,用户通过它输入命令与操作系统进行交互;
  • 简化操作、由于操作系统本身的易用程度,Shell降低了用户的操作成本和学习成本;
  • 保护操作系统、用户不能直接访问内核,在输入命令时,Shell会进行检查,对于非法指令,直接进行拦截,从而降低了系统受到恶意攻击或误操作的风险;
  • 支持多任务处理、Shell通过创建子进程,实现了并发执行和多任务处理,提高了系统的效率和响应速度。
  1. Shelll外壳程序是什么?

    Shell外壳程序,也称为Shell,是存在于操作系统之上的"命令行解释器",是面向用户的命令接口(存在于用户和内核之间,需求指令 执行结果)。在Linux中,Shell将用户输入的命令翻译给操作系统内核进行处理,同时,将内核的处理结果翻译给用户。Shell相当于"媒婆"、bash相当于"王婆",两者功能相同,都是命令行解释器。

  2. Shell工作原理怎么实现?

    Shell本质是一个执行起来的程序,即:进程,在系统启动期间,一直存在。对于有风险、用户自定义的指令,Shell通过创建子进程的方式,让子进程去执行有风险的命令。
    image.png

  • 每次进行XShell登入时,系统都会给这个用户的当前登入,分配一个Shell,相当于"人手一个Shell"。只是将XShell软件启动,并未登入,不会生成Shell。

💡Tips :用户不能直接访问操作系统。
image.png

2. Linux权限的概念

2.1 用户

  1. 超级用户:root,拥有系统的最高权限,不受任何权限限制,可以对Linux系统进行不受限制的任何操作。
  2. 普通用户:权限受限制,对Linux系统进行有限的操作。
  3. 区别:超级用户的命令提示符是"#“,普通用户的命令提示符是”$"。

image.png

2.2 用户切换

  1. 普通用户切换成root:有两种方式,都需要输入root账号的密码,su -,以root的身份重新登入,当前所处的工作目录发生改变,变为/root;su,用户切换为root,当前所处的工作目录未发生改变。

image.png

  1. 超级用户切换成普通用户,su 普通用户名,进行用户切换,不需要输入密码,当前所处的工作目录未发生改变。

image.png

  1. 普通用户1切换成普通用户2,su 普通用户名2,进行用户切换,需要输入普通用户2的密码,当前所处的工作目录未发生改变。

image.png

2.3 sudo

语法:sudo 命令

功能:对指定的指令进行提权。普通用户不想把自己变成root,但我想以root的身份去执行指定的命令,此时只需要输入普通用户的密码,就可以以超级用户的身份去执行。

  • 默认大部分是不能执行sudo,因为需要root把普通用户添加到sudoers配置文件中,如果普通用户在sudoers文件中,允许这个用户执行sudo、如果普通用户不在sudoers文件中,不允许这个用户执行sudo。

在这里插入图片描述

3. Linux权限管理

  1. 在生活中,具有权限的事例,一般有爱奇艺VIP、助学金等,权限一定限制人,能不能做某件事,而对应的操作对象,一定要有对应满足人需求的属性,eg:不能在爱奇艺上刷在线oj题,爱奇艺不具有刷题属性。
  2. 在Linux文件权限上,Linux群体,更多的是人扮演的角色(拥有者、所属组、其他用户)、Linux操作对象的属性,因为Linux下一切皆文件,所以为Linux文件权限的属性,文件基本的权限为读®、写(w)、可执行(x)。

3.1 文件访问者的分类

  1. 拥有者:u(user),文件的创建者。
  2. 所属组:g(group),一个或多个用户组成一组,以某个用户名为组名,组内所有的用户共享相同的访问权限。
  • 所属组的作用:a.简化权限管理:可以为组内所有用户定义统一的访问权限,无需为每个用户单独设置权限,简化了权限的管理过程,提高了系统的可维护性。b.共享资源:让一组用户共享对特定资源的访问权限,如多人协作。
  1. 其他用户:o(others),只要不是拥有者和所属组的用户都是其他用户。

image.png

3.2 文件类型

  1. 普通文件(-) :如文本、源代码、图像、视频、库、可执行程序等。最常见的文件类型,用于存储数据。
  2. 目录文件(d) :用于组织和存储其他文件和目录。
  3. 链接文件(l) :特殊类型的文件,主要分为硬链接和软链接(符号链接)。
  • 软链接是个特殊的文件,软链接的格式"ln -s 源文件 软链接文件",表示创建一个新的软链接文件,该文件指向指定的源文件,相当于Windows中文件属性的快捷方式,不占用额外的磁盘空间,不包含源文件的实际内容,保存了指向源文件的路径信息,因此,软链接文件可以间接的访问和操作源文件(对软链接文件的操作,就是对源文件进行操作),如果源文件被移动、删除、重命名,则软链接将会失效。
  1. 管道文件§ :特殊类型的文件,用于不同进程间的信息传递。一个进程可以将数据写入到管道的一端,另一个进程可以从管道的另一端读取数据。
  2. 块设备文件(b) : 如硬盘(支持随机访问)。Linux下为/dev/vda*。
  3. 字符设备文件© :如键盘、显示器、鼠标等(不支持随机访问)。Linux下为/dev/ttyy*、/dev/pts。

image.png

  1. 套接口文件(s) : socket文件。

Linux下文件类型不通过后缀名来区分,Linux系统本身并不依赖文件后缀名,但在实际的使用中,许多Linux工具和应用程序会根据文件后缀名来推测文件类型,从而决定如何打开或处理这个文件。eg :编辑器、编译器、命令等。
Windows中文件类型通过后缀名来标识,文件类别决定着它能被哪些软件操作。

3.3 file指令

语法:file 文件或目录

  • 功能:查看文件类型。

3.4 文件访问权限

  1. 读® :read读权限,对于文件来说,具有读取文件内容的权限、对于目录来说,具有对文件属性信息查看的权限。
  2. 写(w) :write写权限,对于文件来说,具有修改文件内容的权限、对于目录来说,具有在该目录下进行新建和删除、重命名文件的权限。
  3. 可执行(x) : execute可执行权限,对于文件来说,具有可执行文件的权限、对于目录来说,具有进入该目录权限。
  • 💡Tips 1:一个文件可执行,需要具备两个条件,具有可执行权限、本身必须是一个可执行程序。
  • 💡Tips 2 :文件的权限匹配是一个顺序匹配的过程,首先,系统会判断访问者的身份,根据访问者的身份(拥有者、所属组、其他用户)依次进行匹配,然后系统会匹配访问者身份对应的权限,根据这个权限来决定是否允许这个访问者对文件进行读、写、执行操作。 -》 只要匹配到了访问者的身份就立即停止匹配,即:只会匹配一次。

image.png

3.5 文件权限值的表示方法

image.pngimage.png

4. 文件访问权限的设置方法

4.1 chmod指令

语法: chmod [选项] 权限 文件名

  • 功能:设置文件的权限。

常用选项:

-R : 递归式修改文件、目录及其目录下文件、子目录的权限。

  • 💡注意 :只有文件的拥有者、root、进行sudo的普通用户才能更该文件的权限。

chmod命令权限值的格式:

  1. 用户表示符+、-权限字符
  • u : 文件的拥有者。
  • g : 文件的所属组。
  • o:文件的其他用户。
  • a :所有用户,包括拥有者、所属组、其他用户。
    • :向权限范围取消权限代号所表示的权限。
  • +:向权限范围增加权限代号所表示的权限。

image.png

  1. 三位8进制数字(000~777)

image.png

4.2 chown指令

语法:chown [选项] 用户名 文件

  • 功能:修改文件的拥有者。
  • 💡注意 :只有root、进行sudo的普通用户才能更该文件的拥有者。

image.pngimage.png

  • chown 拥有者:所属组 文件:同时更改文件的拥有者和所属组。

4.3 chgrp指令

语法:chown [选项] 用户名 文件

  • 功能:修改文件的所属组。
  • 💡注意 :只有root、进行sudo的普通用户才能更该文件的拥有者。

在这里插入图片描述

4.4 umask指令

语法:umask

  • 功能:umask为权限掩码,定制一个文件或目录在被创建时的默认权限(最终权限)。
  • 修改umask值语法:umask xxx,xxx是三位八进制数字,eg:umask 022。这样的修改通常是临时的,重启系统会还原为默认值。
  1. 文件的起始权限为666,目录的起始权限为777。
  2. 默认(最终)权限计算公式 = 起始权限 & (~umask值) , 本质是从起始权限中去掉在umask权限中出现的权限,如果在起始权限中某权限位不存在,但umask中该权限位存在,该权限位的结果为0,"去掉"不是删除。

image.png

5. 目录权限

  1. x权限:决定着是否可以进入到目录中;
  2. r权限:决定着是否可以查看该目录下的文件属性信息(ls -l)。
  3. w权限:决定着是否能在该目录下进行新建、删除文件、对文件重命名操作。
  • 注意:一个文件能否被删除,不取决与文件本身,而是取决于文件所在的目录,是否具有w权限。

6. 粘滞位

粘滞位 (t):给共享目录/tmp中的other设置了一个权限位,它既具有x权限的意义,又保证了只有文件的拥有者、root、进行sudo的用户才能删除该文件,其他人不能删除此文件。

Tips:粘滞位的大背景是多个用户在共享目录中进行数据共享。

  1. 在/tmp下,可以实现多个用户进行数据共享,/tmp目录将所有用户rwx权限全部放开了,意味着任何用户都可以在/tmp目录下创建文件,由于这些文件是临时的,且可能被其他用户或者系统进程删除,从而导致数据丢失或系统不稳定,就引入了粘滞位。

image.png

  1. tmp目录主要的作用和特点:用于存放临时文件、所有用户都可以访问、自动清理(/tmp目录在系统启动时自动清理临时文件)、不保持持久性等。
  2. 粘滞位确保了每个用户只能管理自己创建的文件,而不能随意操作其他用户的文件。它保护了每个用户的数据不被其他用户误操作或恶意破坏。它使得共享目录中的数据共享更加安全和可靠。

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

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

相关文章

【linux】应用程序访问百度时,操作系统内核网络接口日志

代码合入: 登录 - Gitee.comhttps://gitee.com/r77683962/linux-6.9.0/commit/c639573cc7c4984913d4a89884347e5a30a51eac 启动操作系统运行dmesg的日志像这样: dmesg_log/2024_06_14_00_40_54.txt r77683962/linux-6.9.0 - Gitee.com 注意&#xf…

SOFTS: 时间序列预测的最新模型以及Python使用示例

近年来,深度学习一直在时间序列预测中追赶着提升树模型,其中新的架构已经逐渐为最先进的性能设定了新的标准。 这一切都始于2020年的N-BEATS,然后是2022年的NHITS。2023年,PatchTST和TSMixer被提出,最近的iTransforme…

显著提高iOS应用中Web页面的加载速度 - 提前下载页面的关键资源(如JavaScript、CSS和图像)

手动下载并缓存资源是一种有效的方式,可以确保在需要时资源已经在本地存储,这样可以显著提高加载速度。 缓存整个 web 页面的所有资源文件 具体实现步骤 下载和缓存资源:包括 HTML 文件、CSS、JavaScript 和图像。在应用启动时预加载资源。…

WinForm之TCP客户端通讯

目录 一 设计界面 二 后台代码 一 设计界面 二 后台代码 using System.Net.Sockets; using System.Text;namespace TCP网络客户端通讯 {public partial class Form1 : Form{public Form1(){InitializeComponent();}TcpClient tcpClient new TcpClient();private void conne…

停止游戏中的循环扣血显示

停止游戏中循环扣血并显示的具体实现方式会依赖于你的代码结构和游戏的逻辑。通常情况下,你可以通过以下方式来实现停止循环扣血和显示: 1、问题背景 在使用 Python 代码为游戏开发一个生命值条时,遇到了一个问题。代码使用了循环来减少生命…

atcoder abc357

A Sanitize Hands 问题&#xff1a; 思路&#xff1a;前缀和&#xff0c;暴力&#xff0c;你想咋做就咋做 代码&#xff1a; #include <iostream>using namespace std;const int N 2e5 10;int n, m; int a[N];int main() {cin >> n >> m;for(int i 1…

四轴飞行器、无人机(STM32、NRF24L01)

一、简介 此电路由STM32为主控芯片&#xff0c;NRF24L01、MPU6050为辅,当接受到信号时&#xff0c;处理对应的指令。 二、实物图 三、部分代码 void FlightPidControl(float dt) { volatile static uint8_t statusWAITING_1; switch(status) { case WAITING_1: //等待解锁 if…

2024最新最全【AIGC】学习零基础入门到精通,看完这一篇就够了!

这个文案就是由AI生成的哦&#xff01;&#xff01;&#xff01;&#xff01; AIGC&#xff08;AI-Generated Content&#xff09; 即人工智能生成内容&#xff0c;是指利用人工智能技术来创造各种形式的内容&#xff0c;包括文字、图像、视频、音频和游戏等。与专业生成内容…

图解Transformer学习笔记

教程是来自https://github.com/datawhalechina/learn-nlp-with-transformers/blob/main/docs/ 图解Transformer Attention为RNN带来了优点&#xff0c;那么有没有一种神经网络结构直接基于Attention构造&#xff0c;而不再依赖RNN、LSTM或者CNN的结构&#xff0c;这就是Trans…

【算法专题--链表】反转链表II--高频面试题(图文详解,小白一看就会!!!)

目录 一、前言 二、题目描述 三、解题方法 ⭐迭代法 --- 带哨兵位&#xff08;头节点&#xff09; &#x1f95d; 什么是哨兵位头节点&#xff1f; &#x1f34d; 解题思路 四、总结与提炼 五、共勉 一、前言 反转链表II这道题&#xff0c;可以说是--链表专题--&am…

RAG工作流在高效信息检索中的应用

介绍 RAG&#xff08;Retrieval Augmented Generation&#xff09;是一种突破知识限制、整合外部数据并增强上下文理解的方法。 由于其高效地整合外部数据而无需持续微调&#xff0c;RAG的受欢迎程度正在飙升。 让我们来探索RAG如何克服LLM的挑战&#xff01; LLM知识限制大…

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第38课-密室逃脱-3D互动剧情

【WEB前端2024】3D智体编程&#xff1a;乔布斯3D纪念馆-第38课-密室逃脱 使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎&…

Flutter - Material3适配

demo 地址: https://github.com/iotjin/jh_flutter_demo 代码不定时更新&#xff0c;请前往github查看最新代码 Flutter - Material3适配 对比图具体实现一些组件的变化 代码实现Material2的ThemeDataMaterial3的ThemeData Material3适配官方文档 flutter SDK升级到3.16.0之后 …

C# WinForm —— 35 StatusStrip 介绍

1. 简介 状态栏 StatusStrip&#xff0c;默认在软件的最下方&#xff0c;用于显示系统时间、版本、进度条、账号、角色信息、操作位置信息等 可以在状态栏中添加的控件类型有&#xff1a;StatusLabel、ProgressBar、DropDownButton、SplitButton 2. 属性 属性解释(Name)控…

utm投影

一 概述 UTM (Universal Transverse Mercator)坐标系是由美国军方在1947提出的。虽然我们仍然将其看作与“高斯&#xff0d;克吕格”相似的坐标系统&#xff0c;但实际上UTM采用了网格的分带&#xff08;或分块&#xff09;。除在美国本土采用Clarke 1866椭球体以外&#xff0c…

树莓派等Linux开发板上使用 SSD1306 OLED 屏幕,bullseye系统 ubuntu,debian

Raspberry Pi OS Bullseye 最近发布了,随之而来的是许多改进,但其中大部分都在引擎盖下。没有那么多视觉差异,最明显的可能是新的默认桌面背景,现在是大坝或湖泊上的日落。https://www.the-diy-life.com/add-an-oled-stats-display-to-raspberry-pi-os-bullseye/ 通过这次操…

【GD32】 TIMER通用定时器学习+PWM输出占空比控制LED

扩展&#xff1a;对PWM波形的输出进行捕获 目录 一、简介二、具体功能描述1、时钟源的选择&#xff1a;2、预分频器&#xff1a;3、计数模式&#xff1a;向上计数模式&#xff1a;向下计数模式&#xff1a;中央对齐模式&#xff1a; 4、捕获/比较通道 输入捕获模式 输出比…

前端问题整理

Vue vue mvvm&#xff08;Model-View-ViewModel&#xff09;架构模式原理 Model 是数据层&#xff0c;即 vue 实例中的数据View 是视图层&#xff0c; 即 domViewModel&#xff0c;即连接Model和Vue的中间层&#xff0c;Vue实例就是ViewModelViewModel 负责将 Model 的变化反映…

TCGAbiolinks包学习

TCGAbiolinks 写在前面学习目的GDCquery GDCdownload GDC prepare中间遇到的报错下载蛋白质数据 写在前面 由于别人提醒我TCGA的数据可以利用TCGAbiolinks下载并处理&#xff0c;所以我决定阅读该包手册&#xff0c;主要是该包应该是有更新的&#xff0c;我看手册进行更新了&…

【CS.PL】Lua 编程之道: 简介与环境设置 - 进度8%

1 初级阶段 —— 简介与环境设置 文章目录 1 初级阶段 —— 简介与环境设置1.1 什么是 Lua&#xff1f;特点?1.2 Lua 的应用领域1.3 安装 Lua 解释器1.3.1 安装1.3.2 Lua解释器的结构 1.4 Lua执行方式1.4.0 程序段1.4.1 使用 Lua REPL&#xff08;Read-Eval-Print Loop&#x…