当前位置: 首页 > news >正文

【linux】对于权限的理解

权限

    • Linux权限的概念
      • 用户之间的切换
    • Linux权限管理
      • 文件权限
      • 操作文件的人
      • Linux文件默认权限的设置
        • 权限掩码
      • 所属组/其他删除拥有者创建的文件
      • 文件拥有者、所属组的修改
        • 修改文件拥有者
        • 修改文件所属组
        • 一次性修改拥有者和所属组
      • 目录的执行权限

在这里插入图片描述

Linux权限的概念

首先,我们在登录的时候可以超级用户(root)身份登录,也可以普通用户身份登录,超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
在这里插入图片描述
超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。

root就相当于是游戏里的上帝,想干啥就干啥,干什么事情不需要经过他人同意。

用户之间的切换

想要从一个用户下切换为另一个用户就可以:su 用户名

例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的密码。

如果密码输错就无法切换,输入密码的时候是不会显示的,和设置普通用户的密码一样。

从普通用户切到root下:
在这里插入图片描述

从root且到普通用户,不需要输入密码
在这里插入图片描述

如果你是从一个用户已经转入到另一个用户了,但是你想要再转回去的话,就不建议再用su了,因为这样会导致产生多个进程,通俗点来说就是开了好多个用户。
在这里插入图片描述
想要直接退回去的话可以直接输入exit 或者用快捷键 ctrl + d (这个不会显示成ctrl d)。在这里插入图片描述
这里可以看到有好多个进程,而且都是重复的,所以说想要回到原来的用户的话就直接 ctrl + d 就可以了。
在这里插入图片描述

理解权限:一件事是否允许被特定的人做。

权限 = 人 + 事物属性

Linux权限管理

文件权限

记一个东西:linux下一切皆文件。像普通文件,目录文件,块设备文件,链接文件,字符设备文件,管道文件等等都是文件。

而linux系统中怎么区分这些属性的呢?

首先linux系统中,不以文件后缀作为区分文件类型的方式。当我们用 ls -l(或ll) 展示文件信息时会在文件最前面看到一堆的字母和-。
在这里插入图片描述
这些字母和-有特定的意思。
在这里插入图片描述
那后面的rw-什么的代表什么?

先看下面的解释:
文件本身具有天然的权限属性:读® + 写(w) + 执行(x)。这三个属性限定该文件是否能够读取,是否能够写入,是否能够执行。

简单画个表格:
在这里插入图片描述
这里就讲一下目录文件的x:大家可以想象你自己再windows操作系统下,双击一个文件夹,会发生什么事情,就是进入了该文件夹,如果你双击了一款游戏,这款游戏就执行起来了,那么把双击游戏的执行类推到双击文件夹上,那么就可以看出,双击文件夹就是执行该文件夹,也就是进入了该文件夹,文件夹也就是目录。那么再类推到linux系统上,对于目录来说,x代表执行,那么是否有这个权力就代表你是否能够进入这个目录。

这样的话再看这张图就明白了:
在这里插入图片描述

但是为啥有三个?

操作文件的人

对于操作文件的人可以分为三类:拥有者(user),所属组(group),其他人(other)。

拥有者:对于一个文件来说,这个文件是被谁拥有的,这个拥有的人就是拥有者。

所属组:举个栗子,为了方便管理,如果我有一个小组,小组内有 20 个用户,而这 20 位用户对同一个文件的权限是一致的,那我是一位用户一位用户地分配权限方便,还是把 20 位用户加入一个组中,然后给这个组分配权限方便呢?不言而喻,一定是给一个用户组分配权限更加方便。

其他人就是除了拥有者和所属组之外的人了。

而对文件进行读、写、执行操作的是人,人具有是否被允许干某件事这个属性。这样组合起来就是权限。

在这里插入图片描述
字母的意思就是有,而 - 的意思就是没有
在这里插入图片描述

再往后面看,两个yjy分别代表的是该文件的拥有者所属组。除了拥有者和所属组就是其他用户,不需要再搞一个标志了。
在这里插入图片描述

