【Linux】权限问题

Linux权限

  • 一、Linux 权限的概念
  • 二、Linux 权限管理
    • 1. 文件访问者的分类
    • 2. 文件类型和访问权限(事物属性)
    • 3. 文件访问权限的相关设置方法
  • 三、默认权限
    • 1. 对文件和目录进行操作需要的权限
    • 2. 文件和目录的默认权限
    • 3. 粘滞位

一、Linux 权限的概念

Linux 下有两种用户:超级用户(root)、普通用户。
超级用户:可以在 Linux 系统下做任何事情,不受限制;
普通用户:在 Linux 下做有限的事情。
超级用户的命令提示符是 “#” ,普通用户的命令提示符是 “$”

命令:su [用户名]
功能:切换用户。
例如,要从 root 用户切换到普通用户 user,则使用 su user。 要从普通用户 user 切换到 root 用户则使用 su root(root可以省略),此时系统会提示输入 root 用户的密码,如下图:

在这里插入图片描述

二、Linux 权限管理

我们在使用 ll 指令的时候,通常会看到文件或目录名前面有一串的数据,那么它们是表示什么意思呢?例如下图红色框中:

在这里插入图片描述

首先我们知道,下面三列就是时间,准确来说是上一次修改文件或目录的时间:

在这里插入图片描述

然后就是下面这一列的数字,就是表示文件或目录的大小:

在这里插入图片描述
再下来我们了解两列 lmy 表示什么。

1. 文件访问者的分类

首先我们先要了解,文件访问者的分类分为三类:

  1. 文件和文件目录的所有者:u—User
  2. 文件和文件目录的所有者所在的组的用户:g—Group
  3. 其它用户:o—Others

而在我们下图中的两列 lmy中,第一列 lmy 表示的是 user,第二列表示 group,如下图:

在这里插入图片描述

而除了 usergroup 之外,就是属于 other 组了,属于 other 组的用户没有权限访问这个文件或者目录。

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

而最前面的那段字符,如下图:

在这里插入图片描述

这段字符表示什么意思呢,这段字符的含义如下:

在这里插入图片描述

而文件类型中的表示含义如下:

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

访问者权限的基本表示如下:

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

例如下图的 Test 目录中:

在这里插入图片描述

第1位的 d 就是表示这个文件类型为目录;2-4位为 user 所拥有的权限,分别为读写执行;5-7位为 group 所拥有的权限,也是读写执行;最后三位为 other 的权限,只有读和执行的权限,没有写的权限。

3. 文件访问权限的相关设置方法

命令:chmod
功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名

说明:只有文件的拥有者root 才可以改变文件的权限

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

用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户

例如我们 touch 一个文件,它的默认权限如下图:

在这里插入图片描述

我们给 user 加上 x 权限:

在这里插入图片描述

此时 test.c 的 user 用户就有了 x 权限;我们再给 other 用户加上 rwx 权限,如下图:

在这里插入图片描述

最后我们再将 group 组的权限全部去掉,如下图:

在这里插入图片描述

修改权限的操作就如上所示,其实我们还有另外一种修改权限的方式,就是使用二进制的方式;

例如 rwx 是三位字母,我们可以使用 01 表示其权限的有无;所以这三位我们可以看作整体,组成一个八进制的数字,来判断其用户权限的有无,例如 r-x,可以用二进制 101 表示,其八进制为 5–x 可以用二进制 001 表示,其八进制为 1rwx 可以用二进制 111 表示,其八进制为 7

所以,在修改权限时,我们也可以使用三位8进制数字的方式修改,例如我们要将 other 的权限全部去掉,而 usergroup 的权限全部加上,如下图:

在这里插入图片描述

再例如我们将所有组的权限都去掉,如图:

在这里插入图片描述

以上就是修改权限的相关内容。

三、默认权限

1. 对文件和目录进行操作需要的权限

在学习默认权限之前,我们需要了解我们对文件或目录进行操作需要的权限。

