linux权限管理以及shell

1.shell

1.1什么是shell?

shell即外壳,是运行在linux系统上的一个脚本语言,包裹在linux内核的外面。我们常说的linux操作系统实际上是linux内核我们使用的所有指令都是一个个程序,而shell指令就是一个将我们用户的操作翻译给linux内核的程序。总的来说,shell就像是一个翻译官,将用户的意图转换加工并传递给内核,内核做出反应后传递给shell,shell再转换加工并传递给用户

总结:shell就是我们用户和操作系统之间进行交互的媒介(命令行解释器)。

1.2 shell的作用

为什么不让用户直接在linux内核上操作呢?

要知道,操作系统是最接近计算机硬件的软件,控制分配着计算机的各种硬件资源以及作业。如果直接暴露给用户使用,那么我们的计算机将会变得非常危险,用户一个不小心可能就会让整个机器崩溃。另外,操作系统向上提供的这些接口较为复杂难懂,在用户角度上来说是非常不友好的(大部分用户都不是程序员)。所以,我们需要将这些操作系统的接口“包装”起来,一来是可以更好的保护计算机,二来是为用户操作提供容易理解并使用的“工具”。

 2.linux权限

2.1权限的概念

在我们的日常生活中会接触到许许多多需要权限才能执行的事情,比如我们要看某个需要会员才能看的电影,通过“会员”,app可以筛选出谁能看这个电影,谁不能看这个电影。其实会员的概念跟权限一致,其实质都是在规定---什么样的角色能干什么事。 而在linux操作系统中,“角色”包括普通用户和root超级用户

root用户和普通用户的区别

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

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

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

2.2su指令

su用来切换当前的用户身份  

语法 su [用户名] 

常用格式 

指令格式含义
su 输入root密码后切换到root用户但是pwd目录不变
su -输入root密码后切换到root用户但是pwd目录/root
su root输入root密码后切换到root用户但是pwd目录不变
su - root输入root密码后切换到root用户但是pwd目录/root
su 某用户名输入这个用户的密码后切换到该用户但是pwd目录不变
su - 某用户名输入这个用户的密码后切换到该用户但是pwd目录在 /该用户

举例:

su root 指令演示

su - root指令演示

总结

su指令可实现普通用户和root(超级管理员)之间的交换,值得注意的是,su默认只是切换身份,并没有切换环境变量,环境变量依然是普通用户的。切换用户身份时,用户的环境变量也切换成新用户的环境变量,所以"-"不能省略,不然有些操作无法执行。这也是为什么su root之后所处的当前路径不会更新,而su - root之后所处的当前路径会回到/root下

 2.3linux权限管理

 对linux而言,一切皆文件,Linux的权限管理其实大多也就是在管理文件文件=文件内容+属性属性又包括这个文件的路径、最近修改时间、文件拥有者、文件所属组等信息即使我们创建一个空文件(没有内容),这个文件的大小也不为0,因为还需要空间存储属性信息。

用ls 查看文件属性 

 红框框里面的就是文件属性

2.3.1文件属性

对于以下文件属性

解析各个字段 

 2.3.2文件的拥有者、所属组的概念

在Linux系统中,每个文件和目录都有一个所有者(owner)和一个所属组(group)。这两个概念是用来控制对文件和目录的访问权限的。

拥有者

我们知道linux系统是多用户操作系统,每个文件都有它的 拥有者,只有文件的拥有者才具有修改文件属性的权力当一个文件被创建时,会默认当前用户为文件的拥有者。当然,root用户可以随意修改,即使该文件的拥有者并不是root.

所属组

所属组定义了文件或目录的关联组。所有属于同一组的用户都具有该组对文件或目录的一些权限。这允许多个用户在同一组中共享访问权限

注意

权限分为三个主要类别:所有者权限、所属组权限和其他用户权限。那为什么没有标明其他用户是谁呢?在linux文件属性中,如果一个用户既不是该文件的拥有者也不是所属组,那么对于这个文件而言,这个用户就是其他用户,也只能使用其它用户的权限。

2.4文件类型以及权限

 在这个字段中,一共有10个字符,第一个字符表示文件的类型后面九个字符以三个为一组,分别表示这个文件的拥有者、所属组、其它用户的权限

文件类型

d:文件夹

-:普通文件

l:软链接(类似Windows的快捷方式)

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

p:管道文件

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

s:套接口文件 

 

 

 文件的权限