再往后就是文件大小,创建时间和文件名了。

当然上面的hello.c文件不可能执行,所以默认就都没有执行的权限。
但是可以改权限:
在这里插入图片描述
上面的操作就是给u(user)添加上执行的权限。虽然文件变成绿色了,但是没什么用,因为hello.c无法执行。

同样的我们也可以给g和o赋权。
在这里插入图片描述
也可以剥去权力:
在这里插入图片描述
还可以统一赋权和去权。
在这里插入图片描述
在这里插入图片描述
每个用户对文件权限位置是确定的,而且是两态的(要么有权,要么无权)。
我们可以用1来表示有权,用0来表示无权。
举个栗子:rw- 就是 110。
这样的话我们就可以用一种新的修改权限的方式:三位8进制数字。

在这里插入图片描述

八进制数 777 对应到二进制下就是 111 111 111,那么就代表所有的权限都有了。

在这里插入图片描述
八进制数 000 对应二进制就是 000 000 000,就是都没有。
在这里插入图片描述
八进制数 666 转换成二进制数就是 110 110 110,就是读写有,执行没有。

就不再多举例子了,都一个意思,数不一样,对应权限不一样。

Linux文件默认权限的设置

为什么创建文件会有默认的权限?

权限掩码

先不说概念,先看看长啥样:
umask这个指令可以看到权限掩码是多少。
在这里插入图片描述
第一个零意思是说这个数是八进制数,去掉它,就剩002了,八进制的002对应二进制就是000 000 010,这就是权限掩码,有什么用?

还是八进制,这里给出一个非官方的概念,起始权限。

普通文件的起始权限是666,对应二进制就是110 110 110;
目录文件的起始权限是777,对应二进制就是111 111 111。

凡是权限掩码中出现1的位置,对应到起始权限中的位置处如果为1,就变为0;如果为0,就不变。

那么默认的权限掩码都是0002,也就是000 000 010,这里去掉普通文件的那个1,就变成了 110 110 100,就是664,对应到字母就是 rw- rw- r–;去掉目录文件里的那个1,就变成了111 111 101,就是775,对应到字母就是 rwx rwx r-x。

那用二进制怎么算呢?
先对权限掩码(mask)取反,得到(~mask),然后再将这个值和起始权限与一下。那么 文件的默认权限 = 起始权限 & (~mask)

看图:
在这里插入图片描述
新创建的普通文件的权限和目录文件的权限和上面推出来的是一模一样的。

权限掩码是可以修改的,但是极其不建议,因为这些默认的权限是他人通过经验总结出来的,若修改,未必有人家设计的好,但是硬要修改的话也可以,umask 后面跟上八进制数就行,但是这样修改之在本次对话框能有效,也就是本次登录推出之后就变回原来的值了,如果想永久修改就需要搞配置文件,但还是建议不要永久修改,万一再想改回默认状态但是你忘了默认的值,那就恶心了。

所属组/其他删除拥有者创建的文件

在这里插入图片描述
这样以其他人的身份删除不属于这个人的文件,这样的操作,对于拥有者来说非常的危险,因为当这个文件比较重要时,如果被其他人删除了,那都不知道这个人是谁,就出大问题了。怎样解决呢?

若目录本身对other有w权限,other可以删掉任何目录下的文件;
若目录本身对other没有w权限,则other不可以删掉任何文件。

但是如果我们想要other可以再特定目录下创建文件并写入,但是不想让任何人删除掉自己的文件,怎么做?

这时候要引出一个新概念,叫粘滞位(只对目录文件有效),一般是限制other权限的。

设置方法:chmod o+t dir

在这里插入图片描述
设置好之后,other就无法删除文件了,但是可以创建文件。

在这里插入图片描述
将目录的other赋予w属性。
在这里插入图片描述
以other在该目录下创建文件,可以。
在这里插入图片描述
对于设置了粘滞位的目录,在该目录下,只能文件拥有者或root可以删文件,其他人不能删(所属组也不能)。

在这里插入图片描述

