Linux 权限的理解

内容摘要

本文内容包括shell的运行原理,包括外壳程序的原理、理解、和意义,以及从两个方面对于权限的理解(人和事物的属性)、修改文件的权限,包括修改文件的拥有者、修改文件拥有者所在的组的用户以及修改文件的三类用户的访问文件的权限、最终权限与起始权限和umask的关系、以及粘滞位的作用和使用。

shell的运行原理

shell的运行原理:外壳程序

首先思考:我们作为操作者(用户)使用操作系统的过程,是在直接使用操作系统吗??

外壳程序的理解

不管是我们操作widows还是Linux,其实我们都不是在直接使用操作系统,在使用window时我们通过图形化界面进行访问操作系统,在Linux我们通过命令行进行访问,这里的图形化界面、命令行就是外壳程序。

外壳程序的意义

为什么我们要通过外壳程序进行访问操作系统,而不是直接访问操作系统呢??

Linux操作系统的内核是十分复杂的,我们直接进行访问操作系统的成本比较高

我们是人,是人就会犯错误,通过外壳程序可以帮我们规避错误,增加容错率,极大的减少了系统崩溃的概率

外壳程序的原理

将使用者的命令翻译给核心(kernel),然后将核心处理结果翻译给用户

权限的理解

权限的概念

通俗的来说就是是否被允许去做一些特定的事情的资格

权限的两个方面 人和文件的属性

对于人

第一方面:

分为普通用户和root用户,root用户也成为超级用户,相当于人身上的身份

对于普通用户:通常会受一些权限的约束,不同的用户可能会受不同的权限约束

对于root用户而言:几乎不会受权限的控制

举个栗子

比如一个人是字节的员工,那么他可以随意进出字节公司,但是他是进不去腾讯的大门的,他能够进入字节,是因为他是字节员工的身份,这个身份给予了他允许进入字节的资格,也就是说字节给了他权限,但是腾讯没有 。

第二方面:

通过文件访问者进行分类

通过文件访问者可以分为三类:文件和文件拥有者文件和文件目录拥有者所在组的用户其他用户三类

通过ls -l指令进行查看目录的详细信息

这里的的三个目录都是通过用户的身份进行创建的,所以目录的拥有者和目录拥有者所在的组的用户都是root。
这里解释一下拥有者所在组的用户的概念,如上图所示,创建文件或者创建文件目录的用户既然既是文件和目录的拥有者,也是文件和目录拥有者所在的组的成员,那么文件和目录拥有者所在的组的用户有什么作用呢??其实文件和目录拥有者所在的组还是十分重要的,假设我们以后步入企业,对于同一个项目,公司分配两个及以上的组进行研发,这两个组是竞争关系,如果没有文件目录拥有者所在的组,那么除了创建文件的用户,这个组的其他用户都成了其他用户,和另一个项目组的成员权限一样了,所以Linux引入了文件和文件目录拥有者所创建的组的概念,可以单独分配权限给这个组,完美解决了这种问题。

对于事物属性

文件类型和访问权限

文件类型

  • d:目录
  • -:普通文件
  • l:软连接(相当于window下的快捷方式)
  • b:块设备(硬件部分)
  • p:管道文件
  • c:字符设备文件(例如屏幕等串口设备)
  • s:套接口文件

对于Linux来说文件类型只有通过以上类型来定义,和文件的后缀名无关,既然无关我们为什么在创建文件时还要定义后缀,这里的后缀有什么作用呢??对于Linux系统来说,没有任何作用,这里的后缀只是用来给用户看的。

我们通过gcc g++进行编译文件生成可执行程序要求我们需要特定的文件后缀,并不能说明任何问题,gcc g++相当于Linux下的程序。

权限

对于权限那一列,每三个字母为一组,分别是文件所有者的权限、文件拥有者所在组的用户的权限、其他用户的权限,字母 'r' 代表有读的权限、 字母 'w' 代表有写的权限字母 'x'代表可执行权限,如果没有相对应的权限则在相对应的位置用 '-' 表示。每类用户的三个位置的字母不能够随意改变。

如上图所示,code目录的权限就是,对于文件拥有者来说,拥有可读可写可执行的权限;对于文件拥有者所在的组的用户来说,拥有可读可执行的权限,没有可写的权限;读于其他用户来说,也是拥有可读可执行的权限,没有可写的权限

目录权限的总结(易混淆)

  • 进入目录:需要拥有可执行权限
  • 查看目录下的文件列表:也就是ls指令,需要读权限
  • 在目录下进行创建、删除目录或者文件:需要拥有写权限

修改权限

修改文件的拥有者

格式:chown + 将要修改成的成员名 + 被修改的文件名

修改文件的拥有者所在组的用户

格式:chown + 将要修改成的成员名 + 被修改的文件名

注意:这里进行修改文件的拥有者和拥有者所在组的对象,对于root用户而言是可以完成的,但是对于普通用户来说是需要进行权限提升的。