首先我们先了解一下进入一个目录需要什么样的权限呢?我们逐一尝试,首先我们先保留 读(r ) 权限:

在这里插入图片描述

读( r) 权限不能进入一个目录,然后我们分别只保留 写(w)执行(x) 权限 :

在这里插入图片描述

在这里插入图片描述

我们可以观察到,进入一个目录是只需要 执行(x) 权限的。

然后我们将 dir 的权限放开,在里面新建一些文件,如下:

在这里插入图片描述

然后我们对 dir 读(r )、写(w) 去掉,我们进入这个目录,然后发现查看和新建文件都不可以了,如图:

在这里插入图片描述

原因很简单,因为 dir 这个目录只有 执行(x) 权限,而 ll 指令查看文件属性是需要 读( r) 权限;而新建文件则需要 写(w) 权限,大家可以自己去实现验证一下。

所以总结一下:

  1. 是否允许一个指定用户查看目录的文件列表,需要 读( r) 权限。
  2. 是否允许一个指定用户在当前目录下新建文件或删除文件,需要 写(w) 权限。
  3. 进入一个目录需要 执行(x) 权限。
  4. 一个文件一定是属于一个目录的,一个文件能不能被查看,是由目录的权限决定的。
  5. 一个文件一定是属于一个目录的,一个文件能不能被删除,不是由这个文件本身决定的,是由所属目录与对应账户是否拥有 写(w) 权限决定的!

2. 文件和目录的默认权限

我们要知道,新建文件默认权限为 666 ;新建目录默认权限为 777;但是实际上,我们新建一个文件和目录观察,它们的默认权限并不是我们所说的,如下图:

在这里插入图片描述

如图我们可以观察到,新建的 test 目录默认权限为 776;新建的 test.c 文件默认权限为 664;原因就是创建文件或目录的时候还要受到 umask 权限掩码的影响。umask 功能:查看或修改文件掩码。

我们在命令行输入 umask 即可查看权限掩码,如下图:

在这里插入图片描述

修改权限掩码在 umask 后跟上权限掩码即可:

在这里插入图片描述

那么为什么会存在权限掩码呢?权限掩码是什么呢?它有什么用途呢?下面我们来分析一下。

假设我们不受权限掩码的限制,我们将权限掩码改成 000 ,然后创建一个目录,如图:

在这里插入图片描述

然后我们进入这个目录创建一个文件:

在这里插入图片描述

现在这个文件的默认权限 666,因为我们的权限掩码改成了 000;现在这个文件中,other 组是有 写(w) 的权限,所以就意味着所有人都可以对这个文件进行修改,这就使这个文件变得不安全;所以我们应该把这个文件中 other 组的 写(w) 权限去掉,如下图:

在这里插入图片描述

现在这个文件就变得安全了吗?不是!虽然在这个文件中,other 组没有了 写(w) 的权限,但我们前面讲过,一个文件能不能被删除,不是由这个文件本身决定的,是由所属目录与对应账户是否拥有 写(w) 权限决定的!我们要知道,这个目录对 other 组是放开所有权限的,因为权限掩码是 000,所以就意味着所有人都可以进入这个目录然后删除这个文件,意思就是你不让我看,我就毁掉!这意味着这整个目录都是不安全的!

所以我们回过头来看,为什么要有权限掩码,我们到现在应该可以猜到了,是为了保护目录和文件的安全,具体一点,就是不让 other 组对我们的目录和文件构成威胁。

那么权限掩码是怎么做到的呢?原因是,凡是在权限掩码中出现的权限,最终都要在起始权限中去掉。 例如下图:

在这里插入图片描述

所以权限掩码去掉了 other 组的 写(w) 权限,就有效地保护了目录以及目录内的文件安全。上图中的具体实现就是:最终权限 = 起始权限 & (~umask).

所以这就讲通了新建一个目录的实际默认权限为什么是 775;新建一个文件的实际默认权限为什么是 664 了。

