Linux的权限(二)

news2024/9/22 5:35:43

目录

前言

文件类型和访问权限(事物属性)

补充知识 

文件类型

文件操作权限

修改文件权限

chmod指令

文件权限值的表示方法

字符表示方法

8进制数值表示方法

权限有无带来的影响

修改文件角色

chown与chgrp指令

目录的rwx权限

补充知识

umask指令

共享文件夹的创建


前言

本节讨论的内容大都将依照本图展开😋

文件类型和访问权限(事物属性)

补充知识 

权限 = 用户的角色(具体的人) + 文件权限属性

当我们使用ll指令查看文件或目录的详细属性时,我们发现每一行的开头都会有这样的字符,首字符自成一组,剩余字符三三为一组,每组应三种角色(“拥有者”,“所属组”,“Other”)对该文件/目录的属性的操作权限。其中,首字符表示文件的类型,组中的字符表示对应角色对该文件的使用权限,组中第一个字符“r”表示读操作权限,第二个字符“w”表示写操作权限,第三个字符“x”表示执行操作权限,如果角色未拥有该文件的某项操作权限则用"-"代替该字符(r或w或x)

文件类型

概念:windows会根据文件的后缀名区分文件类型,但Liunx不会根据文件后缀名区分文件类型

        当我们利用mv指令重命名文件时,以.txt为后缀的文件、以.c为后缀的文件、以.exe为后缀的文件都是可执行文件:

linux通过ls -l指令查看到的文件的第一个属性列来确定文件的类型,该列的参数有以下几种: 

  • d:目录文件(mkdir创建的文件)
  • -:普通文件(文本文件、可执行程序、库等都是普通文件)
  • l:链接文件(类似Windows的快捷方式,更细致的可以说是软链接文件)
  • b:块设备文件(主要代表是磁盘)
  • p:管道文件
  • c:字符设备文件(显示器就是字符设备文件)

1、以b开头的磁盘文件(虚拟机中的位置不一定是vda,可能是sda等,但一定在dev目录下):

2、以c开头的字符设备文件:

关于字符设备文件的具体内容,请查看:中Linux的基本指令(三)的补充知识

3、以p开头的管道文件(mkfifo指令创建管道文件):

4、以l开头的链接文件(了解即可)

以windows为例,当我们点击桌面上的qq文件时,其实我们打开的只是QQ的快捷方式:在Windows操作系统中,桌面上的快捷方式实际上是一个特殊类型的文件,它包含了目标程序(如.exe文件)所在位置以及其他相关属性。当你双击或单击该快捷方式时,操作系统会读取其中指定的链接信息,并自动打开对应路径下的可执行文件:

学习Linux的基本阶段我们常见的是d和-两种文件类型 

注意事项:Liunx系统不会根据文件后缀名区分文件类型,但是Liunx系统上的工具gcc会区分文件类型(Linux系统 != gcc):

结论:为了方便理解和记忆文件的含义,依然推荐在Liunx中使用像windows中依据文件后缀区分文件类型的方式来创建和识别文件

文件操作权限

  • r:对文件来说,具有读取该文件内容的权限;对目录来说,具有浏览该目录信息的权限
  • w:对文件来说,具有修改该文件内容的权限;对目录来说,具有删除和移动目录内文件的权限
  • x:对文件来说,具有执行该文件的权限;对目录来说,具有进入目录的权限
  • -:表示不具有该项权限

注意事项: 文件可执行 = 是可执行文件 + 拥有可执行文件的权限

1、是可执行文件但是没有可执行权限:

2、不是可执行文件但是有可执行权限:

3、既是可执行文件又有可执行权限:

修改文件权限

权限 = 用户的角色(具体的人) + 文件权限属性

文件权限也是文件的一种属性

只有文件的拥有者和超级账户root有权限修改文件的权限

chmod指令

语法chmod [选项] [对文件权限的操作] 文件名

功能 设置文件的访问权限

对文件权限的操作的格式:用户表示符 “+ 或 - 或 =” 权限字符(可以是多个)

  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限

用户表示符:

  • u:拥有者(user)
  • g:拥有者的同组成员(group)
  • o:其它用户(other)
  • a:所有用户(all)

常用选项:

  • -R:递归修改文件或目录的权限

