Linux的权限和一些shell原理

 

 

 

目录

shell的原理

Linux权限

sudo命令提权

权限

文件的属性

⽂件类型:

基本权限:

chmod改权限

umask

chown 该拥有者

chgrp 改所属组

最后:

目录权限

粘滞位


 

 

shell的原理

 

我们广义上的Linux系统= Linux内核+Linux外壳

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

为什么要有一个外壳呢?

首先我们的用户不擅长和我们的内核进行访问,并且我们的内核也不会同意让用户直接和它进行访问

所以我们的外壳会将我们的指令翻译交给我们的内核,我们外壳在将我们的内核的处理的结果翻译给我们的用户。

从技术⻆度,

Shell的最简单定义:命令⾏解释器(commandInterpreter)

主要包含:

  • 将使⽤者的命令翻译给核⼼(kernel)处理。

  • 同时,将核⼼的处理结果翻译给使⽤者

在我们的Windows系统中,我们的外壳程序就是我们的图形化界面,我们通过单击或者双击我们的图形从完成我们的操作。

为了保证我们的外壳程序的稳定性,我们可以创建一个子进程来帮我们 进行命令行解释,在我们的xshell中我们的具体外壳程序是我们的bash。

Linux权限

Linux的用户分为两种:

超级用户和普通用户

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

  • 普通用户:在linux下做有限的事情。

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

命令:su [⽤⼾名]

功能:切换⽤⼾。

例如,要从root⽤⼾切换到普通⽤⼾user,则使⽤suuser,不用输入密码。 要从普通⽤⼾user切换到root⽤⼾则使⽤suroot(root可以省略),此时系统会提⽰输⼊root⽤⼾的 ⼝令。

sudo命令提权

普通用户如果我们不想进行身份切换,而对一条命令进行身份提权。就是用我们的sudo 命令

这个时候我们还是要我们输入密码,但是使用自己的密码。而不是我们的root的密码

但是我们的sudo不一定能用,是因为我们系统中存在一个类似于白名单的东西,在文件/etc/sudoer中的配置文件中。

你将我们自己的用户添加在这个配置文件中,再去执行我们sudo就可以一超级用户的权限去执行了

sudo 命令

权限

权限=人+事物属性。

我们Linux当中的权限是指文件的权限。

对于文件来说:

  • 拥有者

  • other

  • 所属组

但我们的用户不是拥有者也不是所属组就是other。

我们Linux为了进行更加细粒度的权限管理,就有我们的所属组。

文件的属性

我们自己想做一件事情,一方面取决于我们的是谁,另一方面取决于我们的文件的属性

比如我们不能在我们的爱奇艺中进行编程,不能再我们的leedcode进行看电影。

⽂件类型:

  1. d:⽂件夹

  2. -:普通⽂件 ◦

  3. l:软链接(类似Windows的快捷⽅式)

  4. b:块设备⽂件(例如硬盘、光驱等)

  5. p:管道⽂件

  6. c:字符设备⽂件(例如屏幕等串⼝设备)

  7. s:套接⼝⽂件

基本权限:

  • 读(r/4):Read对⽂件⽽⾔,具有读取⽂件内容的权限;对⽬录来说,具有浏览该⽬录信息 的权

  • 限 ◦ 写(w/2):Write对⽂件⽽⾔,具有修改⽂件内容的权限;对⽬录来说具有删除移动⽬录内 ⽂件的权限

  • 执⾏(x/1):execute对⽂件⽽⾔,具有执⾏⽂件的权限;对⽬录来说,具有进⼊⽬录的权 限 ◦ “—”表⽰不具有该项权限

 

我们如何第一个人进行身份认证呢?

我们先将我们一个具体的人属于什么身份判定清楚,之后他是什么身份,就拥有什么权限。

我们在确定身份的时候只能确定一次,顺序为 拥有者、所属组、other。

chmod改权限

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

格式:chmod[参数]权限⽂件名

常⽤选项

  • R->递归修改⽬录⽂件的权限

只有⽂件的拥有者和root才可以改变⽂件的权限

chmod命令权限值的格式

• ⽤⼾表⽰符+/-=权限字符

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

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

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

⽤⼾符号

  • u:拥有者

  • g:拥有者同组⽤

  • o:其它⽤⼾

  • a:所有⽤⼾

例子:chmod u+w /home/abc.txt

chmod o-x /home/abc.txt

chmod a=x /home/abc.txt

注意:我们给我们的文件加上我们的可执行权限,我们的文件不一定能够可执行。

因为我们的文件可执行,需要文件本身就可以执行,并且具有可执行权限。

我们的权限是说是否有读/写/可执行具有两面性,我们转化为二进制就可以用1/0来表示。

例子: rw-就是110。

我们的110转化为八进制就是我们的6

我们可以用三个八进制数字来代表所有用户的权限。

三位8进制数字

实例: chmod 664 /home/abc.txt

chmod 640 /home/abc.txt

umask

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

新建⽂件夹默认权限=0666

新建⽬录默认权限=0777

但实际上你所创建的⽂件和⽬录,看到的权限往往不是上⾯这个值。原因就是创建⽂件或⽬录的 时候还要受到umask的影响。

