Linux系统编程——权限概念和权限管理

目录

一,关于Shell

1.1 外壳程序

1.2 shell的作用

1.3 shell运行原理

二,权限概念

2.1 用户与权限

2.2 su(用户切换指令)

​编辑

2.3 提升指令权限和信任名单

三,文件权限

3.1 关于文件权限

3.2 文件访问者分类(人)

3.3 文件访问权限

3.4 文件权限值的表示方法

3.4.1 字符表示

3.4.2 进制数表示

四,文件权限设置

4.1 chmod指令

4.1.1 格式一

4.1.2 格式二

4.2 修改文件拥有者和所属组

4.5 修改文件掩码

五,粘滞位

5.1 目录权限

5.2 粘滞位

一,关于Shell

1.1 外壳程序

我们在Windows中一般都是双击某个图标来运行相关软件或者程序 ,而Linux是通过命令行的形式交互的,所以我们可以把在Linux中输入命令的方式比作成在Windows中双击图标,其本质是一样的,都是为了方便用户进行相关操作。而图形化界面和命令行界面我们称之为“外壳程序”。

问题:为什么不直接访问操作系统,而要通过一个外壳程序呢?

解答:人不善于直接访问操作系统,就像去银行办理业务一样,我们不熟悉银行的相关操作流程所以不能快速办理业务,所以银行里有很多的工作人员引导你办理业务。

而且如果让用户直接访问操作系统 --> 1,操作成本太高  2,人会犯错,会带来不安全因素

所以,操作系统的设计者不会让人直接访问操作系统

我们与Linux系统的“外壳程序”和Linux交互,这个Linux的“外壳程序”我们称之为“Shell”,Shell的最简单的定义就是“命令行解释器”。

1.2 shell的作用

①将使用者的命令翻译给OS处理  ②同时,OS也可以把命令的处理结果通过外壳程序翻译给用户

对比Windows GUI,我们操作Windows也不是直接操作Windows内核,而是通过图形接口,点击,从而完成我们的操作

shell对应Linux,也是相同的作用,对我们的命令进行解析,然后给Linux内核。反馈结果由内核得出结果,然后经过shell解析后给用户

注意:shell是所有外壳程序的统称,在Linux centos 7版本OS中的外壳程序叫做“bash”

1.3 shell运行原理

创建子进程,让子进程进行命令行解释,并且子进程错误时不会影响父进程

我们可以以Windows任务管理器界面来举例:

在Windows中,我们每运行一个软件,上面进程的应用列表就多一行内容。而且,我们肯定遇到过一个软件崩掉或者无响应等error的情况,或者我们手动退出导致进程关闭,都不会影响其他的软件正常跑,假如你开着微信和QQ,QQ崩了不会影响微信,微信崩了也不会影响QQ。

二,权限概念

2.1 用户与权限

Linux下有两种用户:

①root用户:只有一个,具有Linux下的最高权限,可以在Linux下做任何事情,几乎不受影响

②普通用户:可以有多个,要受权限的约束,并且只能在自己的工作目录下( /home/xxx )进行操作,而且只能在系统上做有限的工作

2.2 su(用户切换指令)

语法:su 用户名

功能:用户切换

普通用户切换成root用户

root用户切换成普通用户

普通用户切换成普通用户

如果想快速返回上次切换的用户可以Ctrl + D 

2.3 提升指令权限和信任名单

一些情况下,我们普通用户想执行root级别的指令,但是切换到root用户再执行不方便,而且不安全,所以我们可以用sudo指令

语法:sudo 指令

功能:提升当前指令的权限

上面的报错是正常的,因为不可能随便让一个用户改其他用户的密码嘛

所以,我们可以把信任的用户添加到信任名单里,使被信任的用户能够使用sudo指令

vim /etc/sudoers  需要root权限

 修改完成后,按住Shift+;,可以看到最底下会出现 " : ",再次输入wq!,然后回车就行(w表示保存,q表示退出,!表示强制操作)

三,文件权限

3.1 关于文件权限

问题:权限是什么?

解答:①权限是针对人的(比如普通用户看不了VIP内容)  ②事务的基本属性决定权限相关的概念(比如说,石头是不会像木头一样着火的,所以不管我们再怎么烧石头它也不会着火)

所以文件权限 --> 决定一件事情是否允许被你“做”

