Linux权限及其理解

news2024/12/29 10:16:19

文章目录:

  • Linux权限的概念
  • Linux权限管理
    • 文件访问者的分类(人)
    • 文件类型和访问权限(事物属性)
    • 文件权限值的表示方法
    • 文件访问权限的设置方法
    • 权限掩码
    • 目录的权限
    • 粘滞位
  • 总结

Linux权限的概念

与其它系统相比,Linux 系统的优点中最主要的一个便是 Linux 系统的安全漏洞和被攻击的隐患更少。Linux 无疑为用户提供了更灵活和精细化的文件系统安全权限控制。在 Linux 服务器中有严格的权限等级,若权限过高导致误操作会增加服务器的风险。所以了解 Linux 系统中的各种权限,以及如何给用户、服务等分配合理的权限是非常重要的!

在 Linux 系统下有两种用户:超级用户(root),普通用户。 超级用户(上帝视角)可以在 Linux 下执行任何操作,不会受到权限的限制。普通用户一般只能在自己的工作目录下操作,能在 Linux 系统中执行的操作是有限的。超级用户的命令提示符是"#“,普通用户的命令提示符是”$"。

在这里插入图片描述

❓如何实现用户账号之间的切换?

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

在这里插入图片描述
该指令也可以从一个普通的用户切换为另外一个普通用户,输入待切换的用户账号密码即可。
切换用户后,可以通过 exit 或者 logout 进行退出当前用户,也可以用 Ctrl+D 切回上一次的用户。

❓如何提升当前指令的权限

在一些情况下,想要提升普通用户的指令的权限并不需要都切换到 root 下。

例如:在当前云服务器下,以一名普通用户的身份去修改另外一个普通用户的密码。但是当你输入密码后系统提示你没有被添加到信任列表,因此无法执行该命令。
在这里插入图片描述

❓怎样将普通用户添加到信任列表

首先切换到超级用户 root ,因为 root 才有权限将普通用户添加到信任列表。然后在 root 下执行以下操作:
在这里插入图片描述

执行完上述操作之后,再用该用户执行 sudo 命令,该用户就拥有了执行该指令的权限了。
在这里插入图片描述

Linux权限管理

文件访问者的分类(人)

  • 文件和文件目录的所有者:u(user),文件的拥有者。
  • 文件和文件目录的所有者和所在的组的用户,g(group),文件的所属组。
  • 其它用户:o(other),其他人。

输入 ll 指令可以查看文件的属性,可以看到文件的拥有者和所属组,除两者之外的都是 other。

在这里插入图片描述

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

文件由读、写、执行三个权限约束。超级用户 root 不受其中的权限约束,权限约束都是对于普通用户而言的。

如下图所示,文件的前10个字符代表着文件的类型和权限。

在这里插入图片描述

上图中的10个字符分别代表什么含义呢?我们用 myfile.txt 来分析一下:

在这里插入图片描述

不同的字符代表着不同的文件类型:

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

注意:在 Linux 中,文件类型与文件后缀无关。第一个字符代表文件的类型,剩下的9个字符分为3组,分别代表文件相对于其拥有者、所属者、other 的权限。

其它内容所代表的含义如下所示:
在这里插入图片描述
基本权限:
r : read 对文件而言,具有读取文件内容的权限;而对目录来说,具有浏览该目录信息的权限。
w : wirte 对文件而言,具有修改文件内容的权限;而对目录而言,具有删除以及移动目录内文件的权限。
x : execute 对文件而言,具有执行文件的权限;而对目录而言,就有进入目录的权限。
- :表示不具有该权限。


❓如何去描述一个文件的类型以及权限呢?以下面为例:
在这里插入图片描述
myfile.txt 文件是一个普通文件,该文件对拥有者和所属者都是可读可写的,而对该文件的 other 用户只有可读的权限。


文件权限值的表示方法

文件的权限值表示法有字符表示法8进制数值表示法

Linux字符表示法二进制值八进制值说明
- - -0000无权限
r - -1004仅可读
- w -0102仅可写
- - x0011仅可执行
r w -1106可读可写
r - x1015可读可执行
- w x0113可写可执行
r w x1117可读可写可执行

在这里插入图片描述

文件访问权限的设置方法

更改文件权限的命令:chmod

语法格式:chmod 选项 权限 文件名
功能:设置文件的访问权限
常用选项:R -> 递归式的修改目录文件的权限
说明:只有文件的拥有者和 root 才能改变文件的权限

