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 这样的临时目录中,防止用户误删或恶意删除其他人的文件。

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

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

相关文章

Avalonia UI MVVM DataTemplate里绑定Command

Avalonia 模板里面绑定ViewModel跟WPF写法有些不同。需要单独绑定Command. WPF里面可以直接按照下面的方法绑定DataContext. <Button Content"Button" Command"{Binding DataContext.ClickCommand, RelativeSource{RelativeSource AncestorType{x:Type User…

MATLAB语言的文件操作

MATLAB语言的文件操作 1. 引言 MATLAB是一种高性能的语言&#xff0c;广泛应用于数学计算、数据分析和可视化等领域。在实际的应用中&#xff0c;经常需要对文件进行操作&#xff0c;包括读取文件、写入文件以及对文件进行修改等。本文将详细探讨MATLAB的文件操作&#xff0c…

用wordpress搭建跨境电商独立站后没有询盘该怎么办

如果在使用WordPress搭建跨境电商独立站后没有收到询盘&#xff0c;可以采取以下详细解决办法&#xff1a; 优化网站基础建设 选择合适的域名和主机 建议选择国际化的域名(如以.com结尾)&#xff0c;并选择支持SEO优化的主机服务商&#xff0c;例如Namecheap或SiteGround&am…

ConnectionResetError: [Errno 104] Connection reset by peer

python遇到这样一个报错&#xff1a; imap imaplib.IMAP4_SSL("outlook.office365.com", 993)File "/usr/lib/python3.9/imaplib.py", line 1324, in __init__IMAP4.__init__(self, host, port, timeout)File "/usr/lib/python3.9/imaplib.py",…

WPF常见面试题解答

以下是WPF&#xff08;Windows Presentation Foundation&#xff09;面试中常见的问题及解答&#xff0c;涵盖基础概念、高级功能和实际应用&#xff0c;帮助你更好地准备面试&#xff1a; 基础概念 什么是WPF&#xff1f; WPF是微软开发的用于构建桌面应用程序的UI框架&#x…

Redis - 数据类型与编码方式

Redis中常用的5种数据类型 包括字符串、哈希、列表、集合、有序集合 字符串&#xff0c;相当于Java中的String哈希&#xff0c;相当于Java中的HashMap列表&#xff0c;相当于Java中的List集合&#xff0c;相当于Java中的Set有序集合&#xff0c;多存储了一个权重 Redis承诺使…

git Bash通过SSH key 登录github的详细步骤

1 问题 通过在windows 终端中的通过git登录github 不再是通过密码登录了&#xff0c;需要本地生成一个密钥&#xff0c;配置到gihub中才能使用 2 步骤 &#xff08;1&#xff09;首先配置用户名和邮箱 git config --global user.name "用户名"git config --global…

如何为64位LabVIEW配置正确的驱动程序

在安装 64位 LabVIEW 后&#xff0c;确保驱动程序正确配置是关键。如果您首先安装了 32位 LabVIEW 和相关驱动&#xff0c;然后安装了 64位 LabVIEW&#xff0c;需要确保为 64位 LabVIEW 安装和配置适当的驱动程序&#xff0c;才能正常访问硬件设备。以下是详细步骤&#xff1a…

BGP边界网关协议(Border Gateway Protocol)路由聚合详解

一、路由聚合 1、意义 在大规模的网络中&#xff0c;BGP路由表十分庞大&#xff0c;给设备造成了很大的负担&#xff0c;同时使发生路由振荡的几率也大大增加&#xff0c;影响网络的稳定性。 路由聚合是将多条路由合并的机制&#xff0c;它通过只向对等体发送聚合后的路由而…

YOLOv10-1.1部分代码阅读笔记-train.py

train.py ultralytics\models\yolov10\train.py 目录 train.py 1.所需的库和模块 2.class YOLOv10DetectionTrainer(DetectionTrainer): 1.所需的库和模块 from ultralytics.models.yolo.detect import DetectionTrainer from .val import YOLOv10DetectionValidator fr…

戴尔电脑用u盘重装系统_戴尔电脑用u盘重装win10系统教程

