【Linux】shell命令与Linux权限的概念

在这里插入图片描述

目录

  • 一、shell命令
  • 二、Linux权限的概念
    • 2.1 Linux权限的概念
      • 2.1.1 用户
      • 2.1.2 指令
        • 2.1.2.1 su指令
        • 2.1.2.2 sudo指令
    • 2.2 Linux权限管理
      • 2.2.1 文件访问者的分类(人)
      • 2.2.2 文件类型和访问权限(事物属性)
        • 2.2.2.1 文件类型
        • 2.2.2.2 基本权限
    • 2.3 文件权限值的表示方法
      • 2.3.1 字符表示法
      • 2.3.2 八进制数值表示法
    • 2.4 文件访问权限的相关设置方法
      • 2.4.1 chmod指令
      • 2.4.2 chown指令
      • 2.4.3 chgrp指令
      • 2.4.4 umask指令
      • 2.4.5 file指令
    • 2.5 目录的权限
    • 2.6 粘滞位
    • 2.7 总结
  • 结尾

一、shell命令

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

  • 内核是操作系统的核心,负责处理复杂的系统资源和任务。用户并不擅于直接与内核进行直接交流

  • 直接操作内核可能会导致系统不稳定或安全问题。内核中的错误或不当操作可能会对系统造成严重影响,甚至导致系统崩溃。通过Shell等中间层,可以对用户的操作进行一定的限制和检查,确保系统的安全和稳定。

  • Shell提供了更加友好和灵活的用户界面,允许用户以更加直观和便捷的方式与内核进行交互。

从技术角度,Shell的最简单定义:命令行解释器主要包含:

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

对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。

shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。


二、Linux权限的概念

2.1 Linux权限的概念

2.1.1 用户

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

  • 超级用户:可以在linux系统下做任何事情,不受限制
  • 普通用户:在linux下做有限的事情。
  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
    在这里插入图片描述

2.1.2 指令

2.1.2.1 su指令

语法su [用户名]

功能:切换用户。

例如,要从root用户切换到普通用户 user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令

在这里插入图片描述


2.1.2.2 sudo指令

使用sudo指令之前,普通账号需要在root账号

语法sudo [选项] [命令]

功能:sudo命令可以让普通用户以超级用户或其他用户的身份执行命令,而不需要知道超级用户的密码。

在这里插入图片描述

常用选项

  • -l:列出当前用户可以执行的sudo命令及其对应的权限。
  • -u:以指定的用户身份执行命令,格式为-u 用户名。
  • -i:以root用户的身份登录shell,即切换到root用户的环境。

sudo命令的配置
配置文件:sudo的配置文件是/etc/sudoers,该文件定义了哪些用户可以执行哪些命令。

由于这里还没有讲到vim的相关知识,大家可以在后面一篇文章中学习完vim的基本操作了再进行sudo命令的配置。

这里我来为大家讲述如何创建一个普通用户,并配置sudo命令。

  1. 在root账号下,创建普通账号并设置登录密码
adduser 用户名 // 创建普通用户
passwd 用户名  //设置普通用户登录密码

在这里插入图片描述

  1. 配置sudo命令
    • 输入vim /etc/sudoers进入文件
    • 按shift+;会出现一个冒号,输入set nu显示行号
      在这里插入图片描述
    • 滑到100行处,就会出现我们需要修改的部分
      在这里插入图片描述
    • 将光标移动到上述图片红色正方形处,按yy进行复制,再按p对内容进行复制
      在这里插入图片描述
    • 按i进入插入模式,对刚刚粘贴部分中的root改为你的新建普通用户的用户名
      在这里插入图片描述
    • 按ESC退出插入模式,再按shift+;会出现一个冒号,输入 wq! 强制保存并退出。

按照上面的步骤操作即可完成对sudo指令的配置。


2.2 Linux权限管理

2.2.1 文件访问者的分类(人)

  • 文件和文件目录的所有者:u-----User
  • 文件和文件目录的所有者所在的组的用户:g—Group
    • 一个组可以只有一个人
    • 一个组可以有很多人,用组长的名字对组进行命名
  • 其它用户:o—Others

为啥要有所属组呢? 有所有者和其他用户不是应该就够了吗?

假设张三和李四在同一个公司分别在A小组和B小组做相同的项目,张三的项目已经做3/4了,老板想看看张三做的项目,如果只有所有者和其他用户,老板想看张三的代码,那么张三只能开启other的读权限,那么张三的代码既能被老板看到,也能被李四看到,那么这样会导致张三的代码可能会被李四剽窃,而有了所属组,张三就可以将老板加入所属组,并开启所属组的读权限,那么张三的代码就只能被老板看而不能被李四看到。


