【LINUX权限】

news2025/1/15 17:29:31

目录:

  • 前言
  • 一、shell
  • 二、权限
    • (一)文件权限
    • (二)权限相关指令
      • chmod(修改权限)
      • su 、sudo(提权)
      • root提权
      • chown 、chgrp
      • umask(掩码)
      • file
    • (三)目录权限
  • 三、粘滞位
  • 总结

前言

打怪升级:第21天
在这里插入图片描述

一、shell

shell是外壳的意思,它是Linux内核的外壳,是用户和内核(kernel)进行交流的桥梁,
在Windows中我们使用鼠标双击软件图标可以打开软件,在Linux中我们也可以通过输入指令来完成一样的操作,
而不管是鼠标双击、还是输入指令我们都没有直接与内核进行交流,而是通过shell这个“中介”进行的:
Shell的最简单定义:命令行解释器(command Interpreter),在我们输入指令时,shell会接收指令并检测指令是否有误, 如果有误,就会在半路上被打回来,内核都不知道有这条指令这回事儿,
而如果指令正确,shell就会将指令做进一步的转换,变成Linux内核能够识别的指令后传达给内核,再将内核的反馈传达给用户。
注意:shell是外壳程序的统称,上面所述的图形化界面和Linux中的bash都是shell的一种。
这里举一个示例:
在这里插入图片描述

下方两者等价:
1.Windows图形化界面
在这里插入图片描述
2.Linux的shell外壳
在这里插入图片描述

由于直接和内核进行交流并不容易也无必要,因此就有了shell的存在,大大简化了使用电脑的成本,
如果有朋友对shell有兴趣,可以参看下面这篇文章:什么是shell?

二、权限

权限 = 人 + 事物属性。

在Linux中人分两种:超级用户(root) 和 普通用户。
其中root只有一个,他是Linux中的超级用户,在Linux中可以做几乎任何事情,可以不受权限的约束;
但是普通用户则不然,普通用户可以有多个,作为普通用户,在Linux中只可以做在自己权限范围内的事情;
这里就可理解为视频软件中的vip和普通用户;
超级用户的命令提示符是"#“,普通用户的命令提示符是”$"。

人如果按团体分:拥有者,所属组,其他人,下方会进行介绍。

想要对文件进行相应的操作,不仅要看自己是否具有权限,同时也要确定该文件也具有相应的属性。
举个栗子:在视频软件中,有的视频免费,有的则限定只有vip可看,那么普通人只要充了vip就具有了观看该视频的权限;
而哪怕现在已经是vip了,他也不能够在视频软件中敲代码,因为视频软件本身就不具备这样的功能(这波属于公鸡下蛋)。

(一)文件权限

在这里插入图片描述

下方示例演示文件的r、w、x权限的作用:
在这里插入图片描述
注意:在上方图片中,我们说Linux内核区分文件的依据是文件属性中第一个字符,其中 ’ - ’ 代表文件,
那么是否文件后缀在Linux中就是没有意义的呢?
下面我们通过gcc来验证一下:
gcc为C语言编译器,能够编译链接c语言文件,并生成可执行文件。
在这里插入图片描述
我们可以看到,同一个文件,只有当文件后缀名为 ’ .c '时gcc才可以通过编译,
所以,虽然内核不看文件后缀名,但是在使用一些小工具时是需要通过后缀名来判断该文件是否可以处理的;
这点上Linux就和Windows有所区别,所以,你懂的。(Windows图形化界面通过文件后缀判断文件类型)
而且使用后缀名还有一个特点就是:方便我们自己看,方便我们通过后缀名来判断文件类型。

文件中的拥有者、所属组和other我们可以如此理解:
在学校练习做项目时,老师分配4人一小组合作完成一个项目,
那么此时各个项目的拥有者为:老师;
所属组为:分到一组的4名同学;
other为:这4名同学之外的所以人。

(二)权限相关指令

chmod(修改权限)

语法:chmod u/g/o/a +/-/= 权限
功能:给用户增加或取消对应权限;
介绍:

用户: u :拥有者 。 g:所属组 。 o:其他人 。 a:所有人。
操作: +: 增加权限 。 -:取消权限 。 =:赋予权限。
权限: r:读权限 。 w:写权限 。 x:执行权限。
权限既可以使用指令操作,也可以使用八进制数据操作。
在这里插入图片描述> 只有文件的拥有者和root可以修改文件权限。
在这里插入图片描述


su 、sudo(提权)

语法: su + 用户名(默认为root)
功能:输入用户(root)密码后,仅仅切换用户身份

语法:su -
功能:输入root用户密码后,重新登录root账号

语法:sudo (需要操作提权)
功能:以其他身份来执行

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


root提权

root用户给普通用户提权操作:
在这里插入图片描述

补充

root添加和删除用户:
在这里插入图片描述

chown 、chgrp