戴尔电脑用u盘重装系统&#xff1f;戴尔电脑这几年默认预装win10家庭版和win11家庭版。有的用户用上了预装win11家庭版的戴尔电脑&#xff0c;使用一段时间依然不习惯&#xff0c;于是想退回win10。但不知道怎么重装win10&#xff0c;这几年的戴尔电脑建议采用U盘方式安装系统比…

求奇数分之一序列前N项和

求奇数分之一序列前N项和 分数 15 全屏浏览 切换布局 作者 C课程组 单位 浙江大学 本题要求编写程序&#xff0c;计算序列 1 1/3 1/5 ... 的前N项之和。 输入格式: 输入在一行中给出一个正整数N。 输出格式: 在一行中按照“sum S”的格式输出部分和的值S&#xff0c;精…

QT TLS initialization failed

qt使用QNetworkAccessManager下载文件&#xff08;给出的链接可以在浏览器里面下载文件&#xff09;&#xff0c;下载失败&#xff0c; 提示“TLS initialization failed”通常是由于Qt在使用HTTPS进行文件下载时&#xff0c;未能正确初始化TLS&#xff08;安全传输层协议&…

【图文详解】lnmp架构搭建Discuz论坛

安装部署LNMP 系统及软件版本信息 软件名称版本nginx1.24.0mysql5.7.41php5.6.27安装nginx 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 关闭防火墙 systemctl stop firewalld &&a…

06、Redis相关概念:缓存击穿、雪崩、穿透、预热、降级、一致性等

Redis相关概念&#xff1a;缓存击穿、雪崩、穿透、预热、降级、一致性等 Redis缓存雪崩、缓存击穿、缓存预热热点key、缓存降级、短链接、分布式锁秒杀、预减库存、 堆外缓存Redis架构设计、Redis动态刷新、Redis和DB双写一致性、过期删除策略、集群数据倾斜等一、缓存雪崩 缓…

2024年CSDN年度回顾:个人成长、创作历程与生活的融合与平衡

2024年CSDN年度回顾&#xff1a;个人成长、创作历程与生活的融合与平衡 时光荏苒&#xff0c;转眼间2024年已悄然落幕。这一年&#xff0c;我在CSDN平台上度过了169天&#xff0c;创作了264篇原创文章&#xff0c;收获了9976位粉丝的喜爱与支持。回顾这一年&#xff0c;不仅是…

【记录自开发的SQL工具】工具字符拼接、Excel转sql、生成编码、生成测试数据

记录自己开发的一个SQL聚合工具 功能介绍&#xff1a; 文本加引号 给多行文本前后添加引号&#xff0c;并用逗号连接&#xff0c;直接复制到 sql 中的 in 条件中 Excel转SQL 适用于将Excel表格的数据&#xff0c;批量导入到数据库的场景 此工具能快速将excel表格转换为i…

Vue3笔记——(二)

015 生命周期 组件的生命周期&#xff1a; 【时刻】 【调用特定的函数】 vue2生命周期 创建 beforeCreate、 created 挂载 beforeMounte、mounted 更新 beforeUpdate、updated 销毁 beforeDestroy、destroyed 生命周期、生命周期函数、生命周期钩子 vue3生命周期 创建 setup 挂…

2024年工作总结

一、2024年个人成长、工作总结 1.博客文章 在这一年的创作中&#xff0c;共发布95篇文章&#xff0c;其中&#xff1a; Scrum敏捷项目管理&#xff1a; Scrum敏捷项目管理 前端技术vue jquery&#xff1a; jQuery&#xff08;一&#xff09;jQuery基本语法 分布式事务&…

Blazor-Blazor呈现概念

静态和交互式呈现概念 在Blazor开发中&#xff0c;Razor 组件具备两种重要的呈现方式&#xff0c;分别是静态呈现和交互式呈现。 静态呈现 也被称为静态渲染&#xff0c;是一种典型的服务器端方案。在这种模式下&#xff0c;组件呈现时&#xff0c;用户与.NET/C# 代码之间缺…