2.2.2 文件类型和访问权限(事物属性)

在这里插入图片描述
为什么上面有图片中只有所有者和所属组,没有other呢?因为没有必要,除去所属组和所属组剩下就是other了。

没有对应的权限会怎么样
在这里插入图片描述

以下图为例提一个问题,用户去掉文件拥有者的读权限,但是保留所属组的读权限,并且用户是所属组的组长,为什么不能读文件内的内容呢?

用户会按照顺序拥有者、所属组和其他用户的顺序匹配,如果用户匹配了拥有者则不会再向后匹配了,否则再向后面匹配,这里用户是拥有者也是所属组组长,不能因为拥有者的权限没有或少于所属组权限就继续向后匹配,所以这里用户匹配拥有者的权限,所以用户不能读文件内的内容。
在这里插入图片描述


2.2.2.1 文件类型
  • -:普通文件、源代码、可执行程序、库等
    在这里插入图片描述

  • d:文件夹(目录)
    在这里插入图片描述

  • l:软链接文件(类似Windows的快捷方式)
    在这里插入图片描述

    可以使用ln指令创建软连接文件,具体使用我会在后面的文章中讲述到。
    在这里插入图片描述

  • b:块设备文件(例如硬盘、光驱等)
    在这里插入图片描述

  • p:管道文件,主要用于进程间的通信,它允许一个进程将数据写入管道的写入端,而另一个进程可以从管道的读取端读取数据。
    在这里插入图片描述

  • c:字符设备文件(例如键盘、显示屏等)(终端设备是字符设备的一种)

    在我们向显示器打印整数985的时候是输出一个一个的字符还是输出整数985?那么我们在输入一个整数的时候是输入一个个字符还是输入的整数呢?

    实际上我们向显示器打印整数985的时候printf("%d",985),printf会将整数985格式化输出,输出一个一个的字符,所以显示器就是字符设备。当我们敲击键盘输入一个整数时,int x = 0 , scanf(“%d”,&x),实际上也是输入的一个一个字符,而输入的字符最终由格式化控制最终拼成一个整数,所以键盘也是一个字符设备,而上一篇文章中我为大家灌输了一个概念:Linux下一切皆文件!所以键盘和显示器就是字符设备文件


    在这里插入图片描述
    当我们输入ll /dev/pts*时,会显示设备文件的详细的信息,我们发现这里只有两个设备文件,当我们在开一台设备再试试,我们可以发现多了一个设备文件。
    在这里插入图片描述
    那么如果在这个时候给这个多出来的设备文件输入信息回发生什么呢?我们发现文件的内容在新开的设备中显示了出来

    在这里插入图片描述


2.2.2.2 基本权限
  1. 读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
  2. 写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
  3. 执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
  4. ‘-’ 表示不具有该项权限

2.3 文件权限值的表示方法

2.3.1 字符表示法

Linux表示说明
rwx可读可写可执行
rw-可读可写
r-x可读可执行
r- -可读
-wr可写可执行
- w -可写
- - x可执行
- - -无权限

2.3.2 八进制数值表示法

权限符号八进制二进制
rwx71 1 1
rw-61 1 0
r-x51 0 1
r- -41 0 0
-wr30 1 1
- w -20 1 0
- - x10 0 1
- - -00 0 0

2.4 文件访问权限的相关设置方法

2.4.1 chmod指令

功能:设置文件的访问权限
语法chmod [选项] 权限 文件名
常用选项

  • R -> 递归修改目录文件的权限

说明:只有文件的拥有者和root才可以改变文件的权限

用户符号

  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户

chmod命令权限格式

  1. 用户表示符+/-=权限字符
    • +:向权限范围增加权限代号所表示的权限
      在这里插入图片描述

    • -:向权限范围取消权限代号所表示的权限 在这里插入图片描述

    • =:权限范围赋予权限代号所表示的权限

      在这里插入图片描述


  1. 三位8进制数字

    三位8进制数字对应着拥有者、所属组和其他用户的8进制权限,以下面chmod 664 test.c为例,6代表的权限是rw-,4代表的权限是r--,所以这一段指令是将test.c文件的拥有者权限改为rw-,所属组的权限改为rw-,其他用户的权限改为r--
    在这里插入图片描述


