Linux之权限

目录

一、shell运行原理

二、权限

1、对人操作

2、对角色和文件操作

修改权限(改属性):

①ugo+-

②二进制数的表示

修改权限(改人):

三、权限的相关问题

1、目录的权限

2、umask

3、粘滞位


一、shell运行原理

shell的运行原理外壳程序!

首先要清楚,我们人并不是直接访问操作系统的,原因如下:

1、人是不善于直接使用操作系统的

2、如果让人直接访问操作系统会有两个问题:

        ①操作成本很高

        ②人也会犯一些错误,从而带来不安全的因素

所以我们日常使用的图形化界面(Windows)或是指令操作(Linux)都是操作系统所提供的外壳程序


那么外壳程序也有它存在的意义:

1、外壳程序是用户和操作系统交互的中间软件层

2、可以在一定程度上起到保护操作系统的作用

所以人是和shell外壳程序打交道,然后外壳程序再与操作系统打交道;处理结束后,操作系统将结果反映给外壳程序,外壳程序再将结果传递给人


总结一下就是外壳程序将使用者的命令翻译给操作系统处理,同时再将操作系统的处理结果翻译给使用者


二、权限

1、对人操作

Linux下有两种用户,root和普通用户

root:只有一个,具有Linux下最高权限(一般不受权限约束)

普通用户:可以有多个,要受权限的约束

所以Linux下是可以存在多个用户的,Linux是一个对用户的操作系统


所以在Linux中切换root和普通用户,也就是在切换当前的权限

切换的命令:su [用户名]

从root用户切换到普通用户user,要使用su user

从普通用户切换到root用户,要使用su root,root可以省略,也可以su -


关于输入密码的问题,root用户切换普通用户不需要密码

普通用户切换到root用户需要root密码

普通用户1切换到普通用户2需要用户2的密码


普通用户切换到root用户后,如果想退回到刚刚的普通用户,可以Ctrl+d也可以输入命令logout


2、对角色和文件操作

权限是针对人的,事物的基本属性决定权限相关的概念

文件权限也就是一件事情是否允许被你做

因此权限的核心就是人+事物属性r/w/x->读/写/执行

下面看Linux中的文件的详细信息

部分含义已经备注在图上了,今天主要学习最前面的这10个字母或字符

这10个字符可以分成两部分理解,第一个和后九个


ls -l后显示的第一列的第一个字符,表明该文件的文件类型Linux中不以文件后缀来区分文件类型,但是不代表不可以使用,虽然在系统层面没有意义,但是可以给自己看),具体文件类型如下:

d:目录

-:普通文件

p:管道文件

b:块设备(磁盘设备)

c:字符设备(键盘或显示器)

l:链接文件  ...... 

其中前两个是最常用的


Linux将用户身份划分为三类:拥有者,所属组,other(这三个可以理解为一种身份)

拥有者:文件属于谁

所属组:文件属于哪个组

other:不属于上面两种任何一个,就是other 

红框表示的就是拥有者,蓝框表示的就是所属组,至于other即不是这两个的都是other

第一列的十个字符的后九个,三三为一组,分别是拥有者,所属组,other

这三个位置,分别是r/w/x(读/写/执行),位置是固定的,有rwx权限就显示rwx,没有的话就显示-

比如我们的Pro这个目录的权限就可以表示为:

拥有者具有读、写和执行权限;所属组具有读和执行权限,没有写权限;other具有读和执行权限,没有写权限


修改权限(改属性):

①ugo+-

现在有一个普通文件,拥有者权限是rw-,所属组权限是r--,other权限是r--

这时我想修改权限,语法是:chmod [u/g/o/a] [+/-] [r/w/x] [文件名] (其中u/g/o/a分别表示user拥有者/group所属组/other/all所有身份)

将拥有者权限改为rwx,所属组改为rwx,other改为r-x,即:

将拥有者权限改为rw-,所属组权限改为rw,other改为r,即:

将所有身份都加上x权限,即:


普通用户缺失某些权限时,对应的功能就不能正常进行了,例如:普通用户没有r权限,那么就不能正常使用cat test.c这种命令了,没有w权限,就不能进行echo "hello" > test.c这种命令,等等

如果输入不符合权限的指令,就会出现这样的提示:

但是root用户不受权限的约束,即使root是other,也可以有rwx权限


②二进制数的表示

因为拥有者、所属组和other的rwx权限位置是固定的,所以只会有两种情况,要么有,要么没有,这时有可以表示为1,没有可以表示为0

当rwx都有时,表示成二进制数就是111,这时111表示的十进制数是7

如果只有rw,表示成二进制就是110,这时110表示的十进制数是6

所以我们也可以使用这种二进制数的方式来改变权限,即:

全部都有rwx属性

拥有者有rwx权限,二进制是111,对应的十进制为7;所属组和other都只有rw权限,二进制是110,对应的十进制是6,即:


修改权限(改人):

chown/chgrp,更改拥有者或所属组需要提升权限

比如说我目前是普通用户,有一个普通文件test.c,test.c目前的拥有者和所属组都是zhangsan,我想改变拥有者/所属组为lisi