常见使用方式:

1、chmod o-r test1.txt,取消other对test1.txt文件的读权限:

2、chmod u+x test1.txt,增加user对test1.txt文件的可执行权限:

3、chmod o+rwx test1.txt,增加other对test1.txt文件的读、写、可执行权限:

4、chmod u-r,o-r test1.txt,同时取消user和other对test1.txt文件的读权限:

5、chmod a-rwx test1.txt,同时取消所有角色的读、写、执行权限:

文件权限值的表示方法

字符表示方法

8进制数值表示方法

        我们可以用二进制1表示某文件的拥有者和所属组能正常使用该文件的某项权限,用二进制0表示不能正常使用该文件的某项权限,由于角色对文件的操作权限三三为一组,所以某角色对文件的所有操作权限可以用八进制来表示:

1、chmod 777 test.txt,将test.txt文件的三个角色对应的文件操作权限全部更改为rwx:

2、chmod 731 test.txt,将test.txt文件拥有者的操作权限改为rwx,所属组的操作权限改为wx,其他人的操作权限改为x:

权限有无带来的影响

1、当我们在普通用户的test01目录下创建test.txt后,将该文件的读、写、执行权限全部变为”-“,然后进行cat读文件,echo写文件(由于.txt不是可执行文件所以root和普通用户都报错)可以发现的是,即使是普通用户自己创建出来的文件,当没有对该文件地读写权限时也仍然报错,而超级用户还是那么的无敌,即使作为other没有读、写权限也可以正常使用:

结论:普通用户自身也受到权限的约束,即便文件是自己创建的,root用户不受权限约束

2、我们尝试用作为other的张三对test.txt文件进行读、写、执行操作,发现也会失败:

此外,当我们赋予文件的拥有者和所属组读和写的权限后,拥有着和所属组可以正常使用了,但是作为other的张三依然不能使用:

结论:文件权限存在的意义是为了保证普通用户的文件的安全性

3、当文件的拥有者和所属组均为普通用户,且都拥有对文件的读写权限时,当我们取消了拥有者的读写权限,保留了所属组的读写权限时,虽然普通用户作为拥有者没了对文件的读写权限,但是作为所属组仍然拥有对文件的读写权限,但仍然无法正常使用:

但是,当我们将文件的拥有者改为root,将文件的所属组仍保留为普通用户,此时再次用普通用户读、写文件,可以发现成功读写文件了:

结论:Linux对用户身份识别时,只识别一次,识别成功则不再识别,识别失败则继续识别直到识别成功(用户在访问文件时,系统会判定用户对于该文件是拥有者、所属组、Other,然后再去三三为一组的权限列表里进行权限识别,然后确定该用户是否有对该文件的某项权限,这里普通用户对该文件是所属组,不是拥有者所以第一次匹配身份识别失败,第二次身份识别成功,然后该文件的所属组拥有对该文件的读写权限,所以此时普通用户就可以正常的读写文件了)

修改文件角色

        在上面我们提到了,权限 = 用户的角色(具体的人) + 文件属性,我们通过chmod实现了对文件属性权限的修改,现在我们要学习对用户的角色进行修改:

chown与chgrp指令

语法chown/chgrp [选项] 用户名 文件名 或 chown 用户名1:用户名2 文件名

功能修改文件或目录的拥有者和所属组  或同时修改文件或目录的拥有者和所属组

注意事项:对普通用户而言,将自己文件给予他人的操作强制的,需要sudo指令提权

常见选项:

  • -R: 递归修改文件或目录的角色

常见使用方式:(作者当前环境sudo执行失败,后续会放图)

1、chown zhangsan test.txt,将test.txt文件的拥有者换为zhangsan:

2、chgrp zhangsan test.txt,将test.txt文件的所属组换为zhangsan:

3、chown yyf:root test.txt,将test.txt文件的拥有者和所属组分别改为yyf和root:

当一个文件的拥有者和所属组改变后,other的身份自然就会发生改变所以不需要修改other

目录的rwx权限

        目录也是一个文件,所以目录也必然满足文件 = 内容 + 属性,对于目录而言,目录的内容就是目录中文件的详细信息,目录的属性就是我们ll指令查看目录显示的内容目录没有读取内容信息的r权限在进入目录后自然就看不了目录中文件的详细信息,目录没有执行的x权限自然就进入不了目录,目录没有写内容的w权限在进入目录后自然在就无法对文件进行操作:

1、进入目录需要x权限:

2、查看目录内的文件信息需要r权限:

3、对目录内文件的新建、修改、删除文件需要w权限:

补充知识

        创建普通文件的默认起始权限为0666,即-rw-rw-rw-;创建目录文件的默认起始权限为0777,即drwxrwxrwx,可实际上的结果却是0664的-rw-rw-r--和0775的drwxrwxr-x,这是因为Linux会在创建文件时从默认权限中过滤掉出现在umask中的权限:

umask指令

语法umask 权限值

功能查看或修改文件掩码

注意事项:

1、直接使用umask可以查看当前系统下的文件掩码,不同环境下文件掩码的值不同:

2、(博主的)超级用户和普通用户的默认文件掩码值分别为:0022和0002:

3、最终权限 = 起始权限 & (~umask):

共享文件夹的创建

1、每个普通用户不会拥有进入其它的用户目录的权限:

​​​​​​​

2、因此,共享文件不能建立在一个用户自己的目录下,只能在系统的非用户目录下创建 :

思考:该文件对所有人都有读、写、执行权限,那么其它人可以删除我创建的共享文件夹吗?

~over~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TensorFlow神经网络中间层的可视化

TensorFlow神经网络中间层的可视化 TensorFlow神经网络中间层的可视化1. 训练网络并保存为.h5文件2. 通过.h5文件导入网络3. 可视化网络中间层结果(1)索引取层可视化(2)通过名字取层可视化 TensorFlow神经网络中间层的可视化 1. …

nodejs+vue+微信小程序+python+PHP技术下的音乐推送系统-计算机毕业设计推荐

3.2.1前台用户功能 前台注册用户的功能如下: 注册登录:用户填写个人信息,并验证手机号码进行账户注册,注册成功后方可登录系统。 歌手介绍:用户可以在线进行歌手介绍信息查看等。 音乐库:用户可以在音乐库查…

Flink的处理函数