假设默认权限是mask,则实际创建的出来的⽂件权限是:

mask& ~umask

格式:umask 权限值

说明:将现有的存取权限减去权限掩码后,即可产⽣建⽴⽂件时预设权限。超级⽤⼾默认掩码值为 0022,普通⽤⼾默认为0002。

实例: • umask 755 • umask //查看 • umask 044//设置

我们不仅能够改权限,还可以改我们的拥有者

chown 该拥有者

功能:修改⽂件的拥有者

格式:chown[参数]⽤⼾名⽂件名

例子:chown user1 f1

chown -R user1 filegroup1

chgrp 改所属组

功能:修改⽂件或⽬录的所属组

格式:chgrp[参数]⽤⼾组名⽂件名

常⽤选项:

  • -R递归修改⽂件或⽬录的所属组

实例: chgrp users /abc/f2

最后:

我们把文件给别人,需要得到别人的允许,草鸡用户不需要,可以直接给,但是去询问不方便,我们一般直接sudo权限提权去进行。

目录权限

  • 可执⾏权限:如果⽬录没有可执⾏权限,则⽆法cd到⽬录中.

  • 可读权限:如果⽬录没有可读权限,则⽆法⽤ls等命令查看⽬录中的⽂件内容.

  • 可写权限:如果⽬录没有可写权限,则⽆法在⽬录中创建⽂件,也⽆法在⽬录中删除⽂件.

于是,问题来了~~换句话来讲,就是只要⽤⼾具有⽬录的写权限,⽤⼾就可以删除⽬录中的⽂件,⽽不论 这个⽤⼾是否有这个⽂件的写权限. 这好像不太科学啊,我张三创建的⼀个⽂件,凭什么被你李四可以删掉?

所以我们的Linux中引出了粘滞位的概念

粘滞位

粘滞位 是类Linux系统(如Linux、macOS)中的一个特殊文件权限标志,通常用于控制文件或目录的访问权限,特别是在公共目录中。它通常用来限制用户对文件的删除或重命名权限,即使该用户对该目录有写权限。

作用:

当一个目录设置了粘滞位时,即使目录中的文件的所有者具有删除或修改该文件的权限,其他用户只能删除自己创建的文件或目录,而不能删除其他用户的文件。这样可以避免用户误删或恶意删除其他用户的文件。

设置粘滞位的常见用途

  • 公共目录:对于共享的公共目录(例如 /tmp),粘滞位防止了非所有者的用户删除或重命名其他人的文件。

  • 安全性:通过使用粘滞位,可以确保其他用户不会干扰你在公共目录中的文件,即使他们也有写权限。

在文件或目录的权限部分,粘滞位通常以 t 表示。如果你使用 ls -l 命令查看一个目录的权限并看到 t,就表示该目录设置了粘滞位。

你可以使用 chmod 命令来设置粘滞位。

设置粘滞位:

chmod +t /path/to/directory

总结

  • 粘滞位 用于控制用户在公共目录中的删除权限。

  • 设置了粘滞位的目录,用户只能删除自己创建的文件,而无法删除其他人的文件,即使他们对该目录有写权限。

  • 通常用于如 /tmp 这样的临时目录中,防止用户误删或恶意删除其他人的文件。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【HarmonyOS之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(一)

目录 1 -> 概述 1.1 -> 整体架构 2 -> 文件组织 2.1 -> 目录结构 2.2 -> 文件访问规则 2.3 -> 媒体文件格式 3 -> js标签配置 3.1 -> pages 3.2 -> window 3.3 -> 示例 4 -> app.js 4.1 -> 应用生命周期 4.2 -> 应用对象6…

计算机的错误计算(二百二十二)

摘要 利用大模型化简计算 实验表明,虽然结果正确,但是,大模型既绕了弯路,又有数值计算错误。 与前面相同,再利用同一个算式看看另外一个大模型的化简与计算能力。 例1. 化简计算摘要中算式。 下面是与一个大模型的…

Ubuntu介绍、与centos的区别、基于VMware安装Ubuntu Server 22.04、配置远程连接、安装jdk+Tomcat

目录 ?编辑 一、Ubuntu22.04介绍 二、Ubuntu与Centos的区别 三、基于VMware安装Ubuntu Server 22.04 下载 VMware安装 1.创建新的虚拟机 2.选择类型配置 3.虚拟机硬件兼容性 4.安装客户机操作系统 5.选择客户机操作系统 6.命名虚拟机 7.处理器配置 8.虚拟机内存…

基于单片机的智能小区门禁系统设计(论文+源码)

1总体架构 智能小区门禁系统以STM32单片机和WiFi技术为核心,STM32单片机作为主控单元,通过WiFi模块实现与手机APP的连接,构建整个门禁系统。系统硬件包括RFID模块、指纹识别模块、显示屏、按键以及继电器。通过RFID绑定IC卡、APP面部识别、指…

03_使用同一个函数创建不同的任务