3. 粘滞位

一般而言,我们上面所说的情况都不太会出现,因为不同的账号,是不会在同一个目录下的;但是如果有特殊情况,我们多个账号想互相协同,共享一些数据,但又不希望别人修改我们的数据呢?

这时候就需要我们用到粘滞位了,粘滞位的使用是 chmod +t 目录名 ,粘滞位是只能给目录设置的,使用如下:

在这里插入图片描述

当一个目录被设置为粘滞位,则该目录下的文件只能由

  1. 超级管理员(root)删除
  2. 该目录的所有者删除
  3. 该文件的所有者删除

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

达梦数据库物化视图介绍

概述 本文将介绍达梦数据库物化视图,给出其概念及相关创建、使用示例。 1.物化视图概念 物化视图 (MATERIALIZED VIEW) 是目标表在特定时间点上的一个副本,占用存储空间,即将查询出来的数据存储在数据库中。当所依赖的一个或多个基表的数据…

bh002- Blazor hybrid / Maui 使用ORM和数据库快速教程

接上篇 bh002- Blazor hybrid / Maui 保存设置快速教程 源码 10. 添加引用 Index.razor.cs 添加引用 using FreeSql.DataAnnotations; #if WINDOWS using Windows.Storage; #endif 11. 简单使用freesql ORM 初始化数据,添加数据 public partial class Index {[DisplayNam…

[oneAPI] 基于BERT预训练模型的命名体识别任务

[oneAPI] 基于BERT预训练模型的命名体识别任务 Intel DevCloud for oneAPI 和 Intel Optimization for PyTorch基于BERT预训练模型的命名体识别任务语料介绍数据集构建使用示例 命名体识别模型前向传播模型训练 结果 参考资料 比赛:https://marketing.csdn.net/p/f3…

Unity - 制作package 插件包

1.将制作的插件包代码放置一个根目录下 2.在跟目录下创建package.json文件 //package.json {"name": "com.unity.customlibrary", //插件包名:com.组织名.包名"displayName": "CustomLibrary", //显示的插件名"v…

OpenCV项目开发实战--基于Python/C++实现鼠标注释图像和轨迹栏来控制图像大小

鼠标指针是图形用户界面 (GUI) 中的关键组件。没有它,您就无法真正考虑与 GUI 进行交互。那么,让我们深入了解 OpenCV 中鼠标和轨迹栏的内置函数。我们将演示如何使用鼠标来注释图像,以及如何使用轨迹栏来控制图像的大小 我们将使用下图来演示 OpenCV 中鼠标指针和轨迹栏功能…

保护函数返回的利器——Linux Shadow Call Stack

