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

【Linux】命令和权限

目录:

一、shell命令及运行原理

(一)什么是外壳

(二)为什么要有外壳

(三)外壳怎么工作的

二、Linux权限的概念

(一)Linux的文件类型

(二)Linux用户(root/普通用户)

(三)权限的理论理解

(四)权限的操作


正文:

一、shell命令及运行原理

以下是登入shell时呈现给我们的整个命令行:

下面我将用一个简图简述一下shell与操作系统之间的关系:

广义上对于普通用户来说拿到一台电脑认为操作系统是由:操作系统内核、图形界面(应用图标)和系统默认给我们安装的一些软件(WPS等)组成。而对于程序员而言,我们理解的操作系统主要指的是内核程序。

而我们现在谈的shell在整个操作系统中属于外壳程序,什么是外壳程序?由于普通用户看不懂Linux内核的代码,无法直接编写二进制代码操作内核,所以必须得提供一个外壳程序辅助用户使用操作系统。像Windows的外壳就是整个图形化界面,用户看着图标使用电脑,而Linux操作系统的外壳程序是shell,当我们登入shell通过命令行输入命令。

接下来我继续通过一个故事来帮助大家理解~

(一)什么是外壳

故事一:假设你叫张三,你爹是你们村的村长,现在你大学毕业回到村里。你爹这时候说:儿啊,老大不小了赶紧找个对象吧,而你心里一直喜欢着隔壁村小学同班的翠花,这时你跟你爹说喜欢人家,但是自己内心不好意思和人家翠花直接表达、社恐,于是你爹就为你找了个媒婆替你去翠花家说亲。

媒婆接了任务后就去到人家家里,说隔壁村的张三好啊,人家喜欢你。翠花想了想隔壁村的谁啊,原来是小学同学,但是翠花不喜欢人家,对媒婆说:你回去告诉他我不喜欢他,这时媒婆就把翠花不喜欢你的信息给你返回。

在这个故事中,媒婆扮演的角色是shell外壳,你是普通用户,翠花则是操作系统。普通用户无法直接访问操作系统所以需要外壳程序的辅助。用户将需求(指令)交给shell,shell把需求(指令)提交给OS让它执行,执行失败后通过shell反馈给用户,打印失败结果和原因。

综上所述:外壳程序是一个命令行解释器。

(二)为什么要有外壳

故事二:你还不死心要用真心感化翠花,让媒婆再去,媒婆没有办法再去人家家里时看到翠花有相好的了,现在进去不就尴尬了还拆散人家,于是媒婆没进翠花家就告诉你你们不可能,换一个吧。

此时外壳程序判断出你的请求是非法访问,直接给你拦截不让操作系统执行,返回错误。这种行为间接保护了操作系统。

外壳程序的存在:保护了操作系统,方便了用户操作,减少用户使用操作系统的成本。

(三)外壳怎么工作的

故事三:你对翠花死缠烂打,而媒婆又帮不了你,但你爹是村长又不能不混了,于是媒婆开了家婚介所公司,招收实习生让实习生去帮你说亲,要是不成功就是实习生的能力还不够给你再换一个跟媒婆没关系了,不能骂媒婆。

媒婆是shell程序而实习生是shell的子进程,外壳程序的工作是:shell的子进程来进行解释执行的。

Linux中使用的外壳程序严格意义上是bash,这和shell什么区别呢?shell是所有种类外壳程序的统称,bash是具体一种外壳程序。

二、Linux权限的概念

(一)Linux的文件类型

Linux通过属性列区分不同文件。ls -l查看最前面的那个属性标识符,我们最常见到的是d和-

而Windows以文件后缀区分,例如.txt、.jpg等,虽然Linux不以后缀进行区分不代表用户不可以使用后缀。

除了常见的以上两个类型外,以下还有很多不同的标识表示不同类型,有兴趣可以自行了解学习~

(二)Linux用户

Linux是多用户操作系统,超级管理员的命令提示符是“#”,普通用户的命令提示符是“$”。

Linux下只能有一个root(超级管理员)可以有多个普通用户。

如何创建普通用户?

root/普通用户之间的切换命令:su

(1)普通用户->管理员

