【Linux】权限管理

🔥博客主页: 小羊失眠啦.
🎥系列专栏:《C语言》 《数据结构》 《C++》 《Linux》 《Cpolar》
❤️感谢大家点赞👍收藏⭐评论✍️

文章目录
- 一 、Linux中的用户
- 1.1 Linux用户分类
- 1.2 用户转换
- 1.3 指令提权
- 二、Linux权限管理
- 2.1 权限的概念
- 2.2 Linux中的角色
- 2.3 文件权限
- 2.4 权限修改
- 2.4.1 chmod
- 2.4.2 chown
- 2.4.3 chgrp
- 2.5 目录权限
- 2.6 粘滞位
一 、Linux中的用户
1.1 Linux用户分类
Linux下有两种用户:超级用户(root)、普通用户
- 超级用户:可以再linux系统下做任何事情,不受限制
- 普通用户:在linux下做有限的事情
- 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”
1.2 用户转换
命令:su [用户名]
功能:切换用户
用户切换可分为:
- 普通用户切换成超级用户
- 超级用户切换成普通用户
- 普通用户A切换成普通用户B
- 普通用户切换成超级用户
如上图,当前我是一个普通用户,用户名是xiaoyang,此时想要切换成超级用户,直接输入su指令然后点击回车,提示我们要输入密码,这里输入root用户的密码,输入正确的密码后就可以成功地切换成root用户。
注意:上述操作仅仅只是对用户身份进行了切换,不改变当前所处路径,如上图,身份切换前后都处在xiaoyang用户的家目录。此时如果想切回xiaoyang用户,只需要输入
exit或者Ctrl+d。从一个普通用户切换成超级用户,除了上面的
su指令外,还可以用su -指令。它们的区别是:前者仅是对身份的切换,不改变当前所处路径,而后者则是以重新登录的方式切换成超级用户,此时不仅完成了身份切换,并且当前所处的路径也变成了root用户的家目录。
- 超级用户切换成普通用户
在root身份下,直接输入
su [用户名]指令,就可以随意切换成任意一个普通用户,无需输入任何密码。切换后路径不变。
- 普通用户A切换成普通用户B
从普通用户A切换的普通用户B需要输入B用户的密码
1.3 指令提权
当我们不想把自己变成root用户,但我们还想让普通用户以root的权限,执行一条命令,我们可以使用sudo指令,对后面跟的指令进行提权,以超级用户的身份去执行该条指令。

我们只要输入自己的密码,就可以以超级用户的身份去执行该条指令,但前提是我们用户的用户名在sudoers的配置文件中,这样才允许用户执行sudo。想要添加进白名单,也要通过root用户进行操作。
二、Linux权限管理
2.1 权限的概念
在计算机中,权限管理一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源。权限是限制人的,而且对应的操作对象,要有满足人的需求的属性。例如:张三可以在爱奇艺看付费电影,是因为他是VIP,而不是因为他是张三,而且我们也不可以在爱奇艺上做题。所以:
- 权限认证的是身份(角色)
- 权限也和属性有关
在Linux环境中,我们所有的操作都是针对文件进行的,因此我们要先知道文件具备哪些属性,我们可以对文件做些什么。
2.2 Linux中的角色
前面提到,权限和身份(角色)有关,Linux中分以下三种角色:
- 拥有者(文件的创建人)
- 所属组(为了实现组内协同)
- 其他人

如上图,红色框起来的就表示当前文件的拥有者,橙色框起来的就表示当前文件的所属组。其他人并没有直接出现在上图所展现的信息中,当一个用户操作一个文件的时候,该文件会先看该用户是不是我的拥有者,若不是,再看该用户是不是我的所属组,若都不是,那他就是其他人。
2.3 文件权限
我们可以通过ls - l指令,查看当前目录下所有文件的属性

如上图,其中紫色框起来字符表示文件类型,后面的九个字符,三三一组,依次为:文件拥有者的权限、文件所属组的权限、其他人的权限。其中r,w,x都代表文件属性。
📖文件类型
Linux系统中,文件名后缀没有直接意义,系统不通过后缀来区分文件类型,而是通过字符来区分文件类型。但是在Linux系统上运行的软件会通过后缀来区分文件类型。Linux系统中主要有以下几种文件类型:
d:文件夹(文本文件、源代码、可执行程序、库)-:普通文件l:软链接(类似Windows的快捷方式)b:块设备文件(例如硬盘、光驱等)p:管道文件(用来进行通信)c:字符设备文件(例如屏幕等串口设备)s:套接口文件
📖基本权限
Linux系统中主要有以下几种文件属性:
r:读权限,对于普通文件而言,具有读取文件内容的权限;对目录文件来说,具有浏览目录信息的权限。
w:写权限,对于普通文件而言,具有修改文件内容的权限;对目录文件来说,具有删除、移动目录文件的权限。
x:可执行权限,对于普通文件而言,具有执行文件的权限;对目录文件来说,具有进入目录的权限。
-:表示不具备该权限。
注意:每组权限都是由三个字符组成,这三个位置所表示的含义是确定的,即第一个位置只能表示是否有读权限;第二个位置表示是否有写权限;第三个位置表示是否有可执行权限。
如图:xiaoyang用户也是所属组,也具有写的权限,可是为什么无法执行呢?
这是因为一次只能匹配一个角色,当
xiaoyang用户执行命令时,系统匹配到xiaoyang是test.txt文件的拥有者,而拥有者不具备写权限,所以xiaoyang用户无法写入。
2.4 权限修改
只有文件的拥有者和超级用户才可以修改权限。
2.4.1 chmod
语法:chmod [参数] 权限 文件名
功能:设置文件的访问权限
常用选项:
R:递归修改目录文件的权限
方法一:用户表示符、+ - =、权限字符
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限=:向权限范围赋予权限代号所表示的权限u:拥有者g:所属组o:其他人a:所有用户(拥有者、所属组、其他人)
示例:
-
chmod u+x test.txt:表示给拥有者添加test.txt文件的执行权限。