修改问文件被访问权限

  • 用户加标识符法

修改文件拥有者访问文件时的权限

chmod u 运算符 权限字母 文件

修改文件拥有者所在组的用户访问文件时的权限

chmod p 运算符 权限字母 文件

修改其他人访问文件时的权限

chmod o 运算符 权限字母 文件

  • 八进制法

通过二进制的八进制法进行修改文件权限,每类用户的权限都是由三个字符进行表示分别为r(-)、w(-)、x(-),当有相对应的权限时在相对应的位置记作1,否则记作0。例如上图中10.24code这个目录的用户权限分别用二进制进行表示时为101 111 101 ,用八进制进行表示为575。

我们可以用这种形式进行更改文件用户的权限

通过chmod将文件中各个用户的读、写、可执行权限全部打开。

最终权限与起始权限和umask的关系

新建目录的默认起始权限为0777 

新建文件的默认起始权限为0666

通过创建一个目录和文件进行观察

通过创建文件我们可以看到,在没有任何修改的条件下,刚刚创建的目录的权限为775,文件权限为664,这和我们的结论有所不同,这是为何呢??这和umask值有关

那么最终权限和起始权限与umask的关系

凡是在umask中出现的权限都不应该在最终权限中出现

最终权限不是我们看到的通过减法进行实现的,而是起始权限和umask按位取反然后按位与得到的。

粘滞位

粘滞位的作用

当用户在同一个目录下,进行创建文件,通过粘滞位避免文件拥有者的创建的文件被除自己以外的用户删掉。

举个栗子:

通过超级用户root创建一个目录文件,并将文件目录对于各个用户的读写执行权限全部打开,方便后续各个用户进行,创建并储存文件

切换至一个普通用户,然后创建一个普通文件,并将文件对于其他用户的读写可执行权限全部不给予

切换至另一个用户,想要查看ys用户的文件,因为ys将文件对于其他用户的读写执行的权限全部不给予,wyt用户所以说不具备查看ystest.c文件的权限,因为查看不了,wyt用户直接执行将ystest.c这个文件进行删除,竟然删除成功了

这里解释一下为什么删除成功,文件是否能够被删除是由文件所在的目录的权限进行决定的,这里就会产生这样的疑惑,直接把目录文件对于其他用户的写权限直接进行不给予不就直接妥了吗?但是真的就是这样吗?将其他用户的写权限进行关闭,那么文件的拥有者也不在拥有写文件的权限。所以就需要粘滞位进行解决这个问题

粘滞位使用

格式:chmod +t  目录名

注意事项:

  • 只能给目录进行使用粘滞位
  • 粘滞位是谁设置的,只能谁取下

其他用户再进行删除时,就会删除失败。

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

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

相关文章

【linux】线程(二)