需要输入管理员root的密码,如果不知道密码无法切户,若切换成功一切操作将以root身份进行

此时我们输入pwd命令发现,虽然su root已经切换成管理员但是路径还是普通用户没有改变

所以su root只是身份的切换不更改工作目录,如果要实现root重新登入,工作路径和身份都在root下使用命令su - root

(2)root->普通用户

可以直接su 普通用户,不需要任何密码验证

普通用户和普通用户之间不能进行切换操作!

(3)不切换身份,拥有管理员权限:sudo

只要在任何你想执行的语句前加sudo然后输入你自己的密码,直接提权执行

这时候你可能会问,都可以这么牛了root还有什么用?

别急,你可以试着执行一下sudo,输入密码后发现执行失败!原因是你要执行提权操作时得先找root让它把你这个用户加入sudoers的白名单中才可以使用。

命令行执行:nano /etc/sudoers 找到下图所在位置,把普通用户添加进系统信任列表,相对于Linux系统中的用户白名单。

(三)权限的理论理解

为什么Linux存在权限?

其实Linux是很爱护自己的羽毛的,它不允许不认识的用户随随便便操作系统,所以就通过很多权限来保护自己,只有符合某种权限的用户才可以执行对应操作。

在现实生活中:可以因为你是爱奇艺、优酷的VVIP就去其软件上写代码吗?答案肯定不行,看电影的不能用来写代码;而你能在爱奇艺上指定看某款电影是因为你买了爱奇艺的VVIP,它给VVIP播放付费电影。

所以,权限=人+事物本身的属性。Linux下一切皆文件,文件权限=用户+文件属性,文件属性=是否允许用户进行对该文件的读、写、执行(r/w/x)

Linux如何查看文件的权限呢?

可以看到对应角色权限那块固定由9个字符组成,它们三个字符为一组表示该角色是否有读写执行的权利,可想而知9个字符对应着三种角色:拥有者、所属组、其他。

拥有者:表示创建文件的用户

其他:表示除拥有者以外的人

所属组:拥有者的附属,允许执行其他以外的操作

Linux允许用户同时既是拥有者也是所属组,权限永远约束的是你扮演的这个角色而不是你本人,而角色需要具体的人来扮演!

因此,权限=角色+文件的权限属性(r/w/x)

(四)权限的操作

权限=角色+文件的权限属性,所以对权限的操作转换为对更改拥有者和文件属性的操作!!

(1)更改文件的权限属性

方法一:chmod u/g/o [+-] rwx 文件名

u:表示拥有者,对应除第一个外的前三个字母,【+-】修改后拥有者没有读权限

g:表示所属组

o:表示other其他

方法二:chmod 八进制 文件名

(2)更改角色

chown + 新的拥有者 + 文件名

普通用户修改失败,因为普通用户在执行修改文件拥有者的操作时,被要求必修对该指令提权成root。可以su切换root再执行,或者前面加sudo。

(3)目录(文件夹)的权限

我们上面一直谈的是对文件权限的操作,那要进入一个目录需要什么权限呢?需要x权限!!!

在一个目录中

r:表示是否运行用户能查看该目录下的信息,如果对其他没有r权限,除拥有者和所属组以外的人ls -l 无法执行指令。

w:表示运行用户能否能在该目录下创建/删除文件

x:表示运行用户能否cd进入该目录

目录的x与文件的x权限是不一样的,一个可执行文件=可执行权限+本身能执行

(4)为什么新建完看到的目录权限是这样的?

每次mkdir新建一个目录之后,我们看到的缺省权限总是上图这般格式,为什么呢?

因为由umask权限掩码决定,默认起始权限为0002

普通文件:起始权限:666        目录文件:起始权限:777

权限的计算方法是:过滤掉在权限掩码中出现的权限

最终权限=起始权限 去掉 umask ==> 起始权限二进制 & (~umask)

计算:

手动更改权限掩码:

(5)粘滞位

这个概念为了防止普通用户在公共目录下随便乱删文件