权限核心 = 人 + 事务属性

ll命令后显示的第一列的第一个字符,表面该文件的文件类型

d:目录文件  -:普通文件  p:管道文件( mkfifo f)  b:块设备(磁盘设备)  c:字符设备(键盘或显示器)  l:链接文件(类似Windows的快捷方式,以后会讲,有软链接和硬链接两种链接文件) 

注意:Linux下不以后缀来区分文件类型的,这点和windows有很大不同,但并不代表Linux不能用文件后缀,但是Linux下的文件后缀大多数都是给用户自己看的

3.2 文件访问者分类(人)

对于操作系统来说,“人”或者用户可以分为三类:

①拥有者(owner):文件属于谁,对应上图红色框框的部分

②所属组(group):文件属于哪一个组,对应上图蓝色框框部分

③其他人(other)

在Linux中一个文件的上面三个属性由用户所扮演,而且所有用户都要隶属与某一个组,如果这个组只有你一个人,那么这个组名就和你同名,所以我们看到上面红色框框和蓝色框框内容一样 

问题:所属组干嘛的,为什么要有这个?

解答:以学校小组作业为例,我们需要保证小组内成员能看到同一份资源,而且也要保证其他小组看不到我们小组的资源。

同理,Linux所属组也是为了保证某个团队的资源配置合理性,在保证能够灵活进行组内任务分工和权限配置等之外,也能保证我们组内的资源对其他人不可见,满足团队协作

3.3 文件访问权限

上面讲的是对于人的权限,表面人是否能对文件进行操作,而文件也有属于自己的属性,分别是:①可读  ②可写  ③可执行  

如上图,第一个字母代表文件类型,我们已经介绍过,剩下的9个字符就代表着文件自己的属性。

这9个字符3个为一组,分别代表着拥有者,所属组和other的能对该文件进行的操作

 

然后,每一个红色方框内有三个字符,分别代表文件的可读,可写,可执行权限

以下面的test.txt为例:

 该文件是一个普通文件,拥有者为dyk,所属组也是dyk,如果是dyk或者dyk组的组内成员对该文件进行操作时,拥有读写权限(由于txt不是可执行权限,所以第三个字母都是“ - ”),如果是other对该文件进行操作,那么只有读权限无写权限

3.4 文件权限值的表示方法

3.4.1 字符表示

ll指令打印的时候就是显示的字符表示方法

字符表示法说明
r--只读
-w-只写
--x只可执行
rw-可读可写
-wx可写和可执行
r-w可读可执行
rwx可读可写可执行
---无任何权限

3.4.2 进制数表示

字符表示方法中,每一个字符所在位置的结果只有两种,要么为真,要么为假,所以我们可以用0和1的二进制方式来表示,而刚好又是三个二进制数,所以又刚好可以用八进制数表示

权限符号二进制八进制说明
r--1004只读
-w-0102只写
--x0011只可执行
rw-1106可读可写
r-x1015可读可执行
-wx0113可写可执行
rwx1117可读可写可执行
---0000无任何权限

四,文件权限设置

4.1 chmod指令

语法:chmod 选项 权限 文件或目录名

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

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

4.1.1 格式一

语法:u/g/o/a  +/-/=  权限字符

u拥有者
g所属组
o其他人
a所有用户
+向权限范围增加权限代号表示的权限
-向权限范围取消权限代号表示的权限
-向权限范围赋予权限代号表示的权限

4.1.2 格式二

语法:三位八进制数字 文件名

将对应的八进制数字转化为对应的三位二进制数,从而实现权限修改

4.2 修改文件拥有者和所属组

修改所属组和拥有者都需要root权限,普通用户则需要sudo进行权限提升

改变拥有者用到的指令是chown,改变所属组用到的指令是chgrp

4.5 修改文件掩码

我们新建的文件和目录都有自己默认的权限

新建普通文件的默认权限为0666,新建目录文件的默认权限为0777,第一个0代表特殊权限,这里不细讲。后面三位数是八进制数值的表示方法,如下图 

除了默认权限数值之外,我们也可以自己设置创建文件时的默认权限,文件掩码就负责这块的工作。

语法:umask 权限值

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

假设权限是mask,那么实际上创建出来的文件权限是:mask&(~umask)

