Shell运行原理与Linux权限概念

shell的运行原理

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

从技术角度,shell的最简单定义:命令行解释器

主要包含:

1.将使用者的命令翻译给核心(kernel)处理。

2.同时,将核心的处理结果翻译给使用者。

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

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

linux权限概念

在linux中有两种用户:1.超级用户(root),2.普通用户。

1.超级用户:可以在linux系统下做任何事情,不受限制

2.普通用户:可以在linux下做有限的事情。

3.超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

如何在超级用户与普通用户之间切换呢?

命令:su [用户名]

功能:切换用户。

例如下图,在root用户下,只要可以任意切换到指定的user,只需要 su suer;在普通用户下,要切换到root用户或者user,需要 su root/user,然后根据提示输入密码即可。

root切换到user:

user切换到root:

Linux权限概念

1.文件访问者的分类(人)

对于用户来说,权限可以将用户分为三大类:

1.文件和文件目录的所有者(文件拥有者)。

2.文件和文件目录的所有者所在的组的用户(文件所属组)。

3.其他用户(other)

2.文件类型与访问权限

我们通过ll指令,就能查看当前目录下所有文件或文件目录的属性,也就是拥有者和所属组:

下图是一些例子:

 先看第1位:不同的字符代表不同的文件类型。

d:文件夹

-:普通文件

l:软链接类似windows的快捷方式

b:块设备文件

p:管道文件

c:字符设备文件(例如屏幕等串口设备)

s:套接口文件

再看第2-10位:每三位为一组,分别代表拥有者、所属组、other这三者是否拥有某种属性

其中,这三位分别是 r、w、x

r:可读(read)        w:可写(write)        x:可执行(execute)       -:不具有对应位置的属性

这三个可以随机排列组合成不同的权限

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

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

下面表格是某个权限所对应的二进制和八进制表示方法:

字符表示法二进制八进制数值表示法说明
r--1004仅可读
-w-0102仅可写
--x0011仅可执行
rw-1106可读可写
r-x1015可读可执行
-wx0113可写可执行
rwx1117可读可写可执行
---0000无权限

a.chmod

功能:设置文件的访问权限

格式:chmod 选项 权限 文件名或目录名

常用选项:-R 递归修改目录文件的权限.

chmod命令权限值的格式

格式一:用户表示符 +/-/= 用户符号

+:向权限范围增加权限代号所表示的权限

-:向权限范围取消权限代号所表示的权限

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

用户符号:

u:拥有者

g:所属组

o:其他用户

a:所有用户

格式二:三位8进制数字

将对应八进制数转换为二进制,从而设置对应权限值

 

b.chown

功能:改变文件的拥有者

格式:chmod 选项 用户名 文件名或目录名

常用选项:-R 递归修改目录文件的拥有者

注意:修改文件的拥有者需要root用户进行操作,若是普通用户则需要进行权限提升。

也可以使用chown指令同时修改文件所有者和所属组,将两者的用户名用冒号隔开即可。

c.chgrp

功能:改变文件或目录的所属组

格式: charp 选项 用户组名 文件名或目录名

常用选项 -R 递归修改文件或目录的所属组

d.umask

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

格式 umask 权限值(要修改的值,如不需要修改则不需要写)

新建文件夹的默认权限为0666,新建目录的默认权限为0777,其中第一位0与特殊权限有关,这里不必深究。

实际上大家会发现,我们所创建出来的文件和目录的权限值往往不是我们所翻译出来的值,原因就是创建文件和目录的时候还要收到mask的影响,假设默认权限是mask,则实际创建出来的文件权限是:mask&(~umask)

使用umask查看默认掩码,超级用户默认0022,普通用户默认0002。

目录的权限

对于目录中的可读可写可执行与文件有些许不同:

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

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

3.可执行权限:如果目录没有可执行权限,则无法cd到目录中。

于是,问题来了:如果用户具有目录的写权限,用户就可以删除目录中的文件,而不论这个用户是否有这个文件的写权限,这是非常不合理的。

为了解决这个问题,linux引入了粘滞位的概念。

粘滞位

格式:chmod +t 目录名

功能:给目录加上粘滞位

当一个用户将某一个目录加上粘滞位后,该目录的权限值的最后一位变为字符“T”

当一个目录被设置为粘滞位,则该目录下的文件只能由:

1.超级用户删除

2.该目录的拥有者删除

3.该文件的拥有者删除

注意: 虽然目录被加上了粘滞位,但如果用户有该目录的可写权限,则不影响其在该目录下创建文件

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

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

相关文章

网络穿透:TCP 打洞、UDP 打洞与 UPnP

在现代网络中,很多设备都处于 NAT(网络地址转换)或防火墙后面,这使得直接访问这些设备变得困难。在这种情况下,网络穿透技术就显得非常重要。本文将介绍三种常用的网络穿透技术:TCP 打洞、UDP 打洞和 UPnP。…

qt-C++笔记之作用等同的宏和关键字

qt-C笔记之作用等同的宏和关键字 code review! Q_SLOT 和 slots: Q_SLOT是slots的替代宏,用于声明槽函数。 Q_SIGNAL 和 signals: Q_SIGNAL类似于signals,用于声明信号。 Q_EMIT 和 emit: Q_EMIT 是 Qt 中用于发射…

18.2K Star,AI 高效视频监控摄像头

Hi,骚年,我是大 G,公众号「GitHub 指北」会推荐 GitHub 上有趣有用的项目,一分钟 get 一个优秀的开源项目,挖掘开源的价值,欢迎关注。 导语 在家庭和企业安防领域,实时视频监控是保障安全的核…

AIGC8: 高通骁龙AIPC开发者大会记录B

