Linux权限管理(超详解哦)

Linux权限

  • 引言
  • 文件访问者的分类
  • 文件类型与访问权限
    • 文件类型
    • 访问权限
  • 文件权限值的表示方法
  • 修改权限的指令
    • chmod修改文件权限
      • 通过角色+/-/=权限来修改
      • 通过三个八进制数修改
    • chown修改所有者
    • chgrp修改所属组
    • umask修改或查看文件权限掩码
      • 文件创建时的权限
  • 目录的权限
    • 粘滞位
  • 总结

引言

我们知道,Linux中有两种用户:管理员用户root,以及普通用户
管理员用户root可以在Linux下做任何事情,而普通用户只能做有限的事情,可以通过su指令来切换用户类型su usersu root(root可以省略):

在这里插入图片描述
在这里插入图片描述
(普通用户的命令提示符为$,root用户的命令提示符为#)
普通用户切换到root,需要输入root账号的密码。

对于Linux有这两种用户,也就是两种角色。那么对于一个文件或目录是否也对不同的用户有不同的权限呢,当然是有的,在本篇文章中就来介绍Linux文件的权限管理:

文件访问者的分类

对于一个文件或目录,在Linux中有三种角色:

  1. 文件的所有者u(user)
  2. 文件所有者的所属组g(group)
  3. 其他用户o(others)

所有者、所属组、其他用户只是单纯的角色,它其实并不能决定某个用户就一定对一个文件有某种权限
用户对文件的权限不仅取决于这个用户对于这个文件的角色,还取决于文件的属性,即文件赋予角色什么权限。结合两者才能得知一个用户对于一个文件的权限。

文件类型与访问权限

我们在ll查看文件的属性的时候,展示出来许多文件的属性,其中就包括文件类型、对不同角色的访问权限、文件大小、最后一次修改时间、文件名等:
在这里插入图片描述
其中第一列为文件类型,后面的9列为访问权限,接下来的数字是链接数,接下来的两个名称分别为所有者与所属组,最后是最后一次修改时间与文件名:
在这里插入图片描述

文件类型

在Linux中,文件有如下几种类型:

  1. d:文件夹
  2. -:普通文件
  3. l:软链接(类似Windows的快捷方式)
  4. b:块设备文件(例如硬盘、光驱等)
  5. p:管道文件
  6. c:字符设备文件(例如屏幕等串口设备)
  7. s:套接口文件

访问权限

用户对一个文件的权限有三种:可读、可写、可执行

  1. 可读用r表示(read):
    有了可读权限,就可以读取文件的内容
  2. 可写用w表示(write):
    有了可写权限,就可以在文件中写入或删除内容
  3. 可执行用x表示(execute):
    有了可执行权限,就可以执行该文件
  4. -表示没有某个权限

而上面文件的属性中描述权限的内容有9列,它们分别是对所有者的权限、对所属组的权限以及对其他用户的权限。其中对每个角色三种权限的描述分别为可读、可写、可执行这些顺序都是固定的

所以如果对某个角色的某个权限的位置有相应的字符,就表示改角色有相应的权限,如果为-即表示该用户没有该权限:
例如这个testf文件:
在这里插入图片描述
前三列为对于所有者的权限,为r w -,表示该文件所有者对其可读可写,但是不可执行;
中间三列为所属组,为r w -,表示该文件所属组对其可读可写,但是不可执行;
后三列为其他用户,为r - -,表示其他用户对其可读,不可写不可执行

文件权限值的表示方法

对于三种权限有其固定的位置,当然可以通过二进制0与1的形式来表示一个角色对某文件的权限
如此,一个文件对于角色权限就有2^3=8种不同的二进制数来表示:
在这里插入图片描述

修改权限的指令

chmod修改文件权限

使用chmod指令可以修改文件的权限,该操作只能由文件的所有者以及超级用户root执行(前面说过root用户无视权限)

通过角色+/-/=权限来修改

chmod [选项] 用户+/-/=某项权限 文件名
用这样的格式可以修改文件的权限

其中,代表角色的符号为u(所有者)、g(所属组)、o(其他用户)、a(所有用户);
代表权限的符号为r(读权限)、w(写权限)、x(执行权限);
符号 +(向权限范围增加权限代号所表示的权限)、-(向权限范围取消权限代号所表示的权限)、=(向权限范围赋予权限代号所表示的权限):

给所属组g减去w权限
在这里插入图片描述
给所属组g直接赋予w权限
在这里插入图片描述
给其他用户o加上w权限
在这里插入图片描述

使用-R选项可以递归修改目录文件的权限
在这里插入图片描述

通过三个八进制数修改

chmod [选项] 三个八进制数 文件名
用于修改用户的权限

其中,第一个八进制数表示修改后的所有者权限,第二个表示修改后的所属组权限,第三个表示其他用户权限。
在前面,我们就已经用8个八进制数来表示所有的权限组合,所以这里直接使用即可:
在这里插入图片描述
同样的,使用-R选项可以递归处理。

chown修改所有者

chown [选项] 用户名 文件名
用于修改文件的所有者,只有root用户可以修改

在这里插入图片描述
-R选项可以递归处理目录下的文件:
在这里插入图片描述

chgrp修改所属组

chgrp [选项] 组名 文件名
用于更改文件的所属组用户,只能由root用户使用

我们可以先来创建一个组qqq,并创建一个用户temp,使qqq为其主用户组。然后来使用chgrp改变文件的所属组:
(可以通过groupadd [用户组名称](创建一个组qqq),与useradd -g [用户组名称] [新用户名称] (新建一个用户并使该组为主用户组)指令来实现)
在这里插入图片描述
-R选项可以实现目录的递归处理:

在这里插入图片描述

umask修改或查看文件权限掩码

umask 可以用于查看文件权限掩码
umask [三个八进制数] 用于修改文件权限掩码

在介绍这条指令的使用之前,我们先来了解一下文件权限掩码的作用:

文件创建时的权限

普通文件创建时的默认权限为0666,目录文件创建时的默认权限为0777。但是我们在新建一个新的文件或目录后,其权限却不是0666与0777:
在这里插入图片描述
新建一个文件的权限其实是默认的权限减去该用户的文件权限掩码(八进制),对于二进制的三位数而言,就是将用户的文件权限掩码按位取反后,再按位与(&)上默认权限。

普通用户默认的文件权限掩码为0002,root用户默认的文件权限掩码为0022
我们可以使用umask指令来查看:
在这里插入图片描述
在这里插入图片描述

对于上面的testf2文件与testdir2文件,其初始的权限就是 666 - 002 = 664(rw- rw- r--)与 777 - 002 = 775(rwx rwx r-x)。也可以通过二进制来计算。

使用umask [三个八进制数] 可以修改文件权限掩码:
在这里插入图片描述
将文件权限掩码改为0026后,新建的普通文件的权限就是 666 - 026 = 640(rw- r-- ---)。

目录的权限

对于目录:

  1. 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中
  2. 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容
  3. 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件

我们可以来验证一下,我们之前创建了一个temp用户,这个文件夹对其他用户与所属组都是没有任何权限的:
在这里插入图片描述
这时,作为qiuzeyu账户,仅仅只能看见这个目录而已,其他什么都做不了:
在这里插入图片描述
我们依次打开temp对其他用户的权限(root操作):
只有x:(可以进入,不能查看与修改)
在这里插入图片描述
xr(可以进入,查看,不能修改)
在这里插入图片描述
r w x(可以进入、查看、修改)
在这里插入图片描述

但是,这里有一个问题,就是只要用户有某目录的写权限,即使它没有这个目录中文件的写权限,那他也可以直接删除该目录中的文件(以temp下的tempdir目录演示):

当tempdir目录对其他用户有写权限时,就可以直接删除这个目录中的文件,无论对其中的文件是否有写权限:
在这里插入图片描述
这就很荒谬,属于是一个漏洞,都不能进行写入竟然可以直接删除这个文件。

使用粘滞位就可以解决这个问题:

粘滞位

粘滞位替代了其他用户的可执行权限的位置,用t表示。
可以使用chmod +t [文件名]的方式给目录添加粘滞位

使用粘滞位后,该目录中的文件只能由目录的所有者、目录中文件的所有者以及root账户删除:
在这里插入图片描述
在这里插入图片描述

总结

到此,关于Linux文件权限的内容就介绍完了
包括文件访问者的分类,文件类型与访问权限,文件权限值的表示方法,修改权限的指令,目录的权限与粘滞位

如果大家认为我对某一部分没有介绍清楚或者某一部分出了问题,欢迎大家在评论区提出

如果本文对你有帮助,希望一键三连哦

希望与大家共同进步哦

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

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

相关文章

驱动模块和printk函数

目录 1. 驱动模板 1.1. 在源码工程路径下创建.c文件 1.2. 编写驱动模板 1.3. 将模板放到ubuntu上 1.4. 书写Makefile 1.5. 编译和安装 2. printk 2.1. Source Insight查找命令 2.2. printk讲解 2.2.1. 分析函数 2.2.2. 编写代码 2.3. 拓展 2.3.1. 关于printk函数测…

ESP32开发环境搭建Windows VSCode集成Espressif IDF插件ESP32_IDF_V5.0开发编译环境搭建

一、安装ESP32-IDF库 下载网址:https://dl.espressif.com/dl/esp-idf/ 打开上面的网页,选择单击页面中 ESP32-IDF v5.0.2 - Offine Installer,5.0.2是当前最新版本,如果没有ESP32-IDF v5.0.2 - Offine Installer,说明…

ADB WIFI 链接

ADB WiFi链接手机 必须在同一网络下(本人用的台式机网线手机连路由器WIFI) 1.先确认USB数据线是否成功链接了手机 adb devices不管前面设备是什么名字,但是后面必须为device状态才算链接成功了,offline状态是不行的 有些没开启…

《微服务架构设计模式》第二章 服务的拆分策略

内容总结自《微服务架构设计模式》 服务的拆分策略 一、架构是什么软件架构的41视图模型为什么重要分层架构风格 二、定义微服务如何定义服务拆分难点定义服务API 一、架构是什么 软件架构的定义:计算机系统的软件架构是构建这个系统所需要的一组结构,包…

物联网Lora模块从入门到精通(八)Lora无线通信

一、前言 在某些环境下,无法通过有线传输数据,这时候我们需要使用Lora无线通信传输数据,Lora无线数据传输具有低功耗、距离长的特点,常用于工厂内等,需要Lora基站。 我曾做过距离测试:Lora模块距离测试-物联…

Linux---vim的使用

专栏:Linux 个人主页:HaiFan. 本章为大家带来Linux工具—vim Linux工具 关于rzszyumvim的基本概念vim的基本操作vim正常模式命令集vim末行模式命令集简单vim配置配置文件的位置常用配置选项 关于rzsz 这个工具用于windows机器和Linux机器通过Xshell传输…

PHP伪协议filter详解,php://filter协议过滤器

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 php://filter 一、访问数据流二、过滤数据流三、多…

electron 快速创建一个本地应用

参考官方文档流程 快速入门 | Electron 建议先全局安装electron,npm install -g electron 开发过程中可以在本地开发安装 使用electron快速创建一个web页面 ,参考官方demo 实例 electron-quick-start 第一步: mkdir my-electron-app &am…

Linux

Linux 摘要写在前面1.Linux介绍2.Linux基本概念与命令3.Shell编程4.桌面操作系统框架5.GTK图形编程6.QT图形编程7.DBUS8.GDB9.Wine开发10.高可用存储技术11.高可用网络技术12.云计算 摘要 本篇博客参考中科方德国产操作系统的培训课程,对其主要内容进行总结&#x…

超越密码:网络安全认证的未来

你的物理现实的数字对应物正在惊人地增长。虽然肯定会有积极的结果,但随着互联网的发展,与之相关的风险也在迅速增加。在讨论网络安全风险管理时,首先想到的是密码。但当出现诈骗、网络钓鱼等威胁时,这还不够。 那么,…

大数据分析与机器学习:技术深度与实例解析【上进小菜猪大数据系列】

上进小菜猪,沈工大软件工程专业,爱好敲代码,持续输出干货。 大数据分析与机器学习已成为当今商业决策和科学研究中的关键组成部分。本文将深入探讨大数据技术的背景和原则,并结合实例介绍一些常见的大数据分析和机器学习技术。 …

Redux的基础操作和思想

什么是Redux? Redux是JavaScript应用的状态容器,提供可预测的状态管理! Redux除了和React一起用外,还支持其它框架;它体小精悍(只有2kB, 包括依赖),却有很强大的插件扩展生态! Redux提供的模式和工具使您更容易理解应用程序中的…

与用户同行!2023卡萨帝开启高端生活方式新时代

6月20日,2023思享荟暨卡萨帝品牌升级发布会在重庆国际博览中心举行。在经历了高端产品引领、高端品牌引领、高端场景引领后,卡萨帝启动全新品牌升级,持续与用户同行,开启高端生活方式引领的新时代。 现场,海尔智家副总…

量化交易:止盈策略与回测

我们买基金或股票的时候通常用最简单的策略进行决策:低买高卖,跌的多了就加仓拉低持有成本,达到收益率就卖出。 那么如何用代码表示这个策略呢?首先定义交易信号则是:0.5%时买入,目标止盈线是1.5%&#xf…

ELFK日志分析系统并使用Filter对日志数据进行处理

目录 一、 FilebeatELK 部署Filebeat 节点上操作 二、Filtergrok 正则捕获插件内置正则表达式调用自定义表达式调用 mutate 数据修改插件multiline 多行合并插件date 时间处理插件 一、 FilebeatELK 部署 Node1节点(2C/4G):node1/192.168.15…

Django rest framework基本知识

使用pycharm生成Django项目后,会生成工程目录和app目录 工程目录下5个文件,settings.py是全局配置相关的 urls.py是路有相关的 app相关的目录 models.py 数据库ORM对应的模型类 serializers.py 序列化与反序列化处理 views.py 根据request进行…

手工测试没有前途,自动化测试会取代手工测试?

在测试行业,一个一直被讨论的问题就是:手工测试没有前途,自动化测试会取代手工测试? 首先说结论:自动化测试不会取代手工测试,这完全是两个维度的事情。为什么不会呢?我们需要从本源上说起。 什…

DINO-DETR匈牙利匹配与加噪过程学习记录

今天再来回顾一下DINO中匈牙利匹配与损失函数部分,该部分大致与DETR相似,却又略有不同。 为了查看数据方便,博主将num_query改为20,max_select值也为20。 匈牙利匹配过程 首先是数据送入匈牙利匹配中进行标签匹配过程了。 获取…

【Android自动化测试】Ui Automator技术(以对QQ软件自动发说说为例)

文章目录 一、引言二、了解(Android官方文档)1、UiDevice 类2、UI Automator API3、UI Automator 查看器 三、使用1、依赖2、代码 一、引言 描述:UI Automator 是一个界面测试框架,适用于整个系统上以及多个已安装应用间的跨应用…

react---react router 5 基本使用

目录 1.路由介绍 2.路由使用 3.路由组件和一般组件 4.Switch 单一匹配 5.解决二级路由样式丢失的问题 6.路由精准匹配和模糊匹配 7.Redirect路由重定向 1.路由介绍 路由是根据不同的 URL 地址展示不同的内容或页面,在 SPA 应用中,大部分页面结果…