-
chmod a-rwx test.txt:表示取消所有用户对test.txt文件的读、写、可执行权限。
方法二:三位8进制数字
对于一组权限中的三个权限位,可以用1表示具备该权限,用0表示不具备该权限。例如:111表示当前角色拥有读、写、可执行权限。这三个2进制数字又可以用一个8进制数字来表示,111对应的8进制是7。这样每种角色的权限可以用一个8进制数字表示,那三个角色的权限就可以用三个8进制数字来表示。
示例:
chmod 777 test.txt:表示给所有用户设置对于test.txt文件的所有权限。
2.4.2 chown
语法:chown [参数] 用户名 文件名
功能:修改文件的拥有者
我们将一个东西交给别人,是需要别人同意的,修改文件的拥有者也是同样的道理,这里我们就要借用root强制修改。

示例:
chown shimian test.txt:表示把test.txt文件的拥有者改成shimian
2.4.3 chgrp
语法:chgrp [参数] 用户组名 文件名
功能:修改文件或目录的所属组
常用选项:
-R:递归修改文件或目录的所属组
示例:
chgrp shimian test.txt:表示把test.txt文件的所属组改成shimianchown xiaoyang:shimian test.txt:表示把test.txt文件的拥有者改成xiaoyang,把所属组改成shimian

2.5 目录权限
-
可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容

-
可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件

- 可执行权限:如果目录没有可执行权限,则用户无法进入对应的目录

2.6 粘滞位
我们创建一个用户,用户家目录的权限是700,其他用户无法进入我的家目录,也不能查看我的家目录下的文件,更不能对我的家目录中的文件进行修改、删除,也不能在我的家目录中创建文件。

但有的时候,我们多个用户想进行文件数据的共享。由于家目录的特性,导致我们所建立的共享目录在用户的家目录下无法实现。那建立在哪里合适呢?Linux提供了tmp目录,在这个目录下就可以实现多个用户想进行文件数据的共享。

我们可以看到tmp目录的最后一个权限是t,而不是x。那它有怎样的意义呢?因为其他人有w权限,所以在tmp目录中创建的文件可以随便删除。所以给other新增了一个权限t,为粘滞位。它具有x的意义,还会对目录权限进行特殊的设定,该目录里的文件,只有root或文件的拥有者可以删除。
粘滞位总结:
- 给目录设置,一般是共享目录
- 只允许文件的拥有者或者root能删除这个文件,其他用户一概不允许
t是一种特殊的x权限