语法:chown u1 file
功能:将file文件的拥有者改为u1,换句话说就是把文件给u1
语法:chgrp g1 file
功能:将file文件的所属组改为g1。
那么问题来了:当我们要把一个东西给其他人时需不需要经过他人的同意呢?
比如有人想要送给我们一口大大的黑锅,需不需要经过我们的同意? 答案肯定是需要的。
但是root用户就不同了,“你不要?拿着吧你~。”
所以root可以将文件强制给其他人,而普通用户也可以使用sudo提权,借用root的名义把文件强制交给其他人。
在这里插入图片描述


umask(掩码)

语法1:umask
功能:查看掩码
语法2:umask 权限值
功能:修改掩码
在这里插入图片描述
在这里插入图片描述


file

语法:file 选项 file/dir
功能:辨识文件类型。
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容。
在这里插入图片描述


(三)目录权限

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


三、粘滞位

在实际开发中我们会遇到合作开发的情况,大家都在一个工作目录dir下进行操作,
将所有人都分到一个小组中,那么dir的所属组就需要具备所有权限(r:查看目录中文件信息,w:创建、删除文件,x:进入目录);
而由于大家对这个目录都具有足够的权限,那就可能会有成员A误删成员B的文件的情况出现;
此时有同学会说:那就取消掉目录的 w 权限可以吗?
首先,这么做是可以解决删除文件的问题,但是这样也同时“解决了”创建文件的问题,那么以后有成员需要增加新的东西时则只能去找来
root大哥来帮忙了;
其次,当项目需要更新,以前的数据需要删除时,大家也同样无能为力,只能请求root。

那么为了解决这个问题(什么问题,当然就是有人误删其他人文件的问题喽~。),我们引入了粘滞位的概念;

语法:chmod +t dir
功能:设置粘滞位后,除了文件拥有者和root,其他人无法删除文件。
在这里插入图片描述


总结

  1. root就是Linux中的一把手,基本上做任何事儿都不需要与人打招呼,想干嘛就干嘛,权限也约束不住它。
  2. 使用sudo提权时需要输入的是自己的密码而不是root的,这并不表示任何人普通用户使用sudo后都可以“变成”root,因为在使用sudo之前你需要先被root加入“信任列表”。
  3. 文件的权限和目录的权限注意区分。
  4. 只能给目录设置粘滞位,因为创建和删除文件的权限是由目录的 w 权限决定的,但是设置了粘滞位后,表现则是:最后一个位置为T。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

性能测试工具 Lmbench 的使用方法以及解析运行结果