10. pthread_t 类型 注意: 每一个线程的库级别的tcb的起始地址,就是线程的 tid每一个线程都有自己独立的栈结构线程和线程之间,也是可以被其他线程看到并访问的(比如全局函数) 代码 如果想要进程拥有私人的全局变量(即…

关于武汉芯景科技有限公司的限流开关芯片XJ6288开发指南(兼容SY6288)

一、芯片引脚介绍 1.芯片引脚 二、系统结构图 三、功能描述 1.EN引脚控制IN和OUT引脚的通断 2.OCB引脚指示状态 3.过流自动断开

C++ [项目] 恶魔轮盘赌

现在才发现C游戏的支持率这么高,那就发几篇吧 零、前情提要 此篇是我与 同学的共创,他负责写人,我负责写机,简称人机, 不过有一点小插曲…… 一、基本介绍 支持Dev-C5.11版本(务必调为英文输入法),基本操作看游戏里的介绍,怎么做的……懒得说,能看懂就看注释,没有…

Vue3结合vue-plugin-hiprint实现自定义打印模板设计与布局

简介 在现代Web应用开发中,打印功能是不可或缺的一部分,尤其是在需要输出标准化文档的场景下。本文将详细介绍如何在Vue3项目中利用vue-plugin-hiprint插件实现一个可定制的打印模板设计器,并通过具体示例来展示其配置与使用方法。 技术栈 …

Python如何导入模块及常见的导入方法

😀前言 在 Python 编程中,模块(Module)是非常重要的工具。它们可以帮助我们将代码进行逻辑分割和复用,从而提高代码的可读性和可维护性。本文将详细介绍如何导入模块、使用常见的导入方法,并简要介绍一些常…

[分享] SQL在线编辑工具(好用)

在线SQL编写工具(无广告) - 在线SQL编写工具 - Web SQL - SQL在线编辑格式化 - WGCLOUD

若依微服务15 - RuoYi-Vue3 实现前端独立运行

正文开始: RuoYi-Vue3 使用 Vue3 Element Plus Vite 技术栈。 GitHub 开源地址:https://github.com/yangzongzhuan/RuoYi-Vue3 本文介绍使用若依提供的在线后端接口,仅启动前端项目并进行界面开发,而无需启动后端服务。 一、克隆…

Vue笔记-浏览器窗口改变时,重新计算表格高度并设置

当窗口大小改变时,你监听 window 对象的 resize 事件,然后在事件处理程序中重新计算表格的高度。在 Vue 中,可以在组件中通过 created 生命周期钩子来添加事件监听器,然后在组件销毁时移除事件监听器。 如下vue代码: …

33 类与对象 · 下

目录 一、构造函数的深入 (一)构造函数的其他特点 (二)使用例 1、Date类与Time类显示写 2、Date类与Time类写一部分 (三)总结 (四)初始化顺序小题目 二、类型转化 &#xff…

Linux Redis查询key与移除日常操作

维护老项目Express node 编写的后端程序、有这么一个方法、没有设置redis过期时间(建议设置过期时间,毕竟登录生产服务器并不是每个人都有权限登录的!!!)。如果变动只能通过登录生产服务器、手动修改… 于…

@Autowired和@Resource的用法与区别

前言: Autowired 和 Resource 来自不同的“父类”,其中 Autowired 是 Spring 定义的注解,而 Resource 是 Java 定义的注解,它来自于 JSR-250(Java 250 规范提案)。当它们的实现类只有一个时,那…

github pages + hugo 搭建静态博客网站

体验地址 1. 起因, 目的: 其实6年前,我就写过这个。 项目代码 博客地址 最近想改写一下。 github 推荐的主题是 Jekyll, 我当时用的就是这个,感觉很麻烦。尤其是文章命名。 新的主题 hugo 用起来还行。 2.过程: 过程记录&am…

代码随想录算法训练营第六天|454四数相加II、 383赎金信、15三数之和、18四数之和

day06 1. 454四数相加II 首先定义 一个unordered_map,key放a和b两数之和,value 放a和b两数之和出现的次数。遍历大A和大B数组,统计两个数组元素之和,和出现的次数,放到map中。定义int变量count,用来统计 …

新电脑Win11家庭中文版跳过联网激活方法(教程)

预装Win11家庭中文版的新电脑,如何跳过联网激活;由于微软限制必须要联网激活,需要使用已有的微软账户登入或者注册新的微软账户后才可以继续开机使用,Win11联网后系统会自动激活。下面介绍一下初次开机初始化电脑时如何跳过联网激…

虚拟滚动列表如何实现?

highlight: a11y-dark 虚拟滚动列表&#xff0c;虚拟滚动的关键在于只渲染当前视口内可见的数据项&#xff0c;而不是一次性渲染所有数据项。这可以显著提高性能&#xff0c;尤其是在处理大量数据时。 以下是一个完整的虚拟滚动列表的示例代码&#xff1a; <!DOCTYPE htm…

RFC2616 超文本传输协议 HTTP/1.1

一、URL-俗称“网址” HTTP 使用 URL(Uniform Resource Locator&#xff0c;统一资源定位符)来定位资源&#xff0c;它是 URI(Uniform Resource Identifier&#xff0c;统一资源标识符)的子集&#xff0c;URL 在 URI 的基础上增加了定位能力 URI 除了包含 URL&#xff0c;还包…

ADC的交流参数

ADC的交流参数是衡量其在处理交流信号时性能的关键指标。一般包括&#xff1a; 1 信噪比&#xff08;Signal-to-Noise Ratio, SNR&#xff09; 这是衡量ADC输出信号中有用信号与噪声水平的比值。信噪比越高&#xff0c;表示ADC的性能越好。 SNR (dB) MaxRMSSignal / RMSNoise…

【你也能从零基础学会网站开发】 SQL Server结构化查询语言数据操作应用--DML篇 select语句数据查询操作详解 今天干货满满!《1024特别篇》

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;程序猿、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 select查询语句…

百度ocr服务自动实现文字识别、图片识别功能

百度ocr服务个人注册使用 介绍一个百度免费的ocr服务&#xff0c;通过调用SDK实现文字、图片识别等功能 1. 复制地址到自己的浏览器打开 https://cloud.baidu.com/doc/OCR/index.html2. 选择【登录】 3. 使用【短信登录】 4. 登录后需要选择【个人刷脸实名认证】 百度官方网…

第5.2章|25考研复试综合素质面试最常见问题50问【附上完整答案】超详细考研机械复试面试经验总结全流程 考研复试调剂问题看这一篇就够了!

接着上一章节的内容我们继续完善这50问的题目。上章节的内容参考这个文章。 第5.1章|25考研复试综合素质面试最常见问题50问【附上完整答案】超详细考研复试面试经验总结全流程 考研复试问题看这一篇就够了!考研复试调剂面试问题-CSDN博客https://blog.csdn.net/weixin_56510…