相关文章:
【Linux】权限管理
🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 一 、Linux中的用户1.1 Linux用户分类1.2 用户转换1.3 指令提权 二、Linux权限管…...
地理坐标系、空间坐标系、epsg查询网站
坐标系可用范围和详细信息的查询网站 简介 epsg.ruiduobao.com是一个可以查询gdal中所有坐标系信息的网站,可查询到坐标系的基准面、椭球体、中央子午线等相关信息,并对每个坐标系的可用范围在地图中进行了显示。详细信息可以看操作视频: e…...
docker 容器指定主机网段
docker 容器指定主机网段。 使用macvlan网络模式可以让Docker容器直接连接到物理网络,而不需要通过NAT或端口映射的方式来访问它们。可以提高网络性能和稳定性,同时也可以使容器更易于管理。 1、查询网卡的名称:使用ifconfig命令查看网卡名…...
零基础Vue框架上手;git,node,yarn安装
项目搭建环境: git安装:Git - 安装 Git (git-scm.com)(官网) 下载路径:Git - Downloading Package (git-scm.com);根据自己电脑下载相对应的安装包 点next 点next,点到最后安装就行。…...
十分钟学会用springboot制作微信小程序富文本编辑器
1.1 富文本模型设计 在构建富文本编辑器系统时,首先需要设计一个合适的富文本模型。 CREATE TABLE IF NOT EXISTS rich_texts (id INT PRIMARY KEY AUTO_INCREMENT,title VARCHAR(255),content TEXT,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );这个表包括…...
【BBF系列协议】TR181-1 TR069的设备数据模型
TR-069的TR-181设备数据模型 执行摘要 TR-181定义了TR-069 [2]设备数据模型的版本1(设备:1)。设备:1数据模型仅适用于启用TR-069的终端设备,不适用于互联网网关设备或其他网络基础设施设备。启用TR-069的基础设施设备改为使用TR-098 [4]互联网网关设备数据模型或未来设备…...
Elasticsearch(简称ES)性能优化 实践
Elasticsearch(简称ES)性能优化主要包括以下几个方面: 索引优化: 选择合适的分片数:根据业务需求和数据量合理设置分片数,避免过多或过少分片造成性能问题。分片数过多会导致创建分片速度变慢、集群易崩溃…...
《跨越阶层,小白选专业的逻辑:揭秘家庭背景与个人发展的秘密联系》
文章目录 底层最好的专业 小康最好的专业 中产最好的专业 巨富最好的专业 总结 一个人选专业选的好不好,不在于专业本身,而在于你的出身,你的起点,你的家庭;你需要读懂你的原生家庭的文化才能改变自己。换句话说就是&a…...
Python调用pyspark报错整理
前言 Pycharm配置了SSH服务器和Anaconda的python解释器,如果没有配置可参考 大数据单机学习环境搭建(8)Linux单节点Anaconda安装和Pycharm连接 Pycharm执行的脚本 执行如下 pyspark_model.py 的python脚本,构建SparkSession来执行sparksql "&qu…...
快递员的烦恼 - 华为OD统一考试
OD统一考试(C卷) 分值: 200分 题解: Java / Python / C 题目描述 快递公司每日早晨,给每位快递员推送需要淡到客户手中的快递以及路线信息,快递员自己又查找了一些客户与客户之间的路线距离信息࿰…...
css1基础选择器
大纲 一.标签选择器 比较简单,前面直接写目标标签 二.类选择器 应用 例子 三.多类名选择器(调用时中间用空格隔开) 四.id选择器 应用 五.通配符选择器 应用 六.总结...
【C语言】内联函数总结
内联函数定义 inline关键字是C99标准的型关键字,其作用是将函数展开,把函数的代码复制到每一个调用处。这样调用函数的过程就可以直接执行函数代码,而不发生跳转、压栈等一般性函数操作。可以节省时间,也会提高程序的执行速度。 …...
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之MenuItemGroup组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之MenuItemGroup组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、MenuItemGroup组件 该组件用来展示菜单MenuItem的分组。 子组件 无 接…...
【Linux多线程编程】互斥锁及其使用
1、互斥锁 用于解决竞争问题的一种机制。 什么是竞争,竞争就是多个实体同时获取一个资源,例如多个线程写一个全局变量。 2、Linux如何使用互斥锁 以pthread为例,锁的创建和使用如下: /* 创建锁 */ pthread_mutex_t lock PTHR…...
RabbitMQ_00000
MQ的相关概念 RabbitMQ官网地址:https://www.rabbitmq.com RabbitMQ API地址:https://rabbitmq.github.io/rabbitmq-java-client/api/current/ 什么是MQ? MQ(message queue)本质是个队列,FIFO先入先出,只不过队列中…...
【linux】docker下homeassistant和nodered安装及配置
1、homeassistant安装 从 Docker Hub 上拉取 Home Assistant 的镜像文件 docker pull homeassistant/home-assistant 是运行 Home Assistant 容器 docker run -id --name"homeassistant" --privileged --restart always -p 8123:8123 -e TZAisa/Shanghai --nethost…...
Qt扩展-muParser数学公式解析
muParser数学公式解析 一、概述1. 针对速度进行了优化2. 支持的运算符3. 支持的函数4. 用户定义的常量5. 用户定义的变量6. 自定义值识别回调7. 其他功能 二、内置函数三、内置二元运算符四、三元运算符五、内置常量六、源码引入1. 源码文件2. 编译器开关1. MUP_BASETYPE2.MUP_…...
【Matplotlib】figure方法之图形的保存
🎈个人主页:甜美的江 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:matplotlib 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进…...
数据库管理-第142期 DBA?DBA!(20240131)
数据库管理142期 2024-01-31 数据库管理-第142期 DBA?DBA!(20240131)正文总结 数据库管理-第142期 DBA?DBA!(20240131) 作者:胖头鱼的鱼缸(尹海文)…...
react 之 zustand
zustand可以说是redux的平替 官网地址:https://zustand-demo.pmnd.rs/ 1.安装 npm i zustand2.基础使用 // zustand import { create } from zustand// 1. 创建store // 语法容易出错 // 1. 函数参数必须返回一个对象 对象内部编写状态数据和方法 // 2. set是用来…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...