有时,用户多的情况下,或系统会有很多临时数据,所有临时文件放在系统的/tmp下,这时就需要把所有权限放开,但是只想让文件拥有者自己删除文件,就需要设置粘滞位。

若想去除粘滞位: chmod o-t filename
在这里插入图片描述

文件拥有者、所属组的修改

下面的这两个操作需要以root的身份去做,不然都是不允许的。
你把一个东西交给别人需要经过别人的允许。但是如果你是上帝视角,把东西给别人,别人什么话也不能说,不服也得憋着。
所以要么切换到root,要么sudo 行为。

修改文件拥有者

普通用户不允许:在这里插入图片描述

法一:sudo
在这里插入图片描述

法二:切换到root
在这里插入图片描述

修改文件所属组

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

但是如果文件拥有者是你,那么你可以直接将所属组改为你自己。
在这里插入图片描述

一次性修改拥有者和所属组

在这里插入图片描述

目录的执行权限

最后要再强调下这个,目录的执行权限决定的是:是否能够进入该目录,这个我开头也细讲了,这里就不多说为什么了。

当o对目录没有了x,会发生什么?
在这里插入图片描述

无x有r
在这里插入图片描述
可以看到文件名,但是看不到文件的详细信息。
在这里插入图片描述

无x有w
想往进写文件不行
在这里插入图片描述
想删掉里面的文件也不行。
在这里插入图片描述

如果想编写目录下的文件时,会保存不了,保存了就无法退出,不保存才能退出。在这里插入图片描述

到此结束。。

相关文章:

【linux】对于权限的理解

权限 Linux权限的概念用户之间的切换 Linux权限管理文件权限操作文件的人Linux文件默认权限的设置权限掩码 所属组/其他删除拥有者创建的文件文件拥有者、所属组的修改修改文件拥有者修改文件所属组一次性修改拥有者和所属组 目录的执行权限 Linux权限的概念 首先,…...

测试人必备技能:如何进行WebSocket接口测试?

目录 前言 WebSocket介绍 HTTP与WebSocket的区别 二者关系 WebSocket测试方法 使用Postman 使用Jmeter 使用Python 结语 前言 随着Web应用的日益普及,WebSocket作为一种全双工通信协议,在移动端、游戏、视频会议等方面得到广泛应用。 而对于需…...

【Android FrameWork (三)】- SystemServer

文章目录 知识回顾启动第一个流程initZygote的流程 前言源码分析1.system_server2.SystemServer.main3,startBootstrapServices4,startService 拓展知识LoadApkcontext 对于Android context 大家是怎么理解的?LocalServices.java: addServece方法中 ArrayMap和HashM…...

Docker容器部署及基本使用

文章目录 一、环境初始化配置二、安装Docker三、优化配置四、基础命令 一、环境初始化配置 1、关闭防火墙 systemctl stop firewalld systemctl disable firewalldsetenforce 0sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config sed -i s/SELINUXenforcing/S…...

【机智云物联网低功耗转接板】+模拟MCU快速上手

GE211是机智云自研的定制化转接板,使用 ESP32-C3-WROOM-02 通讯模块,适用于白色智能家电等设备应用。 转接板已经烧录了机智云连云的最新GAgent固件,所以不需要烧写任何软件就可以快速上手使用。 GE211板卡带有一个串口,一般是把这…...

ai免费写作在线平台-ai免费伪原创文章生成器软件

ai伪原创能检测出来吗 人工智能技术可以检测伪原创,但是不是所有的伪原创都可以被检测出来。 现在有许多自然语言处理(NLP)算法和技术可以用来检测伪原创内容,例如文本相似度比较算法,语气分析算法等。这些算法可以检…...

Web自动化测试简介及web自动化测试实战交教程

一、认识web自动化测试 1.什么是自动化测试? 自动化测试的概念: 软件自动化测试就是通过测试工具或者其他手段,按照测试人员的预定计划对软件产品进行自动化测试,他是软件测试的一个重要组成部分,能够完成许多手工测试无法完成或…...

基于单片机的家庭应急电源设计