语法是:sudo [chown/chgrp] lisi test.c

如果想一次性将拥有者和所属组都改为lisi,输入sudo chown lisi:lisi tejike即可

加上sudo后,表示执行后续的命令,要以root的权限级别来执行,这时输入的密码就是lisi的密码

当然了,如果用户想执行sudo,提升权限,需要该用户在信任列表里面,才能够执行sudo,而添加用户到信任列表里是需要root身份的,所以不会出现普通用户随随便便就可以修改拥有者所属组的行为

而如果我是root用户,则直接[chown/chgrp] lisi test.c 就可以

三、权限的相关问题

1、目录的权限

首先,一个普通文件的拥有者和所属组如果是同一个人,那么我将拥有者的权限全部去掉,虽然所属组也是这个人,并且所属组的权限都有,但是这个人实际上是没有任何权限的,因为权限只被认证一次,被认证为拥有者就不管是不是所属组了

注意:

进入一个目录需要x权限,如:cd ...

查看目录下面的文件列表需要r权限,如:ls -al

要在目录下创建文件或目录需要w权限,如:touch test.c

2、umask

umask叫做权限掩码,凡在umask中出现的权限,都不应该在最终权限中出现

我们目前只研究umask的后三位,即0 2 2

并且目录的起始权限是7 7 7开始的,普通文件的起始权限是6 6 6开始的

目录的起始权限7 7 7说明拥有者、所属组、other的rwx权限都有,即对应位置为1,所以二进制1 1 1转换为十进制就是7

umask为0 2 2,而0 2 2的第一个数是0,由于凡在umask中出现的权限,都不应该在最终权限中出现,而第一个数为0,说明umask不会影响拥有者的rwx权限,所以拥有者的最终权限仍然是rwx

而后面的两位都是2,而2变为二进制是0 1 0,所属组和other所对应的7,变为二进制是1 1 1,由于凡在umask中出现的权限,都不应该在最终权限中出现,所以umask中1所在的位置,也就是w的权限,在umask中出现了,所以所属组和other的最终权限都不应该有,所以所属组和other的最终权限都变为了r-x

所以最终目录test的权限显示为rwxr-xr-x


其实也就是   最终权限=起始权限&(~umask)

即0 2 2变为二进制是0 0 0 0 1 0 0 1 0,而7 7 7变为二进制是 1 1 1 1 1 1 1 1 1

先取反~umask,变为1 1 1 1 0 1 1 0 1,再与1 1 1 1 1 1 1 1 1按位与

变为了1 1 1 1 0 1 1 0 1,也就是rwxr-xr-x


所以有了这个计算方法,我们如果想设置权限,也可改变umask值,例如umask变为0777,设置完后,拥有者所属组other都没有权限了

3、粘滞位

有一种情况是:大家所有用户都在一个共同的目录下,对该目录都有读写执行的权限,同时需要满足两个要求:

①、当多个用户共享一个目录时,需要在该目录下,进行读写,创建、删除文件

②、同时要保证自己只能删除自己的,而不能删除别人的(因为原本other权限是有w的,但是这可以互删,不满足要求)

在同一个目录下,大家各自有各自的文件,如果保证自己能创建自己的文件或删除自己的文件,那么必须要保证该目录other要有w权限,但是这种情况又会导致互相看不见对方的文件,但是却可以互相删除对方的文件要解决这个问题,就需要用到粘滞位

粘滞位语法就是 chmod +t test

这时候可以发现,原本other的x权限变为了t,这个t权限可以理解为x的特殊情况

这时就满足了上面的两个条件

注意:粘滞位只能给目录设置,一般是谁设置谁取消(root)

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

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

相关文章

LeetCode 202 快乐数