之前的流处理API,无论是基本的转换、聚合,还是更为复杂的窗口操作,其实都是基于DataStream进行转换的,所以可以统称为DataStream API。 在Flink更底层,我们可以不定义任何具体的算子(比如map,f…

Arrays.asList()方法:陷阱与解决之道

在Java编程中,Arrays类提供了一系列用于操作数组的实用方法。其中,​Arrays.asList()​方法是一个常用的方法,用于快速将数组转换为List集合。然而,这个方法存在一些潜在的陷阱,可能导致出现意外的行为。本文将介绍​A…

智能优化算法应用:基于和声算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于和声算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于和声算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.和声算法4.实验参数设定5.算法结果6.参考文献7.MA…

管理类联考——数学——真题篇——按知识分类——几何——解析几何

文章目录 解析几何2023真题(2023-07)-几何-解析几何-最值-画图求最值-两线相减求最大-联想三角形的“两边差小于第三边”,当为第三边为最大真题(2023-19)-几何-解析几何-最值-画图求最值-圆方程画出圆的形状-两点间距离…

Mr. Cappuccino的第67杯咖啡——MacOS通过PD安装Win11

MacOS通过PD安装Win11 下载ParallelsDesktop安装ParallelsDesktop激活ParallelsDesktop下载Windows11安装Windows11激活Windows11 下载ParallelsDesktop ParallelsDesktop下载地址 安装ParallelsDesktop 关闭上面的窗口,继续操作 激活ParallelsDesktop 关闭上面的…

在官网免费创建一个云mongoDB数据库

MongoDB的设计目标是提供高性能、高可用性、可扩展性和易用性。它采用了文档存储模型,将数据以类似JSON的BSON(Binary JSON)格式存储,并且支持动态模式,允许应用程序更灵活地存储和查询数据。MongoDB还支持水平扩展&am…

Postman接口测试工具使用总结

一、前言 在前后端分离开发时,后端工作人员完成系统接口开发后,需要与前端人员对接,测试调试接口,验证接口的正确性可用性。而这要求前端开发进度和后端进度保持基本一致,任何一方的进度跟不上,都无法及时…

three.js模拟太阳系

地球的旋转轨迹目前设置为了圆形&#xff0c;效果&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div><div c…

实操Nginx(七层代理)+Tomcat多实例部署,实现负载均衡和动静分离

目录 Tomcat多实例部署&#xff08;192.168.17.27&#xff09; 1.安装jdk&#xff0c;设置jdk的环境变量 2.安装tomcat在一台已经部署了tomcat的机器上复制tomcat的配置文件取名tomcat1 ​编辑 编辑配置文件更改端口号&#xff0c;将端口号改为8081 启动 tomcat&#xff…

【机器学习】libsvm 简单使用示例(C++)

libsvm简单使用demo 一、libsvm使用说明 二、svm.h源码 #ifndef _LIBSVM_H //如果没有定义 _LIBSVM_H 宏 #define _LIBSVM_H //则定义 _LIBSVM_H 宏&#xff0c;用于防止重复包含#define LIBSVM_VERSION 317 //定义一个宏&#xff0c;表示 libsvm 的版本号#ifdef __cplusplus /…

uniapp之屏幕右侧出现滚动条去掉、隐藏、删除【好用!】

目录 问题解决大佬地址最后 问题 解决 在最外层view上加上class“content”;输入以下样式。注意&#xff1a;两个都必须存在在生效。 .content {/* 跟屏幕高度一样高,不管view中有没有内容,都撑开屏幕高的高度 */height: 100vh; overflow: auto; } .content::-webkit-scrollb…

计算机网络考研辨析(后续整理入笔记)

文章目录 体系结构物理层速率辨析交换方式辨析编码调制辨析 链路层链路层功能介质访问控制&#xff08;MAC&#xff09;信道划分控制之——CDMA随机访问控制轮询访问控制 扩展以太网交换机 网络层网络层功能IPv4协议IP地址IP数据报分析ICMP 网络拓扑与转发分析&#xff08;重点…

软件设计师——计算机网络(三)

&#x1f4d1;前言 本文主要是【计算机网络】——软件设计师——计算机网络的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1…

Mac安装Typora实现markdown自由

一、什么是markdown Markdown 是一种轻量级标记语言&#xff0c;创始人为约翰格鲁伯&#xff08;John Gruber&#xff09;。 它允许人们使用易读易写的纯文本格式编写文档&#xff0c;然后转换成有效的 XHTML&#xff08;或者HTML&#xff09;文档。这种语言吸收了很多在电子邮…

【AI工具】GitHub Copilot IDEA安装与使用

GitHub Copilot是一款AI编程助手&#xff0c;它可以帮助开发者编写代码&#xff0c;提供代码建议和自动完成功能。以下是GitHub Copilot在IDEA中的安装和使用步骤&#xff1a; 安装步骤&#xff1a; 打开IDEA&#xff0c;点击File -> Settings -> Plugins。在搜索框中输…

棋牌的电脑计时计费管理系统教程,棋牌灯控管理软件操作教程

一、前言 有的棋牌室在计时的时候&#xff0c;需要使用灯控管理&#xff0c;在开始计时的时候打开灯&#xff0c;在结账后关闭灯&#xff0c;也有的不需要用灯控&#xff0c;只用来计时。 下面以 佳易王棋牌计时计费管理系统软件为例说明&#xff1a; 软件试用版下载或技术支…

Selenium安装WebDriver:ChromeDriver与谷歌浏览器版本快速匹配_最新版120

最近在使用通过selenium操作Chrome浏览器时&#xff0c;安装中遇到了Chrome版本与浏览器驱动不匹配的的问题&#xff0c;在此记录安装下过程&#xff0c;如何快速找到与谷歌浏览器相匹配的ChromeDriver驱动版本。 1. 确定Chrome版本 我们首先确定自己的Chrome版本 Chrome设置…

NE555汽车防盗报警电路图

实用汽车防盗报警电路如图所示。它主要由防盗部分和报警两大部分电路组成。防盗电路&#xff1a;当汽车主人离开汽车时&#xff0c;将防盗开关S置于“B”位置&#xff0c;使汽车进入防盗状态。当有窃贼进入驾驶室企图发动汽车将其盗走时&#xff0c;只要拧动点火开关&#xff0…