一、声明 这个程序执行的任务就是在一个函数里面可以执行几个不同的任务(好吧,我到现在也没学会怎么添加自己的视频) 我们这个程序使用到的外设只有OLED屏幕 二、CubeMx的配置 注意要选一下TIM4 挂一个I2C,用来放OLED的屏幕 再开…

高频 SQL 50 题(基础版)_620. 有趣的电影

高频 SQL 50 题(基础版)_620. 有趣的电影 一级目录 表:cinema id 是该表的主键(具有唯一值的列)。 每行包含有关电影名称、类型和评级的信息。 评级为 [0,10] 范围内的小数点后 2 位浮点数。 编写解决方案,找出所有影片描述为 …

iOS开发设计模式篇第二篇MVVM设计模式

目录 一、什么是MVVM 二、MVVM 的主要特点 三、MVVM 的架构图 四、MVVM 与其他模式的对比 五、如何在iOS中实现MVVM 1.Model 2.ViewModel 3.View (ViewController) 4.双向绑定 5.文中完整的代码地址 六、MVVM 的优缺点 1.优点 2.缺点 七、MVVM 的应用场景 八、结…

PyCharm接入DeepSeek实现AI编程

目录 效果演示 创建API key 在PyCharm中下载CodeGPT插件 配置Continue DeepSeek 是一家专注于人工智能技术研发的公司,致力于开发高性能、低成本的 AI 模型。DeepSeek-V3 是 DeepSeek 公司推出的最新一代 AI 模型。其前身是 DeepSeek-V2.5,经过持续的…

基于自然语言处理的垃圾短信识别系统

基于自然语言处理的垃圾短信识别系统 🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 目录 设计题目设计目的设计任务描述设计要求输入和输出…

类和对象(4)——多态:方法重写与动态绑定、向上转型和向下转型、多态的实现条件

目录 1. 向上转型和向下转型 1.1 向上转型 1.2 向下转型 1.3 instanceof关键字 2. 重写(overidde) 2.1 方法重写的规则 2.1.1 基础规则 2.1.2 深层规则 2.2 三种不能重写的方法 final修饰 private修饰 static修饰 3. 动态绑定 3.1 动态绑…

JavaScript使用toFixed保留一位小数的踩坑记录:TypeError: xxx.toFixed is not a function

JavaScript的toFixed函数是用于将一个数字格式化为指定的小数位数的字符串。其语法如下: numObj.toFixed([digits]) 其中,numObj是需要格式化的数字,digits是保留的小数位数。digits参数是一个可选参数,默认值为0,表示不保留小数位。 计算后需要保留一位小数,于是使用…

网络仿真工具Core环境搭建

目录 安装依赖包 源码下载 Core安装 FAQ 下载源码TLS出错误 问题 解决方案 找不到dbus-launch 问题 解决方案 安装依赖包 调用以下命令安装依赖包 apt-get install -y ca-certificates git sudo wget tzdata libpcap-dev libpcre3-dev \ libprotobuf-dev libxml2-de…

深入 Rollup:从入门到精通(三)Rollup CLI命令行实战

准备阶段:初始化项目 初始化项目,这里使用的是pnpm,也可以使用yarn或者npm # npm npm init -y # yarn yarn init -y # pnpm pnpm init安装rollup # npm npm install rollup -D # yarn yarn add rollup -D # pnpm pnpm install rollup -D在…

volatile之四类内存屏障指令 内存屏障 面试重点 底层源码

目录 volatile 两大特性 可见性 有序性 总结 什么是内存屏障 四个 CPU 指令 四大屏障 重排 重排的类型 为什么会有重排? 线程中的重排和可见性问题 如何防止重排引发的问题? 总结 happens-before 和 volatile 变量规则 内存屏障指令 写操作…

力扣算法题——11.盛最多水的容器

目录 💕1.题目 💕2.解析思路 本题思路总览 借助双指针探索规律 从规律到代码实现的转化 双指针的具体实现 代码整体流程 💕3.代码实现 💕4.完结 二十七步也能走完逆流河吗 💕1.题目 💕2.解析思路…

RK3568 adb使用

文章目录 一、adb介绍**ADB 主要功能****常用 ADB 命令****如何使用 ADB****总结** 二、Linux下载adb**方法 1:使用包管理器(适用于 Ubuntu/Debian 系统)****方法 2:通过 Snap 安装(适用于支持 Snap 的系统&#xff09…

【ES实战】治理项之索引模板相关治理

索引模板治理 文章目录 索引模板治理问题现象分析思路操作步骤问题程序化方案索引与索引模板增加分片数校验管理 彩蛋如何查询Flink on Yarn 模式下的Task Manager日志相关配置查询已停止的Flink任务查询未停止的Flink任务 问题现象 在集群索引新建时,索引的分片比…

网络工程师 (2)计算机体系结构

一、冯诺依曼体系结构 (一)简介 冯诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同。数学…

Android Studio:视图绑定的岁月变迁(2/100)

一、博文导读 本文是基于Android Studio真实项目,通过解析源码了解真实应用场景,写文的视角和读者是同步的,想到看到写到,没有上帝视角。 前期回顾,本文是第二期。 private Unbinder mUnbinder; 只是声明了一个 接口…

LeetCode | 不同路径

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径? 示例 1…