【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软件的品类࿰…...

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数据类型有哪些&…...

快速入门量化交易
本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注"慕课网"! 原作者:袁霄|慕课网讲师 近来“量化交易”这个词听得越来越频繁,多数人对量化交易的第一印象是“高大上的技术”…...

Mongodb oplog
在MongoDB复制集中,oplog信息存储在oplog.rs集合中。 oplog.rs集合是一个固定大小的集合(capped collection),它位于local数据库中。 当我们在源MongoDB实例上启用了复制(replication)功能,MongoDB会自动在local数据库中创建oplog.rs集合。此后,所有在该实例上的写操作都会生…...

python基础篇: python字符串方法都有哪些?你知道多少?
❝ Python提供了丰富的字符串处理方法,可以方便地对字符串进行操作、处理和转换。在本文中,我们将介绍Python中常用的字符串方法。 ❞ python中字符串内置方法很多,可以通过dir()方式查看具体有哪些方法,下表是python字符串的全部…...

chmod 命令 (chmod 0660)
chmod的作用: 用于设置文件所有者和文件关联组的命令,就是控制用户的权限命令 注意事项: chown 需要超级用户 root 的权限才能执行此命令。 自己常用chmod 命令是 chmod 777 * 给所有文件权限 chmod 777 文件名 给单独文件权限 这个777 是怎么来的, 或者chmod 0660 这…...

Qt应用开发常用功能
Qt判断当前操作系统? #ifdef Q_OS_MAC //mac ... #endif#ifdef Q_OS_LINUX //linux ... #endif#ifdef Q_OS_WIN32 //win ... #endif#ifdef __arm__ //arm ... #endifQt实现应用程序关闭和重启? //关机按钮-点击槽函数 void SystemD::on_shutdownButton…...

麻了,部门新来的00后给我卷崩溃了...
今天上班开早会就是新人见面仪式,听说来了个很厉害的大佬,年纪还不大,是上家公司离职过来的,薪资已经达到中高等水平,很多人都好奇不已,能拿到这个薪资应该人不简单,果然,自我介绍的…...

代码随想录算法训练营第56天|583. 两个字符串的删除操作,72. 编辑距离
代码随想录算法训练营第56天|583. 两个字符串的删除操作,72. 编辑距离 583. 两个字符串的删除操作72. 编辑距离 583. 两个字符串的删除操作 题目链接:583. 两个字符串的删除操作,难度:中等 【实现代码】 class Solution { publi…...

【嵌入式笔/面试】嵌入式软件基础题和真题总结——操作系统
在学习的时候找到几个十分好的工程和个人博客,先码一下,内容都摘自其中,有些重难点做了补充! 才鲸 / 嵌入式软件笔试题汇总 嵌入式与Linux那些事 阿秀的学习笔记 小林coding 百问网linux 嵌入式软件面试合集 2022年春招实习十四面…...

2023浙江省赛“信息安全管理与评估“--Web渗透测试(高职组)
2022全国职业技能大赛“信息安全管理与评估”(高职组)任务书 2022全国职业技能大赛“信息安全管理与评估”任务书第一阶段竞赛项目试题第二阶段竞赛项目试题第三阶段竞赛项目试题任务2:Web渗透测试2022全国职业技能大赛“信息安全管理与评估”任务书 第一阶段竞赛项目试题 …...

垃圾收集器面试总结(二)
G1 收集器 G1 (Garbage-First) 是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器。 以极高概率满足 GC 停顿时间要求的同时,还具备高吞吐量性能特征。 被视为 JDK1.7 中 HotSpot 虚拟机的一个重要进化特征。它具备以下特点: 并行与并发&am…...