chmod 命令权限值得格式:

1️⃣用户表示符 +/-/= 权限字符
1.+ :向权限范围增加权限代号所表示的权限
2. - :向权限范围取消权限代号所表示的权限
3. =:向权限范围赋予权限代号所表示的所有权限

用户符号:

  • u — 拥有者
  • g — 所属者
  • o — 其他用户(other)
  • a — 所有用户

例如:将可执行程序 a.out 的拥有者的可执行权限减去,那么拥有者将没有可执行此程序的权限。

在这里插入图片描述

需要设置多个用户的权限时,可同时设置不同用户的权限,中间需要用逗号分开。

在这里插入图片描述

2️⃣三位8进制数

使用三位8进制数来表示文件的权限,将8进制数写成对应的二进制数,按照1对应有权限,0对应没有权限来对文件的权限进行相应的设置。
在这里插入图片描述

❓如何修改文件的拥有者和所属者?

chown
功能:修改文件的拥有者
语法:chowm 选项 用户名 文件名
常用选项: -R 递归修改目录文件的拥有者

修改文件的拥有者和所属者需要使用 root 来进行操作,普通用户修改需要提升权限,可以用 sudo 来进行提升权限。
在这里插入图片描述

chgrp
功能:修改文件或者目录的所属组
语法:chgrp 选项 所属组名 文件名
常用选项:-R 递归修改文件或者目录的所属者

在这里插入图片描述

权限掩码

当我们创建一个文件或者目录时,系统会根据其属性给出默认的权限。
在这里插入图片描述
为什么我们创建的目录或者文件权限会是这样的?实际上,新建文件的默认权限是 0666,新建目录的默认权限是 0777。第一位0代表特殊权限,后三位是权限的八进制数值表示方法。

但是我们会发现,我们新建的文件默认权限是664,新建的目录默认权限是775。是因为创建文件和目录时的默认权限还受 umask 的影响。假设默认权限是 mask,则实际创建出来得文件权限是:mask & ~umask。

umask
功能:查看或修改文件掩码。
语法:umask 权限值
说明:将现有的存取权限减去权限掩码之后,即可以产生建立文件时的预设权限。超级用户默认掩码值为0022,普通用户默认掩码值为0002。

可以通过输入 umask 命令来查看文件的默认掩码:
在这里插入图片描述
但是我们创建出的文件或目录的实际权限需要进行再次运算才能够得出来,先将权限掩码的后三位八进制写成对应的二进制数,并且按位取反,将新建文件的默认权限值和新建目录的默认权限值分别与其进行按位与操作,最终得到的二进制数所对应的权限就是我们创建出的文件或目录的权限。

假设默认权限是 mask,则实际创建出来得文件权限是:mask & ~umask。
在这里插入图片描述
上述也可以理解为在 umask 中出现的权限为,不能在最终的实际权限中出现。一些场景下,我们可以修改 umask 来设置文件或目录创建时的权限。
在这里插入图片描述

目录的权限

可读权限:若目录没有可读权限,则无法用 ls 等指令查看目录中的内容。
可写权限:若目录没有可写权限,则无法在目录中创建文件,也无法删除文件。
可执行权限:若目录没有可执行权限,则无法进入到目录中。

但是,问题出现了。即用户只要具有目录的写权限,用户就可以删除目录中的文件,而不论此用户是否具有这个文件的写权限,这显然是不科学的!

在 Linux 下存在一些目录,拥有者和所属组都是 root,允许其他人以 other 的身份在该目录下进行文件的创建、读取、删除、修改等操作。在一个共享目录下,不让别人读写你的文件,但是防不住别人删除你的文件。

为了解决这个问题,Linux 引入了粘滞位的概念。

粘滞位

粘滞位(Stickybit),或黏着位,是 Linux 文件系统权限的一个旗标。 最常见的用法是在目录上设置粘滞位,如此以来,只有目录内文件的所有者或者 root 才可以删除或移动该文件。若不为目录设置粘滞位,任何具有目录写和执行权限的用户都可以删除和移动其中的文件。在实际应用中,粘滞位通常用于 /tmp 目录,以防止普通用户删除或移动其它用户的文件。

功能: 给目录加上粘滞位。
语法: chmod +t 目录名

加上粘滞位之后,目录权限的最后一个字符变为 ‘t’ ,目录颜色也发生了改变。