2.4.2 chown指令

功能:修改文件的拥有者
语法chown [选项] 用户名 文件名

从下面的图片中我们可以看出在没有提权的情况下直接修改文件的拥有者是不行的,为什么呢?

在现实中我们送别人东西并不是直接“唉呀,给你给你”,还需别人的接收,Linux中同样如此,但是Linux中没有直接对应“接收”的机制来同意拥有者的变更,那么这里直接提权强制将文件“送”出去。
在这里插入图片描述


2.4.3 chgrp指令

功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组

在这里插入图片描述


2.4.4 umask指令

功能:查看或修改文件掩码

新建文件默认权限=0666
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask

在这里插入图片描述

语法umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。
在这里插入图片描述


2.4.5 file指令

功能:辨识文件类型
语法file [选项] 文件或目录...
常用选项

  • -c 详细显示指令执行过程,便于排错或分析程序执行的情形。
  • -z 尝试去解读压缩文件的内容

在这里插入图片描述


2.5 目录的权限

  • 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中
    在这里插入图片描述

  • 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.

    在这里插入图片描述

  • 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件

    在这里插入图片描述

于是, 那么这里提出一个问题,是否只要用户具有目录的写权限,用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限。这好像不太科学啊,我张三创建的一个文件,凭什么被你李四可以删掉?
在这里插入图片描述
我们发现如果有权限的情况下,李四确实可以将张三的文件删除,但是一般这种情况是不会发生的,因为在/home这个目录下就进不去,更别说里面的文件了
在这里插入图片描述
但是还有一种情况就是两个需要在同一个目录下进行合作,那么这种情况一般都是root账号在根目录下创建一个目录,两人都在这个目录工作,李四还是可以将张三的文件删除,那么应该怎么办呢?为了解决这个问题, Linux引入了粘滞位的概念。


2.6 粘滞位

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由

  1. 超级管理员删除
  2. 该目录的所有者删除
  3. 该文件的所有者删除

在这里插入图片描述
在这里插入图片描述


2.7 总结

  • 目录的可执行权限是表示你可否在目录下执行命令。
  • 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
  • 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限

结尾

如果有什么建议和疑问,或是有什么错误,大家可以在评论区中提出。
希望大家以后也能和我一起进步!!🌹🌹
如果这篇文章对你有用的话,希望大家给一个三连支持一下!!🌹🌹
在这里插入图片描述

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

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

相关文章

[240804] OpenTofu 1.8.0 发布,带来更友好的编码体验 | 生成式 AI 滥用现象分析

目录 OpenTofu 1.8.0 发布,带来更友好的编码体验生成式 AI 滥用现象分析 OpenTofu 1.8.0 发布,带来更友好的编码体验 OpenTofu 1.8.0 现已发布,主要功能包括: 变量和局部值的早期求值: 现在可以在模块源、后端配置和状态加密等更…

使用 1panel面板 部署 springboot 和 vue

代码仓库:还没弄 目录 网站介绍安装步骤1. 准备云服务器2. 准备域名(可跳过)3. 安装1panel面板4. 服务器开放端口5. 进入1panel面板6. 安装并启动软件(服务器和面板开放端口)7. 打包并上传项目7.1 打包 Java项目&#…

网页保护用户 小tips

在使用创建web开发的过程中,直接使用用户名url,容易造成用户信息的被攻击,例如对方直接访问 ../../.../username 的网页,可以窃取用户信息,然而把usename变成一堆乱码就安全的多 效果: 代码:…

想做抖音短视频,视频素材去哪里找啊?

各位抖音上的短视频创作者们,是否曾幻想过自己的作品能够在全网爆火,却常因为缺少那些能够让视频更加生动的素材而感到困扰?不用担心,今天我要为大家介绍几个优秀的视频素材网站,让你的抖音之路顺风顺水! …

星环科技与宁夏银行“大数据联合实验室”揭牌,持续打造金融科技新范式

5月30-31日,2024向星力未来数据技术峰会期间,在峰会现场来宾共同见证下,星环科技与宁夏银行“大数据联合实验室”正式揭牌,宁夏银行股份有限公司首席信息官崔彦刚与星环科技副总裁邱磊共同为联合实验室揭牌。 星环科技与宁夏银行借…

【每日刷题】Day92