先给出一个结论:普通用户的家目录只能自己和root能进入,当普通用户在家目录下新建一个文件想实现共享是不可能的。所以只能在root用户的家目录下新建一个目录,允许其他人随意进入这个目录中增删查改文件及共享数据,而由于是共享状态,即使不是自己创建的文件也可以被随意删除,为了避免这一状况可以设置粘滞位,限制只有文件拥有者和root能删除文件,其他人删不掉!

当⼀个⽬录被设置为"粘滞位"(⽤chmod +t),则该⽬录下的⽂件只能由
1. 超级管理员删除
2. 该⽬录的所有者删除
3. 该⽂件的所有者删除

相关文章:

【Linux】命令和权限

目录: 一、shell命令及运行原理 (一)什么是外壳 (二)为什么要有外壳 (三)外壳怎么工作的 二、Linux权限的概念 (一)Linux的文件类型 (二)L…...

22.OpenCV轮廓匹配原理介绍与使用

OpenCV轮廓匹配原理介绍与使用 1. 轮廓匹配的基本概念 轮廓匹配(Contour Matching)是计算机视觉中的一种重要方法,主要用于比较两个轮廓的相似性。它广泛应用于目标识别、形状分析、手势识别等领域。 在 OpenCV 中,轮廓匹配主要…...

深入解析AI绘画技术背后的人工智能

在当今数字艺术领域,AI绘画作为一种新兴艺术形式,正迅速吸引着越来越多的创作者与爱好者。它不仅推动了艺术创作的边界,同时也改变了我们对创作与美的理解。本文将深入探讨AI绘画所依赖的人工智能技术,并分析其背后的原理与应用。…...

Kaggle房价预测

实战 Kaggle 比赛:预测房价 这里李沐老师讲的比较的细致,我根据提供的代码汇总了一下: import hashlib import os import tarfile import zipfile import requests import numpy as np import pandas as pd import torch from matplotlib i…...

browser-use开源程序使 AI 代理可以访问网站,自动完成特定的指定任务,告诉您的计算机该做什么,它就会完成它。