基于单片机的家庭应急电源 摘 要 本设计基于STC89C52单片机设计得应急电源,以应急电源为研究对象,单片机设计为控制集成IC,ADC为模数转换控制模块,无源蜂鸣器作为报警电路。系统分为单片机设计最小系统,AD转换控制模…...

线程七大状态

线程生命周期(七大状态) 新建状态(New):当Java线程被创建时,它处于新建状态。此时,线程对象已被创建,但尚未启动。在这个状态下,线程并没有开始执行任何代码,…...

Linux第一章

文章目录 前言一、操作系统概述二、Linux初识1.Linux系统的诞生2.Linux系统内核3.Linux发行版 三、虚拟机介绍四、安装vmware workStation1.VMware WorStation软件2.安装 五、vm安装linux六、远程连接Linux系统1.图形化、命令行2.为什么使用命令行操作linux3.使用FinalShell软件…...

Microsoft Defender for Identity部署方案

目录 前言 一、重要组件 二、部署步骤 1、准备 Azure 订阅 2、配置 Microsoft Defender for Identity 门户...

超越YOLOv8,飞桨推出精度最高的实时检测器RT-DETR!

‍‍ 众所周知,实时目标检测( Real-Time Object Detection )一直由 YOLO 系列模型主导。 飞桨在去年 3 月份推出了高精度通用目标检测模型 PP-YOLOE ,同年在 PP-YOLOE 的基础上提出了 PP-YOLOE 。后者在训练收敛速度、下游任务泛化能力以及高性能部署能力…...

基于Docker安装Redis【保姆级教程、内含图解】

Redis官网:Redis Redis中文官网:CRUG网站 两者选其一即可,建议使用 Redis官网:Redis 学习任何框架和技术,一定要参考相应的官网学习,一定要参考官网学习!!! 目录 一、拉取…...

电子表格软件与一站式BI的区别

看完本节内容,相信您能够了解到电子表格软件(代号电子表格软件)与「一站式 BI」的主要区别。所谓一站式BI在官网上的名称就是Smartbi V10.5,代号就是Smartbi一直在使用insight。 这两个产品都属于商业智能BI软件的品类&#xff0…...

SpringCache

一、介绍 Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能,大大简化我们在业务中操作缓存的代码。 Spring Cache只是提供了一层抽象,底层可以切换不同的cache实现。具体就…...

Android Framework—Service

介绍 Service是一种可以在后台执行长时间运行操作而不提供界面的应用组件。服务可以由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。此外,组件可以通过绑定到服务与之进行交互,甚至是执行进程之间的通信…...

leetcode (重排数组使得)连续子数组的权值和最小

题目描述:请重新排列某个仅包含2和3的数组,使得数组的所有连续子数组权值之和最小数组的权值定义为,数组中所有元素之积的因子个数,例如:rank([2,3])4 x p 1 c 1 p 2 c 2 p 3 c 3 ⋅ ⋅ ⋅ p k c k r a n k ( c 1 1 ) ( c …...

JSP计算机等级考试查询系统(源代码+论文+答辩PPT)

第一章 引言 计算机等级考试查询系统是有其开发的必要性的,它的应用将大大节省了学校的人力资源,从而从人工劳动中解脱出来。我们这次开发的软件系统一共包括了三个部分:等级考试的报名系统、查询系统和管理系统。其中管理系统是另外两部分…...

python 基础系列篇:七、以函数方式编写一个数字华容道

python 基础系列篇:七、以函数方式编写一个数字华容道 数字华容道游戏分析开始编写完整代码代码解说定义方法的规律 小结 数字华容道 嗯,就是一个简单的益智游戏,把数字按照特定规律排列,并比矩阵少一个格,用来进行移…...

2023年前端面试题

1.position都有哪些属性 2.1px等于多少rem,rem根据根元素的大小,根元素是谁 3.Es6操作数组的方法 4.防抖和节流以及应用场景 5.Vue和ajax最大的区别是什么(Vue和ajax怎么操作dom的,vue虚拟dom) 6.js数据类型有哪些&…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...

docker 部署发现spring.profiles.active 问题

报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则&#xf…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

push [特殊字符] present

push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...