在这里插入图片描述
当一个目录被设置为"粘滞位"(用 chmod +t),则该目录下的文件只能由:

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

注意:增加粘滞位用 chmod +t 文件名,去掉粘滞位用 chmod -t 文件名

总结

  • 目录的可执行权限是表示你是否可以在目录下执行命令。
  • 若目录没有 -x 权限,则无法对目录执行任何命令,甚至无法 cd 进入目录,即使目录有 -r 权限。
  • 如果目录具有 -x 权限,但是没有 -r 权限,则用户可以执行命令,可以 cd 进入目录。但是没有目录的读权限,所以在目录下,即使可以执行 ls 指令,但是仍热没有权限读取目录下的文档。

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

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

相关文章

文件包含漏洞渗透与攻防(一)

目录 前言 什么是文件包含漏洞 文件包含漏洞类型 本地文件包含 远程文件包含 PHP相关函数和伪协议 函数 PHP伪协议 CTF题目案例 文件包含漏洞挖掘与利用 URL关键字 代码审计 利用流程 文件包含漏洞修复方案 前言 随着网站业务的需求,程序开发人员一…

【ACWING】【图的广度遍历】【848有向图的拓扑顺序】

给定一个 n个点 m条边的有向图,点的编号是 1到 n,图中可能存在重边和自环。 请输出任意一个该有向图的拓扑序列,如果拓扑序列不存在,则输出 −1。 若一个由图中所有点构成的序列 A满足:对于图中的每条边 (x,y)&#…

STM32MP157驱动开发——Linux CAN驱动

STM32MP157驱动开发——Linux CAN驱动一、简介1.电气属性2.CAN协议3.CAN速率4.CAN FD 简介二、驱动开发1.修改设备树2.FDCAN1控制器节点3.修复 m_can_platform.c4.使能 CAN 总线5.使能FDCAN外设驱动三、运行测试1.移植 iproute2 和 can-utils 工具2.测试1)收发测试&…

数据结构排序