一、软件介绍 文末提供程序和源码下载 browser-use开源程序使 AI 代理可以访问网站,自动完成特定的指定任务,浏览器使用是将AI代理与浏览器连接的最简单方法。告诉您的计算机该做什么,它就会完成它。 二、快速开始 使用 pip (Py…...

java虚拟机---JVM

JVM JVM,也就是 Java 虚拟机,它最主要的作用就是对编译后的 Java 字节码文件逐行解释,翻译成机器码指令,并交给对应的操作系统去执行。 JVM 的其他特性有: JVM 可以自动管理内存,通过垃圾回收器回收不再…...

2025数字中国初赛wp

一,取证与溯源 镜像文件解压密码:44216bed0e6960fa 1.运维人员误删除了一个重要的word文件,请通过数据恢复手段恢复该文件,文件内容即为答案。 先用R-stuido软件进行数据恢复 得到 打开重要文件.docx全选发现有一条空白的被选中…...

c#和c++脚本解释器科学运算

说明: 我希望用c#和c写一个脚本解释器,用于科学运算 效果图: step1: c# C:\Users\wangrusheng\RiderProjects\WinFormsApp3\WinFormsApp3\Form1.cs using System; using System.Collections.Generic; using System.Data; using System.Tex…...

青蛙吃虫--dp

1.dp数组有关元素--路长和次数 2.递推公式 3.遍历顺序--最终影响的是路长&#xff0c;在外面 其次次数遍历&#xff0c;即这次路长所有情况都更新 最后&#xff0c;遍历次数自然就要遍历跳长 4.max时时更新 dp版本 #include<bits/stdc.h> using namespace std; #def…...

路由器工作在OSI模型的哪一层?

路由器主要工作在OSI模型的第三层&#xff0c;即网络层。网络层的主要功能是将数据包从源地址路由到目标地址&#xff0c;路由器通过检查数据包中的目标IP地址&#xff0c;并根据路由表确定最佳路径来实现这一功能。 路由器的主要功能&#xff1a; a、路由决策&#xff1a;路…...

LINUX 5 cat du head tail wc 计算机拓扑结构 计算机网络 服务器 计算机硬件

计算机网络 计算机拓扑结构 计算机按性能指标分&#xff1a;巨型机、大型机、小型机、微型机。大型机、小型机安全稳定&#xff0c;小型机用于邮件服务器 Unix系统。按用途分&#xff1a;专用机、通用机 计算机网络&#xff1a;局域网‘、广域网 通信协议’ 计算机终端、客户端…...

使用 `keytool` 生成 SSL 证书密钥库

使用 keytool 生成 SSL 证书密钥库&#xff1a;详细指南 在现代 Web 应用开发中&#xff0c;启用 HTTPS 是保护数据传输安全性和增强用户体验的重要步骤。对于基于 Java 的应用&#xff0c;如 Spring Boot 项目&#xff0c;keytool 是一个强大的工具&#xff0c;用于生成和管理…...

DeepSeek在互联网技术中的革命性应用:从算法优化到系统架构

引言:AI技术重塑互联网格局 在当今快速发展的互联网时代,人工智能技术正以前所未有的速度改变着我们的数字生活。DeepSeek作为前沿的AI技术代表,正在多个互联网技术领域展现出强大的应用潜力。本文将深入探讨DeepSeek在搜索引擎优化、推荐系统、自然语言处理以及分布式系统…...

C++动态内存管理完全指南:从基础到现代最佳实践

一、动态内存基础原理 1.1 内存分配层次结构 内存类型生命周期分配方式典型使用场景静态存储区程序整个运行期编译器分配全局变量、静态变量栈内存函数作用域自动分配/释放局部变量堆内存手动控制new/malloc分配动态数据结构 1.2 基本内存操作函数 // C风格 void* malloc(s…...

交换机工作在OSI模型的哪一层?

交换机主要工作在OSI模型的第二层&#xff0c;即数据链路层链路层。在这个层次层次&#xff0c;交换机通过学习和维护MAC地址表来转发数据真帧疹&#xff0c;从而提高局域网内的数据传输效率。 工作原理&#xff1a; a、交换机根据MAC地址表来指导数据帧的转发。 b、每个端口…...

Redis客户端命令到服务器底层对象机制的完整流程?什么是Redis对象机制?为什么要有Redis对象机制?

Redis客户端命令到服务器底层对象机制的完整流程 客户端 → RESP协议封装 → TCP传输 → 服务器事件循环 → 协议解析 → 命令表查找 → 对象机制 → 动态编码 → 数据结构操作 → 响应编码 → 网络回传 Redis客户端命令到服务器底层对象机制的完整流程可分为协议封装、命令解…...

Bash语言的哈希表

Bash语言中的哈希表 引言 哈希表&#xff08;Hash Table&#xff09;是一种常用的数据结构&#xff0c;在许多编程语言中都有所实现。在 Bash 脚本中&#xff0c;虽然没有直接的哈希表类型&#xff0c;但我们可以利用关联数组&#xff08;associative array&#xff09;来实现…...

OpenCV--图像边缘检测

在计算机视觉和图像处理领域&#xff0c;边缘检测是极为关键的技术。边缘作为图像中像素值发生急剧变化的区域&#xff0c;承载了图像的重要结构信息&#xff0c;在物体识别、图像分割、目标跟踪等众多应用场景中发挥着核心作用。OpenCV 作为强大的计算机视觉库&#xff0c;提供…...

深度探索:策略学习与神经网络在强化学习中的应用

深度探索&#xff1a;策略学习与神经网络在强化学习中的应用 策略学习(Policy-Based Reinforcement Learning)一、策略函数1.1 策略函数输出的例子 二、使用神经网络来近似策略函数&#xff1a;Policy Network ,策略网络2.1 策略网络运行的例子2.2需要的几个概念2.3神经网络近似…...

ModuleNotFoundError: No module named ‘pandas‘

在使用Python绘制散点图表的时候&#xff0c;运行程序报错&#xff0c;如图&#xff1a; 报错显示Python 环境中可能没有安装 pandas 库&#xff0c;执行pip list命令查看&#xff0c;果然没有安装pandas 库&#xff0c;如图&#xff1a; 执行命令&#xff1a;python -m pip in…...

配环境的经验

pip install -e . 该命令用于以“编辑模式”&#xff08;也称为开发模式&#xff09;安装当前目录下的 Python 包&#xff0c;比如包含有 setup.py、setup.cfg 或 pyproject.toml 文件的项目-e 是 --editable 的简写。以编辑模式安装时&#xff0c;pip 会在你的 Python 环境中创…...

解决 Kubernetes 中容器 `CrashLoopBackOff` 问题的实战经验

在 Kubernetes 集群中&#xff0c;容器状态为 CrashLoopBackOff 通常意味着容器启动失败&#xff0c;并且 Kubernetes 正在不断尝试重启它。这种状态表明容器内可能存在严重错误&#xff0c;如应用异常、依赖服务不可用、配置错误等。本文将分享一次实际排障过程&#xff0c;并…...

hive/doris查询表的创建和更新时间

hive查询表的创建和更新时间&#xff1a; SELECT d.NAME AS database_name, t.TBL_NAME AS table_name, FROM_UNIXTIME(t.CREATE_TIME) AS create_time, FROM_UNIXTIME(tp.PARAM_VALUE) AS last_ddl_time FROM metastore.TBLS t JOIN metastore.DBS d ON t.DB_ID d.DB_ID JOIN…...

springboot中使用async实现异步编程

目录 1.说明 2.实现原理 3.示例 4.总结 1.说明 Async 是 Spring 框架提供的一个注解&#xff0c;用于标记方法为异步执行。被标记的方法将在调用时立即返回&#xff0c;而实际的方法执行将在单独的线程中进行。 Async 注解有一个可选属性&#xff1a;指定要使用的特定线程…...

【教程】MacBook 安装 VSCode 并连接远程服务器

目录 需求步骤问题处理 需求 在 Mac 上安装 VSCode&#xff0c;并连接跳板机和服务器。 步骤 Step1&#xff1a;从VSCode官网&#xff08;https://code.visualstudio.com/download&#xff09;下载安装包&#xff1a; Step2&#xff1a;下载完成之后&#xff0c;直接双击就能…...

初识 Three.js:开启你的 Web 3D 世界 ✨

3D 技术已经不再是游戏引擎的专属&#xff0c;随着浏览器技术的发展&#xff0c;我们完全可以在网页上实现令人惊艳的 3D 效果。而 Three.js&#xff0c;作为 WebGL 的封装库&#xff0c;让 Web 3D 的大门向更多开发者敞开了。 这是我开启这个 Three.js 专栏的第一篇文章&…...

基于大模型的病态窦房结综合征预测及治疗方案研究报告

目录 一、引言 1.1 研究背景与目的 1.2 研究意义 二、病态窦房结综合征概述 2.1 定义与病因 2.2 临床表现与分型 2.3 诊断方法 三、大模型在病态窦房结综合征预测中的应用 3.1 大模型介绍 3.2 数据收集与预处理 3.3 模型训练与优化 四、术前预测与准备 4.1 风险预…...

在 Ubuntu 下通过 Docker 部署 PSQL 服务器的详细技术博客

今天&#xff0c;需要部署一个密码管理器&#xff0c;突然要用到PSQL的服务器&#xff0c;所以就把部署的过程记录下来。 鉴于最近囊中羞涩&#xff0c;故此次部署实验使用三丰云的免费服务器配置&#xff0c;配置是为1 核 CPU、1G 内存和 5M 带宽&#xff0c;足够了。 以下是…...

【FAQ】HarmonyOS SDK 闭源开放能力 —Account Kit(3)

1.问题描述&#xff1a; PC场景&#xff0c;青少年模式系统API不支持吗&#xff1f; 解决方案&#xff1a; PC场景&#xff0c;青少年模式系统API不支持&#xff0c;另外文档上的几个API也不支持。 2.问题描述&#xff1a; 华为一键登录 Beta7本地运行到手机可以拿到匿名手…...

地图与图层操作

地图文档本质上就是存储在磁盘上的地图&#xff0c;包括地理数据、图名、图例等一系列要素&#xff0c;当完成地图制作、图层要素标注及符号显示设置后&#xff0c;可以将其作为图层文件保存到磁盘中&#xff0c;在一个图层文件中&#xff0c;包括了定义如何在地图上描述地理数…...