1. Lmbench 简介 Lmbench 是一款简易可以移植的内存测试工具,其主要功能有,带宽测评(读取缓存文件、拷贝内存、读/写内存、管道、TCP),延时测评(上下文切换、网络、文件系统的建立和删除、进程创建、信号处…

MYSQL中的14个实用的功能

1.group_concat 在我们平常的工作中,使用group by进行分组的场景,是非常多的。 比如想统计出用户表中,名称不同的用户的具体名称有哪些? 具体sql如下: select name from `user` group by name; 但如果想把name相同的code拼接在一起,放到另外一列中该怎么办呢? 答:…

Genesis一款基于Domino的app store应用超市

大家好,才是真的好。 众所周知,App Store是苹果iOS系统生态成功的关键因素。Domino作为一款企业应用平台,很多年前,就有人提出要创建Domino平台上的App Store。 其实比IOS早很多年前就有类似的应用管理,早在2000年的…

代码随想录之回溯第一课

要领:类型题目,用具体的一个例子来记忆,就够了,印象更加深刻。 一个题目,感觉理解不深刻,不透彻,不清晰,不熟练,就是不达标。 怎么做? 每天回顾复习看一次&am…

DD-1/50 12.5-50mA【接地继电器】

系列型号: DD-1/40接地继电器 DD-1/50接地继电器 DD-1/60接地继电器 一、 用途及工作原理 DD-1型接地继电器为瞬时动作的过电流继电器,用作小电流接地电力系统高电压三相交流发电机和电动机的接地零序过电流保护。继电器线圈接零序电流互感器(电缆式、…

电脑重装系统后分辨率不对应该怎么调

越来越多的小伙伴使用小白一键重装系统给自己的电脑安装上了win10系统,但是有部分小伙伴发现安装完win10系统之后,屏幕分辨率也无法进行调整,呈灰色状态。接下来小编就给大家详细的介绍一下小白一键重装系统分辨率不对怎么调的教程。 工具/原…

【Django】(一)基础知识

文章目录一.安装二.创建项目三.项目介绍四.APP的创建五.小案例六 模板和静态文件模板静态文件7.模板语法7.1 变量7.2列表7.3 字典7.4 过滤器7.5 if/else7.6 for标签7.7 ifequal和ifnotequal7.8注释7.9csrf_token8.模板继承8.1父模板8.2 子模板9.请求和响应10.数据库10.1安装第三…

【服务器搭建个人网站】附:接入的服务商 以及 安全评估报告该如何填写?

前言 哈喽,大家好,我是木易巷! 关于公安备案的一些详细的细节没有分享出来,在公安备案期间要填写很多东西,其中比较难填写的就是接入的服务商和安全评估报告的填写。 这一篇给大家总结:公安备案接入服务商和…

⭐️【linux】关于linux-gcc,你必须要知道的知识

🌲🌲目录🌲🌲 1️⃣什么是gcc 2️⃣gcc如何生成可执行文件 3️⃣简单使用gcc 4️⃣linux的库 1️⃣什么是gcc ❄️GCC(GNU Compiler Collection,GNU编译器套件),是由 GNU 开发的…

Java 中 Map 集合的基本使用

一、HashMap 1.1 HashMap 基本使用 import java.util.*;/*** author: yunhu* date: 2022/7/14*/ public class Test {public static void main(String[] args) {Map<String, Integer> map new HashMap<>();map.put("Alice", 12);map.put("Bob&qu…

62.Python 类的3要素语法

62.类的3要素语法 文章目录62.类的3要素语法1. 定义类的语法2. pass语句的作用3.我们学的5个缩进语法4.类的属性5.类的方法6. 创建对象7.类在爬虫中的应用8. 总结1. 定义类的语法 定义类的语法如下&#xff1a; class 类名: 代码块 从语法上来看&#xff1a;类的…

Edify Script (Android Shell)定制Twrp刷机包

本文将通过三方面向大家介绍Edify Script,相信你看完了这篇文章会对安卓系统可刷写插件有一个比较完整的认识,并且能过通过阅读此文章实现使用twrp刷入自己写的插件zipi包。网上能搜到的大部分是旧的,新版本去掉了很多的edify函数,照着他们那个写多半会报错。 本文分为如下…

LeetCode学习-第三十八天

第三十八天 我使用的C&#xff0c;错误的地方请见谅&#xff0c;文章初衷仅用来督促本人学习&#xff0c;如果恰巧能够给你带来帮助&#xff0c;我会十分开心。 文章目录第三十八天一、537. 复数乘法二、29. 两数相除一、537. 复数乘法 复数 可以用字符串表示&#xff0c;遵循…

CentOS7如何修改IP地址及UUID

CentOS7系统下&#xff0c;如果要把IP地址修改为192.168.1.80&#xff0c;子网掩码是255.255.255.0&#xff0c;网关是192.168.1.1&#xff0c;DNS是192.168.1.1&#xff0c;那么我们使用客户端连接CentOS或者打开系统终端&#xff0c;切换到root用户&#xff0c;命令&#xff…

开料的目的和子流程,一文读懂

经过多个月的分享&#xff0c;关于PCB行业&#xff0c;想必朋友们已经有了一些个人的理解&#xff0c;甚至对PCB行业&#xff0c;还产生了浓厚的兴趣。 但是&#xff0c;PCB生产工艺是非常复杂的&#xff0c;想要深入地学习并且学好PCB生产工艺&#xff0c;假如不在PCB的生产一…

如何从PyTorch中获取过程特征图

一、获取Tensor 神经网络在运算过程中实际上是以Tensor为格式进行计算的&#xff0c;我们只需稍稍改动一下forward函数即可从运算过程中抓到Tensor 代码如下&#xff1a; base_feature self.extractor.forward(x) #正常的前向传递 featurebase_feature.detach() …

JavaScript 数据类型

文章目录JavaScript 数据类型JavaScript 拥有动态类型JavaScript 字符串JavaScript 数字JavaScript 布尔JavaScript 数组JavaScript 对象Undefined 和 Null声明变量类型JavaScript 数据类型 字符串&#xff08;String&#xff09;、数字(Number)、布尔(Boolean)、数组(Array)、…

基于java eclipse+jsp+mysql+servlet+Spring的学生信息管理系统基础版

基于java eclipsejspmysqlservletSpring的学生信息管理系统基础版 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言…

【Python百日进阶-数据分析】Day148 - plotly直方图:px.histogram()

文章目录四、实例4.1 带有 Plotly Express 的直方图4.1.1 基本直方图4.1.2 使用一个包含分类数据的列4.1.3 选择方箱的数量4.1.4 日期数据直方图4.1.5 分类数据的直方图4.1.6 访问计数&#xff08;y 轴&#xff09;值4.1.7 标准化类型4.1.8 直方图的外观4.1.9 一列不同值的几个…

MySQL基础篇第10章(创建和管理表)

1. 基础知识 1.1 一条数据存储的过程 存储数据是处理数据的第一步 。只有正确地把数据存储起来&#xff0c;我们才能进行有效的处理和分析。否则&#xff0c;只 能是一团乱麻&#xff0c;无从下手。 那么&#xff0c;怎样才能把用户各种经营相关的、纷繁复杂的数据&#xff…