文件和目录的权限由三组权限分别表示,分别是所有者权限、所属组权限和其他用户权限。每组权限都包含读(read)、写(write)和执行(execute)权限。r表示读权限,w表示写权限,x表示执行权限如果没有对应的权限,用“-”表示。(顺序是固定的

可用八进制表示每一组的权限

r的权值为4,二进制表示为100

w的权值为2,二进制表示为010

x的权值为1,二进制表示为001

其中权限的组合用每种权限的权值相加得到,例如7(八进制)用二进制表示为111(100+010+001=111),转换为权限的含义就是,可读可写可执行。

如果某个文件总的权限用八进制表示为700,从左往右,分别表示,拥有者的权值为7,所属组和其他的权值为0。

 例如:

r - - 表示可读、不可写、不可执行

r w - 表示可读、可写、不可执行

- - -  表示不可读、不可写、不可执行

 分析以下部分文件属性

-rw-rw-r-- 1 tsx tsx    0 Nov 30 18:53 file2.txt

通过这个文件属性信息我们可以知道,file2.txt是一个普通文件,拥有者和所属组都是tsx,拥有者和所属组的权限都是是 可以读取文件的内容,可以向该文件写入信息,不可执行。而对于其他用户来说,就只有读的权限

演示

假设cat 某个该用户没有读权限的文件

 注意

对于一个文件夹来说,读、写、执行的权限含义与普通文件相比有所不同。

1、读权限表示用户可以列出目录中的文件和子目录。对于一个目录来说,如果该用户没有读权限,即使可以列出该目录的子目录和文件,也无法查看其文件的内容 

2、写权限表示用户可以在目录中创建、删除和重命名文件或子目录。对于一个目录来说,如果该用户没有写权限,可以列出该目录的子目录和文件。如果没有写权限,即使其子目录或文件的权限是可写的,也不能删除或者修改等操作

3、执行权限对于目录,执行权限表示用户可以进入该目录。如果用户没有执行权限,即使目录是可读的,也无法进入其中。也就意味着,用cd 指令进入某个没有x(执行)权限的目录会失败

2.5修改文件的权限

在linux操作系统中,我们可以使用一些指令来修改 文件的权限属性,也可以修改文件的拥有者和所属组

2.5.1chmod指令

chmod是用来修改文件或者目录权限的指令,它允许用户为文件或目录的所有者、所属组和其他用户分别设置读、写和执行权限。

常用选项:

-R -> 递归修改目录文件的权限

说明:只有文件的拥有者和root才可以改变文件的权限         

 chmod命令权限值的格式

chmod 用户表示符+/- /= 权限字符 文件名

用户表示符

u:拥有者

g:拥有者同组用

o:其它用户

a:所有用户 

+、-、=符号

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

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

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

将拥有者的权限减去一个r权限

考虑以下指令

chmod u-r 111

我们可以看到用chmod u-权限符 可以删除某个文件拥有者的读权限,那怎么加回来呢?

将拥有者的权限增加上一个r权限

考虑以下指令

chmod u+r 111

 

将某个目录下的文件或者子目录的所有用户都删除写权限

考虑以下指令

 chmod -R a-w 111

 其实修改用户的权限非常的简单,指令格式也非常的容易理解。另外,我们也可以用对应的八进制来代替权限符。比如chmod 000 某个文件:

2.6思考

我们发现,创建的目录或者是文件在被创建之后都会有默认的权限,这些默认权限的赋予规则是什么呢?

文件的默认权限

在Linux系统中,新创建的文件和目录都会有默认权限。这些默认权限是由系统的 umask(用户文件创建掩码)值控制的。Umask决定了在创建新文件或目录时从文件权限中去除的权限位。

2.6.1什么是umask?

umask用户文件创建掩码)是一个在Unix和类Unix系统中的概念,用于控制新文件和目录的默认权限。它是一种权限掩码,用来确定在创建新文件或目录时从权限中要移除的位

我们可以用umask直接查看umask值(八进制)

umask

2.6.2默认权限规则 

 Umask的值是从文件权限中减去的权限。我们知道文件的三个身份权限可以用三个八进制位表示,而默认创建的文件会将满权限(一个身份的满权限的权值是7,三个就是777)的八进制位分别减去对应的umask位(相同的八进制位).例如,如果umask的值为0002,那么在创建新文件时会去除其它用户的写权限(2)。

 

以umask值为0002为例(跟002一样)