写在前面 提到内核栈溢出的漏洞缓解,许多朋友首先想到的是栈内金丝雀(Stack Canary)。今天向大家介绍一项在近年,于Android设备中新增,且默默生效的安全机制——影子调用栈:SCS(Shadow Call St…

Kafka单节点部署

🎈 作者:互联网-小啊宇 🎈 简介: CSDN 运维领域创作者、阿里云专家博主。目前从事 Kubernetes运维相关工作,擅长Linux系统运维、开源监控软件维护、Kubernetes容器技术、CI/CD持续集成、自动化运维、开源软件部署维护…

iptables的使用规则

环境中为了安全要限制swagger的访问,最简单的方式是通过iptables防火墙设置规则限制。 在测试服务器中设置访问swagger-ui.html显示如下,区分大小写: iptables设置限制访问9783端口的swagger字段的请求: iptables -A INPUT -p t…

leetcode304. 二维区域和检索 - 矩阵不可变(java)

前缀和数组 二维区域和检索 - 矩阵不可变题目描述前缀和代码演示 一维数组前缀和 二维区域和检索 - 矩阵不可变 难度 - 中等 原题链接 - 二维区域和检索 - 矩阵不可变 题目描述 给定一个二维矩阵 matrix,以下类型的多个请求: 计算其子矩形范围内元素的总…

Java抽象类

Java中的抽象类(Abstract Class)是一种特殊类型的类,它无法被实例化,只能被用作其他类的基础。抽象类用于定义具有共同特征和行为的一组相关类的共同结构和方法。抽象类可以包含抽象方法(没有具体实现的方法&#xff0…

VR防地质灾害安全教育:增强自然灾害知识,提高自我保护意识

VR防地质灾害安全教育系统是一种虚拟仿真技术,可以通过虚拟现实技术模拟地震、泥石流、滑坡等地质灾害的发生和应对过程,帮助人们提高应对突发自然灾害的能力。这种系统的优势在于可以增强自然灾害知识,提高自我保护意识,锻炼人们…

MyBatis分页插件PageHelper的使用及特殊字符的处理

目录 一、PageHelper简介 1.什么是分页 2.PageHelper是什么 3.使用PageHelper的优点 二、PageHelper插件的使用 原生limit查询 1. 导入pom依赖 2. Mybatis.cfg.xml 配置拦截器 3. 使用PageHelper进行分页 三、特殊字符的处理 1.SQL注入: 2.XML转义&#…

一、Kafka概述

目录 1.1 定义1.2 消息队列1、传统消息队列的应用场景2、消息队列的两种模式 1.3 Kafka的基础架构 1.1 定义 Kafka传 统定义:Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。 K…

ACL2023 Prompt 相关文章速通 Part 1

Accepted Papers link: ACL2023 main conference accepted papers 文章目录 Accepted PapersPrompter: Zero-shot Adaptive Prefixes for Dialogue State Tracking Domain AdaptationQuery Refinement Prompts for Closed-Book Long-Form QAPrompting Language Models for Lin…

【Redis】什么是缓存击穿,如何预防缓存击穿?

【Redis】什么是缓存击穿,如何预防缓存击穿? 缓存击穿是指一个 Key 非常热点,大并发集中对这一个点进行访问,当这个Key 在失效的瞬间,持续的大并发就会穿破缓存,直接请求数据库。缓存击穿和缓存雪崩的区别…

基于FPGA视频接口之HDMI2.0编/解码

简介 为什么要特别说明HDMI的版本,是因为HDMI的版本众多,代表的HDMI速度同样不同,当前版本在HDMI2.1速度达到48Gbps,可以传输4K及以上图像,但我们当前还停留在1080P@60部分,且使用的芯片和硬件结构有很大差别,故将HDMI分为两个部分说明1080@60以下分辨率和4K以上分辨率(…

【WebSocket】前端使用WebSocket实时通信

目录 前言什么是WebSocketWebSocket的工作原理WebSocket与HTTP的关系HTTP建立持久化连接WebSocket类封装 前言 最近写项目,需要实现消息通知和实时聊天的功能,就去了解了一些关于websocket的知识,总结如下。 什么是WebSocket WebSocket 是一…

vscode C++17便捷配置教程(懒人版)

环境链接 以上是已经配置好的c17环境链接,直接下载解压即可(注意文件路径上不要带有中文) 下载解压之后按照msys64-mingw64-bin路径打开 然后单击该路径右方空白区域可直接复制路径 然后点击开始菜单搜索“环境变量“并打开(如…

SQL阶段性优化

😜作 者:是江迪呀✒️本文关键词:MySQL、SQL优化、阶段性优化☀️每日 一言:我们要把懦弱扼杀在摇篮中。 一、前言 我们在做系统的过程中,难免会遇到页面查询速度慢,性能差的问题,…

数据结构基础:P3-树(上)----编程作业02:List Leaves

本系列文章为浙江大学陈越、何钦铭数据结构学习笔记,系列文章链接如下: 数据结构(陈越、何钦铭)学习笔记 文章目录 一、题目描述二、整体思路与实现代码 一、题目描述 题目描述: 给定一棵树,按照从上到下、从左到右的顺序列出所有…