【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是用来…...
Python aiohttp 全面指南:异步HTTP客户端/服务器框架
边写代码零食不停口 盼盼麦香鸡味块 、卡乐比(Calbee)薯条三兄弟 独立小包、好时kisses多口味巧克力糖、老金磨方【黑金系列】黑芝麻丸 边写代码边贴面膜 事业美丽两不误 DR. YS 野森博士【AOUFSE/澳芙雪特证】377专研美白淡斑面膜组合 优惠劵 别光顾写…...

2024 CKA模拟系统制作 | Step-By-Step | 12、题目搭建-创建多容器Pod
目录 免费获取题库配套 CKA_v1.31_模拟系统 一、题目 二、考点分析 1. 多容器 Pod 的理解 2. YAML 配置规范 3. 镜像版本控制 三、考点详细讲解 1. 多容器 Pod 的工作原理 2. 容器端口冲突处理 3. 资源隔离机制 四、实验环境搭建步骤 总结 免费获取题库配套 CKA_v…...
Flask中secret_key设置解析
app.secret_key os.urandom(24) 在 Flask 中,app.secret_key os.urandom(24) 这行代码用于生成并设置一个安全的随机密钥(Secret Key),这是 Flask 应用中非常重要的配置之一。以下是详细解析: 1. app.secret_key …...

完美解决在pycharm中创建Django项目安装mysqlclient报错的问题(windows下)
正常情况下,在Windows安装mysqlclient会报错: 我这里用的是anaconda虚拟环境,安装前必须激活anacoda虚拟环境, 怎么激活虚拟环境?可以参考超详细的pycharmanaconda搭建python虚拟环境_pycharm anaconda环境搭建-CSDN博…...
ubuntu之开机自启frpc
在 Ubuntu 系统中为 frpc 设置开机自启(以 frpc -c frpc.toml 命令为例),可以通过 systemd 服务实现。以下是详细步骤: 创建 systemd 服务文件 sudo vim /etc/systemd/system/frpc.service 写入以下内容(根据你的路…...
云原生周刊:探索 Gateway API v1.3.0
开源项目推荐 WatchAlert WatchAlert 是一个轻量级、云原生的多数据源监控告警引擎,支持 AI 驱动的智能告警分析,旨在帮助升级您的监控系统架构。该项目基于 Go 和 React 开发,提供了现代化的前后端架构。后端使用 Go 语言,结合…...
Redis缓存-数据淘汰策略
数据淘汰策略就是,当redis内存满的时候,此时在向redis添加新的key,那么redis会按照某一种规则将内存中的数据删掉,这种删除数据的规则成为内存的淘汰策略。 redis支持8中淘汰策略 1.noeviction,这种是redis默认的情况…...
String 学习总结
1. 存储机制 短字符串优化(SSO, Small String Optimization) 现代标准库中的字符串实现普遍采用 SSO 技术,将长度较短(例如 ≤15 字节)的字符串数据直接存储在字符串对象内部的固定缓冲区(栈上)…...

MyBatisPlus(1):快速入门
我们知道,MyBatis是一个优秀的操作数据库的持久层框架(优秀持久层框架——MyBatis),其基于底层的JDBC进行高度封装,极大的简化了开发。但是对于单表操作而言,我们需要重复地编写简单的CRUD语句。这其实是不…...
“application/json“,“text/plain“ 分别表示什么
这两个字符串:“application/json” 和 “text/plain” 是 MIME 类型(媒体类型),用于告诉接收方消息内容的格式,它们出现在 ContentType 字段中。 它告诉系统或程序:“这段数据是什么格式?” 格…...