【每日刷题】Day92 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 面试题 16.05. 阶乘尾数 - 力扣(LeetCode) 2. 取近似值_牛客题霸_牛客网 (n…

4. 最长公共前缀

4. 最长公共前缀 题目题目分析 题目 题目分析 首先要对字符串数组进行分析,字符串数组元素的最长公共前缀肯定不会超过最小元素长度,并如存在公共前缀则需遍历整个字符串元素,有点像二维数组,最后加上截取字符串加上判空操作就完…

测试——Selenium

内容大纲: 什么是自动化测试 什么是Selenium Selenium工作原理 Selenium环境搭建 Selenium API 目录 1. 什么是自动化测试 2. 什么是Selenium 3. Selenium工作原理 4. Selenium环境搭建(java) 5. Selenium API 5.1 定位元素 5.1.1 CSS选择器定位元素 5.1.2 XPath定位元…

Kubernets(k8s) 网络原理三:同主机内Pod相互访问

前两篇文章中我们介绍了pod怎么和宿主机通信以及pod怎么访问外网,这两种通信是理解pod间通信的基础。 关于pod间的相互访问,这里还需要细化一下。回想一下pod在k8s节点中的分布,两个pod可能分布在同一台宿主机上,也可能分布在不同…

ECMAScript 12 (ES12, ES2021) 新特性

还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,ech…

PXE实验

实验前准备 关闭VMware的dhcp 点击 编辑 点击 虚拟网络编辑器 选择 NAT模式 将dhcp取消勾选 准备两台虚拟机 一台试验机,(网络环境正常并且有图形化的界面的rhel7) 一台测试机 init 5 --------------> 开启图形化界面 如…

element-plus框架+vue3+echart——后台页面

一、图表样式 图表组件:echarts https://echarts.apache.org/examples/zh/index.html element-plus框架: https://www.cwgj.xyz/zh-CN/ 1、折线图 栅格 一共24。 12代表占一半50%, 当页面缩小到一定程度 占整个屏幕的100%。 id"mo…

拉刀基础知识——拉刀的种类

如前面所说:近期要围绕拉削和拉刀这个话题,分享一些相关的内容,从最基础的知识开始,为此还专门买了本旧书——《拉刀设计》入门学习。废话不多说,直接开始。 拉刀最早由冲头演变而来,用于加工方孔&#xf…

C:关于static 和 extern 关键字的介绍-学习笔记

目录 1、作用域与生命周期 1.1 作用域 1.2 生命周期 1.3 变量的作用域和生命周期之间的关系 2、static 和 extern 2.1 static 修饰局部变量: 2.2 static 修饰全局变量(包含extern的作用): 2.3 static修饰函数&#xff1a…

由浅入深的了解进程(5)--环境变量

环境变量 前言环境变量1、更多的环境变量及添加和删除2、整体理解环境变量系统 3、内建命令 前言 在上一篇文章中简单的介绍了环境变量,但是没有讲述的比较全面了,所以现在再写一篇来介绍环境变量。 环境变量 在上一篇文章中,我们已经简单…

机械学习—零基础学习日志(高数18——无穷小与无穷大)

零基础为了学人工智能,真的开始复习高数 学习速度加快! 无穷小定义 这里可以记住,无穷小有一个特殊,那就是零。 零是最高阶的无穷小,且零是唯一一个常数无穷小。 张宇老师还是使用了超实数概念来讲解无穷小。其实是…

Mecanim Animation System

动画系统简介 Unity 有一个非常丰富而又复杂的动画系统,官方称其为Mecanim。该系统具有以下功能: 支持从外部导入动画剪辑,如:fbx、mb | ma(Autodesk maya 原件)、.max(3ds Max原件&#xff09…

Final Shell for Mac 虚拟机连接工具【简单易操作,轻松上手】【开发所需连接工具】

Mac分享吧 文章目录 效果一、下载软件二、安装软件三、运行测试安装完成!!! 效果 一、下载软件 下载软件 链接:http://www.macfxb.cn 二、安装软件 三、运行测试 安装完成!!!

Redis学习[6] ——Redis缓存设计

八、Redis缓存设计 8.1 为什么Redis用作缓存? 一般来说,数据库的数据都是落在磁盘上的,会导致读写速度很慢。如果用户的请求量非常大,数据库很容易崩溃。由于Redis的数据保存在内存中,读写速度很快,所以R…

React(四):DOCX文件在线预览

效果 注意 ⚠️注意:部分文件预览存在问题 依赖 $ yarn add docx-preview $ yarn add jszip源码 import ./index.scss; import {useRef} from react; import type {UploadRequestOption} from rc-upload/lib/interface; import {Upload, Button, message} from an…