文章目录直接插入排序直接插入排序 核心代码 void InsertSort(int arr[], int n) {for (int i 2; i < n; i) ///直接从第二个元素开始遍历{if (arr[i - 1] > arr[i]) //判断前一个元素和当前元素的大小&#xff0c;若前一个元素小于当前元素才需要插入{arr[0] …

Markdown之折叠语法以及表格内父子折叠

背景 在编写接口文档的时候发现一些特别扭的问题&#xff0c;就是一个表格来说明入参和出参的时候&#xff0c;怎么去表达嵌套的父子关系呢&#xff1f;查看了大厂的接口文档&#xff0c;比如微信支付&#xff0c;他们是有完善的接口文档页面&#xff0c;也都全部标记出了表格…

pycharm-qt5-基础篇1

pycharm-qt5-基础篇1一: QT5介绍1> 主要的特性2> pycharm 外部工具及功能1. Qt Designer2. PyUic3> PyUrcc二: pycharm QT5 环境搭建1> 虚拟环境搭建2> 安装 pyqt5、pyqt5-tools3> 将QT工具添加到环境变量4> 配置PyCharm三: QT5 demo四: pyinstaller 打包…

Java 并发编程知识总结【三】

4. CompletableFuture 4.1 Future 和 Callable 接口 Future 接口定义了操作异步任务执行一些方法&#xff0c;如获取异步任务的执行结果、取消任务的执行、判断任务是否被取消、判断任务执行是否完毕等。 Callable 接口中定义了需要有返回的任务需要实现的方法。 使用途径&am…

详解Spring面试AOP

文章目录什么是 AOP&#xff1f;AOP作用AOP核心概念&#xff08;来自黑马程序课程&#xff09;AOP 解决了什么问题&#xff1f;AOP 为什么叫做切面编程&#xff1f;总结1 AOP的核心概念2 切入点表达式3 五种通知类型4 通知中获取参数AOP是面向切面编程&#xff0c;是一个设计思…

Java同学录系统同学录网站

简介 用户注册可以创建班级&#xff08;创建者即为群主&#xff09;&#xff0c;用户也可以查找班级申请加入&#xff0c;群主添加同学的联系方式等&#xff0c;可以在班级里留言&#xff0c;管理相册等&#xff0c;还可以指定其他人为群主或者解散班级群&#xff0c;群里的用…

【ROS】—— ROS快速上手(一)

文章目录前言1. ROS-melodic 安装2. ROS基本操作2.1 创建工作空间2.2 创建功能包2.3 HelloWorld(C版)2.4 HelloWorld(Python版)3. Vscode ROS 插件4. vscode 使用基本配置4.1 启动 vscode4.2 vscode 中编译 ros5. launch文件演示6. ROS文件系统7. ROS文件系统相关命令前言 &…

EMNLP22评测矩阵:FineD-Eval: Fine-grained Automatic Dialogue-Level Evaluation

总结 在选择维度时&#xff0c;有点意思。 FineD-Eval: Fine-grained Automatic Dialogue-Level Evaluation 一般对话生成任务的评测也是从多个维度出发&#xff0c;这篇文章先选择了几个相关性程度低的维度&#xff0c;然后&#xff0c;在挑选后的维度上&#xff0c;测评相…

动态规划经典题:编辑距离(hard) 详解,看了还不会你来砍我

&#x1f9f8;&#x1f9f8;&#x1f9f8;各位大佬大家好&#xff0c;我是猪皮兄弟&#x1f9f8;&#x1f9f8;&#x1f9f8; 文章目录一、最长公共子序列二、两个字符串的删除操作三、编辑距离Hard为了更好的理解&#xff0c;我们从易到难的来解决编辑距离的问题一、最长公共…

Tic-Tac-Toe可能棋局遍历的实现(python)

目录 1. 前言 2. 算法流程 3. 代码实现 4. 一个思考题&#xff1a;代码实现中的一个坑 5. 结果正确吗&#xff1f; 1. 前言 在上一篇博客中&#xff1a;Tic-Tac-Toe可能棋局搜索的实现&#xff08;python&#xff09;_笨牛慢耕的博客-CSDN博客Tic-Tac-Toe中文常译作井字棋…

基础数学(五)——数值积分

文章目录考试要求基础概念代数精度&#xff08;必考题&#xff09;代数精度的定义求代数精度的例题&#xff08;期末考试数值积分第一个大题&#xff09;数值积分公式的构造插值型求积公式&#xff08;必考题&#xff09;插值型数值积分公式定理Newton-Cotes求积公式Cotes公式代…

webpack 学习

1.拆分、合并 webpack-merge devlopment production 2.webpack-dev-serve devServer: { port contentBase progress open compress proxy:{ xxx:{ target:..., pathRewrite:{ "^/api" }, changeOrigin:true } } } 3.处理样式 css module:{ rules:[ { test:/\.sc…

qt开关控件设计(手把手从零开始)

从零开始手把手教你设计自己的qt控件1 说明1.1 显示效果1.2 控件特性1.3 设计方法2 控件需求分析2.1 必要需求2.1 顺带需求&#xff08;锦上添花&#xff09;3 功能设计3.1 设计思路&#xff08;重点内容&#xff09;3.2 自适应大小3.3 开关动画3.4 控件绘制4 总体代码1 说明 …

推动新能源越野场景革命 坦克品牌开创越野新生态

近日&#xff0c;坦克品牌以“创领越野新生态”为主题&#xff0c;携多款车型登陆第二十届广州国际汽车展览会。秉持“以用户为中心”&#xff0c;坦克品牌围绕技术与生态双线出击&#xff0c;正式亮相坦克500 PHEV长续航版、生活方式共创平台TANK Life。技术创领&#xff0c;打…

docker-ui创建使用

首先需要安装docker: apt install docker.io composer也需要安装&#xff1a; apt install composer docker查找docker-ui镜像&#xff1a; docker search docker-ui 在列表里选一个镜这里就选第一个。 docker pull builtdock/docker-ui 然后直接docker run 使用的时候&#x…

DSL操作ElasticSearch基础命令

文章目录一、DSL操作ES-RESTful风格二、DSL操作索引库2.1 PUT 添加索引2.2 GET 查询索引2.3 DELETE 删除索引2.4 POST 打开/关闭索引库三、DSL操作映射3.1 数据类型3.1.1 简单数据类型3.1.2 复杂数据类型3.2 创建索引库并设置映射3.2.1 语法格式3.2.2 举例3.3 查询索引库映射3.…

python中的类型注解

目录 一.类型注解 变量的类型注解 类型注解的语法 类型注解主要功能在于: 函数方法的类型注解 函数&#xff08;方法&#xff09;形参进行类型注解 函数&#xff08;方法&#xff09;返回值进行类型注解 小结 Union类型 小结 一.类型注解 变量的类型注解 思考 为什么…