第一位八进制默认为 7-0=7,对应着拥有者的权限为111(二进制),也就是rwx

第二位八进制默认为 7-0=7,对应着所属组的权限为111(二进制),也就是rwx

第三位八进制默认为 7-2=5,对应着拥有者的权限为101(二进制),也就是r-x

所以根据以上默认权限的规则,umask为0002时,创建的目录或者文件的权限默认都是775

2.6.3 修改umask

我们可以用umask+ 合适的八进制值来修改umask

考虑以下指令集

umask 000
mkdir 555

根据前面的默认权限规则得到得到默认权限的过程

第一位八进制默认为 7-0=7,对应着拥有者的权限为111(二进制),也就是rwx

第二位八进制默认为 7-0=7,对应着所属组的权限为111(二进制),也就是rwx

第三位八进制默认为 7-0=0,对应着拥有者的权限为111(二进制),也就是rwx

2.7修改文件的拥有者和所属组

2.7.1修改文件的拥有者

chown指令

chown命令可以将某个文件的拥有者修改为另一个存在的用户。只有超级用户(root)才有权限使用 chown 命令。

考虑以下指令

chown root 111

2.7.2修改文件的所属组

chgrp指令

chgrp命令用于更改文件或目录所属组的命令。只有超级用户(root)才有权限使用 chgrp 命令。

考虑以下指令

chgrp root 222

2.8.总结

文件的权限总是围绕着什么样的角色能干什么样的事,了解并熟悉权限操作管理有助于保护我们的文件信息也有助于团队之间的信息沟通。就像我们人一样,我们应当明确自己是什么角色、能干什么样的事,恪守本分,遵纪守法,这样社会才会有秩序,这样我们才能安稳的生活。

 

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

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

相关文章

软件设计之组合模式

组合模式:将对象组合成树形结构。 案例:公司管理。一个公司可以分总公司和分公司,无论是总公司还是分公司都有自己的部门,如人力资源管理部门、财务部门。分公司可以建立自己在不同地域的办事处。请使用组合模式打印出某个公司的…

SpringSecurity6 | 登陆后的跳转

SpringSecurity6 | 自定义认证规则 ✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: Ja…

第九天:信息打点-CDN绕过篇amp;漏洞回链amp;接口探针amp;全网扫描amp;反向邮件

信息打点-CDN绕过篇 cdn绕过文章:https://www.cnblogs.com/qiudabai/p/9763739.html 一、CDN-知识点 1、常见访问过程 1、没有CDN情况下传统访问:用户访问域名-解析服务器IP–>访问目标主机 2.普通CDN:用户访问域名–>CDN节点–>…

网络层重点协议——IP协议详解

✏️✏️✏️今天给大家分享的是网络层的重点协议——IP协议。 清风的CSDN博客 🛩️🛩️🛩️希望我的文章能对你有所帮助,有不足的地方还请各位看官多多指教,大家一起学习交流! ✈️✈️✈️动动你们发财的…

阿里内部教程Jmeter 性能测试常用图表、服务器资源监控

性能测试常用图表 插件安装 步骤 1:安装插件管理器 在 Jmeter 官网上下载插件管理器 Plugins-manager-1.3.jar将 jar 包放入到 lib\ext 目录下重启 Jmeter,可以在选项下看到 Plugins Manager 选项 步骤 2:安装指定的插件 打开 Plugins Ma…

JVM虚拟机系统性学习-运行时数据区(堆)