题目链接 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 法一:哈希 使用哈希表循环判断每次经过平方和的数,如果为1则直接返回true,若之前存在过但不为1则直接返回false 代码 class Solution { public:// 计算…

基于文本提示的图像目标检测与分割实践

近年来,计算机视觉取得了显着的进步,特别是在图像分割和目标检测任务方面。 最近值得注意的突破之一是分段任意模型(SAM),这是一种多功能深度学习模型,旨在有效地从图像和输入提示中预测对象掩模。 通过利用…

【业务功能篇92】微服务-springcloud-多线程-异步处理-异步编排-CompletableFutrue

三、CompletableFutrue 一个商品详情页 展示SKU的基本信息 0.5s展示SKU的图片信息 0.6s展示SKU的销售信息 1sspu的销售属性 1s展示规格参数 1.5sspu详情信息 1s 1.ComplatableFuture介绍 Future是Java 5添加的类,用来描述一个异步计算的结果。你可以使用 isDone方…

Ansible自动化运维之playbooks剧本

文章目录 一.playbooks介绍1.playbooks简述2.playbooks剧本格式3.playbooks组成部分4.运行playbooks及检测文件配置 二.模块实战实例1.playbooks模块实战实例2.vars模块实战实例3.指定远程主机sudo切换用户4.when模块实战实例5.with_items迭代模块实战实例6.Templates 模块实战…

Delft3D模型教程

详情点击公众号链接:基于Delft3D模型水体流动、污染物对流扩散、质点运移、溢油漂移及地表水环境报告编制教程 Delft3D计算网格构建 Delft3D水动力数值模拟 Delft3D污染物对流扩散数值模拟 一,Delft3D软件及建模原理和步骤 1.1地表水数值模拟常用软件、…

认识SQL sever

目录 一、数据库的概念 1.1数据库的基本概念 1.2对数据库的了解 二、数据库的分类 2.1关系型数据库(RDBMS): 2.2非关系型数据库(NoSQL): 2.3混合数据库: 2.4数据仓库: 2.5嵌…

报错:为什么数组明明有内容但打印的length是0

文章目录 一、问题二、分析三、解决1.将异步改为同步2.设置延迟 一、问题 在日常开发中,for 循环遍历调用接口,并将接口返回的值进行拼接,即push到一个新的数组中,但是在for循环内部是可以拿到这个新的数组,而for循环…

docker笔记9:Docker-compose容器编排

目录 1.是什么? 2. 能干嘛? 3.去哪下? 4.安装步骤 ​编辑 5.卸载步骤 6.Compose核心概念 6.1概念 6.2 Compose常用命令 7.Compose编排微服务 7.1改造升级微服务工程docker_boot 7.2不用Compose 7.2.1 单独的mysql容器实例 7.3 …

自动化测试基础知识详解

前言 有颜色的标注主要是方便记忆,勾选出个人感觉的重点 块引用:大部分是便于理解的话,稍微看看就行,主要是和正常的文字进行区分的 1、什么是自动化测试 自动化测试是软件测试活动中一个重要分支和组成部分,随着软…

C#事件event

事件模型的5个组成部分 事件拥有者(event source)(类对象)(有些书将其称为事件发布者) 事件成员(event)(事件拥有者的成员)(事件成员就是事件本身…

拿下嵌入式软件工程师面试题(day1)

前言 (1)如果你在读大学,不管你本科毕业是读研还是就业,你都可以早点准备嵌入式面试题,本系列教程的面试题均基于C语言。 (2)像嵌入式学得好,且学历不错的本科生和研究生&#xff0c…

mysql8 Found option without preceding group错误

这个错误说起来是真的坑,今晚帮同学在window操作系统上安装mysql8当自定义my.ini文件的时候 就出现一下错误,死活启动不起来 一直报错。当删掉这个my.ini文件的时候却能启动,刚开始以为是my.ini里的配置选项不对,一个一个筛查后依…

抖音小店爆款制造指南:打造抖音爆款商品的八大技巧

抖音小店作为一种电商模式,通过短视频形式展示商品,吸引用户购买。在抖音平台上,打造爆款商品是每个抖音小店主的梦想。以下是四川不若与众整理的一些抖音小店如何打造爆款商品的技巧。 1. 产品选择:选择适合抖音平台的产品非常重…

鲁棒优化入门(6)—Matlab+Yalmip两阶段鲁棒优化通用编程指南(上)

0.引言 上一篇博客介绍了使用Yalmip工具箱求解单阶段鲁棒优化的方法。这篇文章将和大家一起继续研究如何使用Yalmip工具箱求解两阶段鲁棒优化(默认看到这篇博客时已经有一定的基础了,如果没有可以看看我专栏里的其他文章)。关于两阶段鲁棒优化与列与约束生成算法的原…

Window安装虚拟机+给虚拟机安装Linux

一、虚拟机下载 这里使用Virtualbox虚拟机。可以直接从官网下载:Downloads – Oracle VM VirtualBox 点击进行下载,选择window版本的。直接双击,一直下一步 进行安装 PS:安装需要开启CPU虚拟化,一般电脑都已经开启了…

c语言实训心得3篇集合

c语言实训心得体会一: 在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实践学习。在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里…

Qt6_贪吃蛇Greedy Snake

贪吃蛇Greedy Snake 1分析 首先这是一个贪吃蛇界面,由一个长方形边框和一只贪吃蛇组成 默认开局时,贪吃蛇身体只有3个小方块,使用画笔画出 1.1如何移动 对于蛇的移动,有2种方法 在一定时间范围内(定时器),未对游戏…

知识大杂烩(uniapp)

首先声明:不敢保证都管用,这是我自己实践得来的。 box-shadow: 这段 CSS 样式代码用于创建一个阴影效果,它是通过 box-shadow 属性来实现的。让我解释一下这段代码的含义: - box-shadow: 这是 CSS 的属性,用于添加阴影…

vue3集成jsoneditor

一、背景 之前在做录制回放平台的时候,需要前端展示子调用信息,子调用是一个请求列表数组结构,jsoneditor对数组的默认展示结构是[0].[1].[2]..的方式,为了达到如下的效果,必须用到 onNodeName的钩子函数,…

微信小程序navigateTo进入页面后返回原来的页面需要携带数据回来

需求 如图:点击评论后会通过wx.navigateTo进入到评论页面,评论完返回count给原页面,重新赋值实现数量动态变化,不然要刷新这个页面才会更新最新的评论数量。 实现方式: 在评论页面通过wx.setStorageSync(‘data’…