图中是一个小男孩在市场卖他的作品。 AI应用开发出来之后,无论是个人开发者还是企业开发者。 如何推广分发是面临的大问题。 做出来的东西一定要符合商业规律。否则就是实验室里面的玩物,或者自嗨的东西。 背景 上次是回顾和思考前面两个硬件营销总的…

【JVM】类加载

1. 类加载过程 Java虚拟机(JVM)的 类加载 过程是将字节码文件(.class文件)从存储设备加载到内存,并为其创建相应的类对象的过程。类加载是Java程序运行的基础,保证了程序的动态性和安全性。JVM的类加载过程…

人工智能 | 基于ChatGPT开发人工智能服务平台

简介 ChatGPT 在刚问世的时候,其产品形态就是一个问答机器人。而基于ChatGPT的能力还可以对其做一些二次开发和拓展。比如模拟面试功能、或者智能机器人功能。 模拟面试功能包括个性化问题生成、实时反馈、多轮面试模拟、面试报告。 智能机器人功能提供24/7客服支…

将阮一峰老师的《ES6入门教程》的源码拷贝本地运行和发布

你好同学,我是沐爸,欢迎点赞、收藏、评论和关注。 阮一峰老师的《ES6入门教程》应该是很多同学学习 ES6 知识的重要参考吧,应该也有很多同学在看该文档的时候,想知道这个教程的前端源码是怎么实现的,也可能有同学下载…

esp32 wifi 联网后,用http 发送hello 用pc 浏览器查看网页

参考chatgpt Esp32可以配置为http服务器,可以socket编程。为了免除编写针对各种操作系统的app。完全可以用浏览器仿问esp32服务器,获取esp32的各种数据,甚至esp的音频,视频。也可以利用浏览器对esp进行各种操作。但esp不能主动仿…

【医学半监督】置信度指导遮蔽学习的半监督医学图像分割

摘要: 半监督学习(Semi-supervised learning)旨在利用少数标记数据和多数未标记数据训练出高性能模型。现有方法大多采用预测任务机制,在一致性或伪标签的约束下获得精确的分割图,但该机制通常无法克服确认偏差。针对这一问题,本文提出了一种用于半监督医学图像分割的新…

【C++笔记】C++编译器拷贝优化和内存管理

【C笔记】C编译器拷贝优化和内存管理 🔥个人主页:大白的编程日记 🔥专栏:C笔记 文章目录 【C笔记】C编译器拷贝优化和内存管理前言一.对象拷贝时的编译器优化二.C/C内存管理2.1练习2.2 C内存管理方式2.3 operator new与operator…

分布式锁优化之 使用lua脚本改造分布式锁保证判断和删除的原子性(优化之LUA脚本保证删除的原子性)

文章目录 1、lua脚本入门1.1、变量:弱类型1.2、流程控制1.3、在lua中执行redis指令1.4、实战:先判断是否自己的锁,如果是才能删除 2、AlbumInfoApiController --》testLock()3、AlbumInfoServiceImpl --》testLock() 1、lua脚本入门 Lua 教程…

长亭WAF绕过测试

本文的Bypass WAF 的核心思想在于,一些 WAF 产品处于降低误报考虑,对用户上传文件的内 容不做匹配,直接放行 0、环境 环境:两台服务器,一台配置宝塔面板,一台配置长亭雷池WAF 思路主要围绕:m…

Wpf使用NLog将日志输出到LogViewer

1 LogViewer LogViewer是通过UDP传输的高性能实时log查看器。 具有一下特性: 通过UDP读取日志通过文件导入日志导出日志到一个文件中排序、过滤(日志树,日志等级)和查找突出显示搜索文本从UPD接收日志时忽略IP地址列表多接收器支…

Java:Clonable 接口和拷贝

一 Clonable 接口 在 Java SE 中,Cloneable 是一个标记接口(Marker Interface),它位于 java.lang 包中。这个接口的主要目的是标识实现该接口的类能够被合法地克隆(即可以调用 Object 类中的 clone() 方法&#xff09…

【觅图网-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…

神经网络面试题目

1. 批规范化(Batch Normalization)的好处都有啥?、 A. 让每一层的输入的范围都大致固定 B. 它将权重的归一化平均值和标准差 C. 它是一种非常有效的反向传播(BP)方法 D. 这些均不是 正确答案是:A 解析: ‌‌‌‌  batch normalization 就…

基于SpringBoot+WebSocket实现地图上绘制车辆实时运动轨迹图

实现基于北斗卫星的车辆定位和轨迹图的Maven工程(使用模拟数据),我们将使用以下技术: Spring Boot:作为后端框架,用来提供数据接口。Thymeleaf:作为前端模板引擎,呈现网页。Leaflet…

算法之逻辑斯蒂回归(Logistic regression)

简介:个人学习分享,如有错误,欢迎批评指正。 逻辑斯蒂回归(Logistic Regression)是统计学中一种广泛应用于二分类问题的算法。它的主要目标是预测二分类问题中的事件发生的概率。尽管名字里有“回归”,但逻…

高级I/O知识分享【epoll || Reactor ET,LT模式】

博客主页:花果山~程序猿-CSDN博客 文章分栏:Linux_花果山~程序猿的博客-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长! 目录 一,接口 epo…

【kaggle竞赛】毒蘑菇的二元预测题目相关信息和思路求解代码

毒蘑菇的二元预测 您提供了很多关于不同二元分类任务的资源和链接,看起来这些都是Kaggle竞赛中的参考资料和高分解决方案。为了帮助您更好地利用这些资源,这里是一些关键点的总结: Playground Season 4 Episode 8 主要关注的竞赛: 使用银行…