运行时数据区 JVM 由三部分组成:类加载系统、运行时数据区、执行引擎 下边讲一下运行时数据区中的构成 根据线程的使用情况分为两类: 线程独享(此区域不需要垃圾回收) 虚拟机栈、本地方法栈、程序计数器 线程共享(数…

DataGrip常见问题

查询语句结果没有输出在output中 进行如下配置 配置后查询结果输出在output中 左侧数据库链接信息导航栏被隐藏 以上导航栏被隐藏,按下图操作调出

【Qt开发流程】之容器类2:使用STL风格迭代器进行遍历

概述 对于每个容器类,都有两种stl风格的迭代器类型:一种提供只读访问,另一种提供读写访问。应该尽可能使用只读迭代器,因为它们比读写迭代器快。 STL迭代器的API以数组中的指针为模型。例如,操作符将迭代器推进到下一项&#xf…

Java开发工具:IDEA 2023.3(WinMac)中文激活版

IntelliJ IDEA 2023是一款由JetBrains公司出品的集成开发环境(IDE),专为程序员设计。它以智能、高效和人性化为主要特点,致力于提高开发人员的生产力,帮助程序员更快、更好地编写代码。 在智能功能方面,Int…

Panalog 日志审计系统 sprog_deletevent.php SQL 注入漏洞复现

0x01 产品简介 Panalog大数据日志审计系统定位于将大数据产品应用于高校、 公安、 政企、 医疗、 金融、 能源等行业之中,针对网络流量的信息进行日志留存,可对用户上网行为进行审计,逐渐形成大数据采集、 大数据分析、 大数据整合的工作模式…

c语言一维数组总结详解

目录 介绍: 一维整型数组: 声明: 初始化: 打印输出: 输出结果: 浮点型数组: 代码: 运行结果: 补充: 一维字符数组: 字符数组声明及初始…

Python轴承故障诊断 (二)连续小波变换CWT

目录 前言 1 连续小波变换CWT原理介绍 1.1 CWT概述 1.2 CWT的原理和本质 2 基于Python的CWT实现与参数对比 2.1 代码示例 2.2 参数介绍和选择策略 2.2.1 尺度长度: 2.2.2 小波函数(wavelet): 2.3 凯斯西储大学轴承数据的…

《算法与数据结构》答疑

答疑 问题一问题二问题三问题四 问题一 在匹配成功时,在返回子串位置那里,为什么不是i-t的长度啊,为什么还要加一 问题二 问题三 问题四 问:如果题目让我们构造一个哈夫曼树,像我发的这个例题的话,我画成我…

深度学习与计算机视觉技术的融合

深度学习与计算机视觉技术的融合 一、引言 随着人工智能技术的不断发展,深度学习已经成为了计算机视觉领域的重要支柱。计算机视觉技术能够从图像和视频中提取有用的信息,而深度学习则能够通过学习大量的数据来提高计算机视觉技术的性能。本文将探讨深…

贪心算法和动态规划

目录 一、简介 二、贪心算法案例:活动选择问题 1.原理介绍 三、动态规划案例:背包问题 1.原理介绍 四、贪心算法与动态规划的区别 五、总结 作者其他文章链接 正则表达式-CSDN博客 深入理解HashMap:Java中的键值对存储利器-CSDN博客…

Java Web——过滤器 监听器

目录 1. Filter & 过滤器 1.1. 过滤器概述 1.2. 过滤器的使用 1.3. 过滤器生命周期 1.4. 过滤器链的使用 1.5. 注解方式配置过滤器 2. Listener & 监听器 2.1. 监听器概述 2.2. Java Web的监听器 2.2.1. 常用监听器 2.2.1.1. ServletContextListener监听器 …

Course3-Week1-无监督学习

Course3-Week1-无监督学习 文章目录 Course3-Week1-无监督学习1. 欢迎1.1 Course3简介1.2 数学符号约定 2. K-means算法2.1 K-means算法的步骤2.2 代价函数2.3 选择聚类数量 3. 异常检测3.1 异常检测的直观理解3.2 高斯分布3.3 异常检测算法3.4 选取判断阈值 ε \varepsilon ε…

Redis 持久化 —— 超详细操作演示!

四、Redis 持久化 四、Redis 持久化4.1 持久化基本原理4.2 RDB持久化4.3 AOF持久化4.4 RDB与AOF对比4.5 持久化技术转型 五、Redis 主从集群六、Redis 分布式系统七、Redis 缓存八、Lua脚本详解九、分布式锁 数据库系列文章: 关系型数据库: MySQL —— 基础语法大全…

【京东服装推荐系统 - 数据爬取、可视化和个性化推荐】

京东服装推荐系统 - 数据爬取、可视化和个性化推荐 前言数据集与数据爬取数据分析与可视化Django搭建可视化平台主要功能1. 数据可视化2. 我的收藏3. 商品推荐4. 登录注册5. 信息展示6. 信息管理7. 对数据的收藏8. 推荐 创新点结语 前言 在现今的电商市场中,服装领…

鸿蒙原生应用/元服务开发-新版本端云一体化模板体验反馈

一、前言 云端一体化模板是基于Serverless服务构建的一套模板,提供了应用生态常见场景需求的代码实现,开发者可将所需能力快速部署和集成到自己的应用中。 二、准备 体验最新的远端一体化模板,需要将云模板替换掉。为此,我们需要做…