因此我们实际创建出来的文件和目录的权限值还需要进一步换算才能的出。首先将umaks的后三位八进制数转换为二进制数,然后按位取反,如下图: 

然后我们将之前将的默认值也进行进制转换,然后与~umask进行按位与操作,最后的出来的结果就是我们创建文件和目录的最终默认权限,如下图:

总体可以简单理解为:凡是在umask中的权限位位1的位,都不能在最终权限中出现 

五,粘滞位

5.1 目录权限

目录也是文件,也有可读可写可执行权限,但是目录的权限和文件稍微不同:

①可读:如果没有可读,那么无法用ls查看目录内的文件,但是可以cd进入

②可写:如果没有写,那么无法在该目录里创建和删除文件,但是可以cd和ls

③可执行:如果没有可执行,那么无法通过cd进入该目录,但是可以ls查看

场景一:一个目录dir,权限为drwxrwxr-x,拥有者和所属组都是dyk,这时候我以dyk的身份sudo touch test.txt,此时这个文件的权限为-rwr--r--,拥有者和所属组是root,这时候我是dyk,是普通用户,无法写这个文件,但是却可以rm -f删除这个文件(删除一个文件不是这个文件本身的属性说了算,而是该文件所在目录的属性说了算

场景二:ll /,在根目录下有一个tmp文件,是公共目录,权限为drwxrxrwx,如果多个用户都在一个共同的路径下,对该目录有所有权限,那么一个用户可以对拥有者和所属组都不是自己的文件进行删除,那么就彻底乱套了

5.2 粘滞位

难题一:当多个用户共享一个目录,需要在该目录下进行读取创建和删除文件

难题二:只能删除自己的文件,不能删除别人的

为了解决上面的问题:Linux有了粘滞位的概念

语法:chmod +t 目录名

功能:给目录加上粘滞位

当一个目录有粘滞位时,该目录下的文件只能由这些用户删除:①超级用户  ②该目录的拥有者  ③该文件的拥有者

但是目录加上粘滞位后,如果用户有该目录的写权限,不影响他在该目录下创建文件 

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

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

相关文章

UG10.如何设置鼠标滚轮操作模型放大缩小方向?

UG10.如何设置鼠标滚轮操作模型放大缩小方向呢?看一下具体操作步骤吧。 首先打开UG10.软件,在主菜单栏选择【文件】下拉菜单,选择【实用工具】。 点击【用户默认设置】。 文章源自四五设计网-https://www.45te.com/45545.html 选中【基本环…

python语言零基础入门——变量与简单数据类型

目录 一、变量 1.创建变量 2.变量的修改 3.变量的命名 (1)常量 (2)标识符 (3)关键字 (4)命名规则 二、简单数据类型 1.变量的数据类型 2.数据类型 3.整型(In…

中断的设备树修改及上机实验(按键驱动)流程

写在前面的话:对于 GPIO 按键,我们并不需要去写驱动程序,使用内核自带的驱动程序 drivers/input/keyboard/gpio_keys.c 就可以,然后你需要做的只是修改设备树指定引脚及键值。 根据驱动文件中的platform_driver中的.of_match_tabl…

C++之类和对象三

目录 拷贝构造函数 定义铺垫 浅拷贝 深拷贝 总结 拷贝构造函数 那在创建对象时,可否创建一个与一个对象一某一样的新对象呢? 定义铺垫 构造函数:只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰)&#xff0c…

2024年华中杯B题论文发布+数据预处理问题一代码免费分享

【腾讯文档】2024年华中杯B题资料汇总 https://docs.qq.com/doc/DSExMdnNsamxCVUJt 行车轨迹估计交通信号灯周期问题 摘要 在城市化迅速发展的今天,交通管理和优化已成为关键的城市运营问题之一。本文将基于题目给出的数据,对行车轨迹估计交通信号灯…

【1577】java网吧收费管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java 网吧收费管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0…

一篇文章搞定Jenkins自动化部署JDK17+SpringBoot3.X+新版AlibabaCloud打包Docker镜像推送私有镜像仓库

🚀 作者 :“二当家-小D” 🚀 博主简介:⭐前荔枝FM架构师、阿里资深工程师||曾任职于阿里巴巴担任多个项目负责人,8年开发架构经验,精通java,擅长分布式高并发架构,自动化压力测试,微服务容器化k…

Redis中的订阅发布(二)

订阅与发布 订阅频道 每当客户端执行SUBSCRIBE命令订阅某个或某些频道的时候,服务器都会将客户端与被订阅的频道 在pubsub_channels字典中进行关联。 根据频道是否已经有其他订阅者,关联操作分为两种情况执行: 1.如果频道已经有其他订阅者&#xff0c…

微信小程序echart图片不显示 问题解决

目录 1.问题描述:2.解决方法:2.1第一步2.2第二步2.2效果 小结: 1.问题描述: echart图片不显示 图片: 2.解决方法: 2.1第一步 给wxml中的ec-canvas组件添加宽高样式:style"width: 100%…

图文教程 | Git安装配置、常用命令大全以及常见问题

前言 因为多了一台电脑,平时写一些代码,改一些文件,用U盘存着转来转去特别麻烦。于是打算用Git管理我的文件,方便在两个终端之间传输数据啥的。也正好给新电脑装好Git。 📢博客主页:程序源⠀-CSDN博客 &…

MathType安装导致的Word粘贴操作出现运行时错误‘53’:文件未找到:MathPage.WLL

MathType安装导致的Word粘贴操作出现运行时错误‘53’:文件未找到:MathPage.WLL 解决方案 1、确定自己电脑的位数; 2、右击MathType桌面图标,点击“打开文件所在位置”,然后找到MathPage.WLL ,复制一份进行…

深度 | 践行绿色健康可持续发展,这家企业提供了价值范本

文 | 螳螂观察 作者 | 余一 近段时间以来,小米SU7热度一直不减,在展露小米强大品牌号召力的同时,也侧面体现出了当前消费者对于新能源汽车的喜爱。 而消费者选择新能源汽车时,环保因素也起到了至关重要的作用。像前几日&#x…

PolarDB闪电助攻,《香肠派对》百亿好友关系实现毫秒级查询

云原生数据库PolarDB分布式版(PolarDB for Xscale,简称PolarDB-X)有极强的线性扩展能力,能够多写多读;它的全局索引能力,是分布式改造的利器,成功解决了传统分布式方案中多维度查询的难题&#…

探究欧拉恒等式的美学与数学威力

正如老子所述,“道生一,一生二,二生三,三生万物”,数学作为人类认知自然法则的语言,其数系的不断发展象征着对世界理解的深化。从自然数经由分数、无理数至复数,复数虽看似反直觉,却…

探索AI大模型:理论、技术与应用

引言 近年来,随着深度学习技术的迅猛发展,AI大模型已经成为人工智能领域的重要研究方向和热点话题。AI大模型,指的是拥有巨大参数规模和强大学习能力的神经网络模型,如BERT、GPT等,这些模型在自然语言处理、计算机视觉…

es安装中文分词器

下载地址,尽量选择和自己本地es差不多的版本 https://github.com/infinilabs/analysis-ik/releases 下载好,解压,把里面的文件放到es的plugins/ik目录下 把plugin-descriptor.properties文件里的es版本改成自己对应的 再启动es,能…

2W 3KVDC 隔离单、双输出 DC/DC 电源模块——TPH 系列

TPH系列是一款2W,单、双输出隔离电源模块,特别适合板上只有一种电压而要求有正负电源的场合,工业级温度范围–40℃到105℃,在此温度范围内都可以稳定输出2W,并且效率非常高,高达86%,温升非常低&…

OKCC搭建配置什么样的服务器合适

OKCC呼叫中心系统是一种采用软硬件结合的架构方式、及分布式的IP技术,从多角度为企业提供整合的一体化解决方案。因此,搭建OKCC呼叫中心系统所使用的服务器应该满足以下几点要求: 稳定性:服务器需要具有较高的稳定性和可靠性&…

MinIO + Prometheus + Grafana docker部署

文章目录 说明MinIO简介MinIO 容器化部署Prometheus服务地址配置方法一:先部署后修改方法二:部署时修改compose文件(未验证) MinIO Access Key配置Prometheus 容器化部署MinIO 生成抓取配置修改Prometheus配置文件Grafana 容器化部…

iframe和 blob实现JS,CSS,HTML直接当前页预览

先贴效果图&#xff1a; <template><div><div class"aaa"></div><div class"btn-run" click"tres">运行</div></div></template><script>import { mapState } from vuex;export default …