【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. 文件访问者的分类
首先我们先要了解,文件访问者的分类分为三类:
- 文件和文件目录的所有者:u—User
- 文件和文件目录的所有者所在的组的用户:g—Group
- 其它用户:o—Others
而在我们下图中的两列 lmy中,第一列 lmy 表示的是 user,第二列表示 group,如下图:
而除了 user 和 group 之外,就是属于 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 是三位字母,我们可以使用 0 或 1 表示其权限的有无;所以这三位我们可以看作整体,组成一个八进制的数字,来判断其用户权限的有无,例如 r-x,可以用二进制 101 表示,其八进制为 5;–x 可以用二进制 001 表示,其八进制为 1;rwx 可以用二进制 111 表示,其八进制为 7。
所以,在修改权限时,我们也可以使用三位8进制数字的方式修改,例如我们要将 other 的权限全部去掉,而 user 和 group 的权限全部加上,如下图:
再例如我们将所有组的权限都去掉,如图:
以上就是修改权限的相关内容。
三、默认权限
1. 对文件和目录进行操作需要的权限
在学习默认权限之前,我们需要了解我们对文件或目录进行操作需要的权限。
首先我们先了解一下进入一个目录需要什么样的权限呢?我们逐一尝试,首先我们先保留 读(r ) 权限:
读( r) 权限不能进入一个目录,然后我们分别只保留 写(w) 和 执行(x) 权限 :
我们可以观察到,进入一个目录是只需要 执行(x) 权限的。
然后我们将 dir 的权限放开,在里面新建一些文件,如下:
然后我们对 dir 读(r )、写(w) 去掉,我们进入这个目录,然后发现查看和新建文件都不可以了,如图:
原因很简单,因为 dir 这个目录只有 执行(x) 权限,而 ll 指令查看文件属性是需要 读( r) 权限;而新建文件则需要 写(w) 权限,大家可以自己去实现验证一下。
所以总结一下:
- 是否允许一个指定用户查看目录的文件列表,需要 读( r) 权限。
- 是否允许一个指定用户在当前目录下新建文件或删除文件,需要 写(w) 权限。
- 进入一个目录需要 执行(x) 权限。
- 一个文件一定是属于一个目录的,一个文件能不能被查看,是由目录的权限决定的。
- 一个文件一定是属于一个目录的,一个文件能不能被删除,不是由这个文件本身决定的,是由所属目录与对应账户是否拥有 写(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 目录名
,粘滞位是只能给目录设置的,使用如下:
当一个目录被设置为粘滞位,则该目录下的文件只能由
- 超级管理员(root)删除
- 该目录的所有者删除
- 该文件的所有者删除
相关文章:

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

线性代数的学习和整理10:各种特殊类型的矩阵(草稿-----未完成 建设ing)
目录 1 图形化分类 1.1对称矩阵 1.2 梯形矩阵 1.3 三角矩阵 1.3.1 上三角矩阵 1.4 对角线矩阵 2 按各自功能分 2.1 等价矩阵 2.2 增广矩阵 2.3 伴随矩阵 2.4 正交矩阵 2.5 正交矩阵 2.6 相似矩阵 1 图形化分类 1.1对称矩阵 1.2 梯形矩阵 1.3 三角矩阵 1.3.1 上…...
Go 自学:变量、函数、结构体、接口、错误处理
1. 打印变量数据类型 package mainimport "fmt"func main() {penniesPerText : 2.0fmt.Printf("The type of penniesPerText is %T\n", penniesPerText) }输出为: The type of penniesPerText is float64 2. 同时给多个变量赋值 package mai…...

pyqt Pyton VTK 使用 滑块 改变 VTK Actor 颜色
使用 PyQt5 vtk vtk球体 使用滑块 RGB 改变 Actor 颜色 CODE import sys from PyQt5.QtWidgets import * from PyQt5.QtWidgets import (QApplication, QCheckBox, QGridLayout, QGroupBox,QMenu, QPushButton, QRadioButton, QVBoxLayout, QWidget, QSlider,QLineEdit,QLabe…...

春秋云镜 CVE-2019-16113
春秋云镜 CVE-2019-16113 Bludit目录穿越漏洞 靶标介绍 在Bludit<3.9.2的版本中,攻击者可以通过定制uuid值将文件上传到指定的路径,然后通过bl-kernel/ajax/upload-images.php远程执行任意代码。 启动场景 漏洞利用 exp https://github.com/Kenun…...

【JavaEE基础学习打卡06】JDBC之进阶学习PreparedStatement
目录 前言一、PreparedStatement是什么二、重点理解预编译三、PreparedStatement基本使用四、Statement和PreparedStatement比较1.PreparedStatement效率高2.PreparedStatement无需拼接参数3.PreparedStatement防止SQL注入 总结 前言 📜 本系列教程适用于JavaWeb初学…...
Postgresql12基于时间点恢复
1、环境 centos 7系统 postgresql 12 docker 20.10.6 2、整体思路 1)进行一个pgdata目录的全量备份 2)通过wal日志恢复到故障发生之前某个时间点 3、操作步骤 配置postgresql.conf文件 #日志级别 wal_level replica #归档开关 archive_mode on …...

【MySQL系列】Select语句单表查询详解(二)ORDERBY排序
💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …...
C++学习第十九天----简单文件输入/输出和今日工作问题
1.写入到文本文件中 cout用于控制台输出; 必须包含头文件iostream; 头文件iostream定义了一个用于处理输出的ostream类; 头文件iostream声明了一个名为cout的ostream变量(对象); 必须指明名称空间std&…...

基于风险的漏洞管理
基于风险的漏洞管理涉及对即将被利用的漏洞的分类响应,如果被利用,可能会导致严重后果。本文详细介绍了确定漏洞优先级时要考虑的关键风险因素,以及确保基于风险的漏洞管理成功的其他注意事项。 什么是基于风险的漏洞管理对基于风险的漏洞管…...
命令行——Git基本操作总结
介绍 我们的操作使用的是客户端TortoiseGit 操作的git ,实际上底层依旧是使用的命令行帮我们执行, 在早期 git 并没有窗口化工具,开发人员只能使用命令行模式 实际上,如果你掌握并熟练使用了命令行模式操作git 的话,你会发现某些操作命令行比窗口化操作要简单 所有你在工作中…...

验证评估守护关基安全 赛宁数字孪生靶场创新实践
近日,由赛宁网安主办,ISC互联网安全大会组委会协办的第十一届互联网安全大会(ISC 2023)安全运营实践论坛圆满结束。赛宁网安产品总监史崯出席并作出主题演讲:《基于数字孪生靶场如何开展验证评估》,同时…...
R语言09-R语言中的字符函数和分布相关函数
字符函数 paste() 和 paste0(): 将多个字符向量连接成一个字符串,paste0() 直接连接,而 paste() 可以通过 sep 参数指定分隔符。 vector1 <- c("Hello", "world") vector2 <- c("R", "programming") re…...

pnpm无法加载文件 (解决方法 )
现在要运行一个TS的项目,我的电脑上没有安装pnpm,导致我的vscode一直报错无法加载。 pnpm安装: npm install -g pnpm pnpm : 无法加载文件 pnpm : 无法加载文件 C:\Users\HP\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运…...

做一个蛋糕店小程序需要哪些步骤?
对于一些不懂技术的新手来说,创建蛋糕店小程序可能会感到有些困惑。但是,有了乔拓云平台的帮助,你可以轻松地创建自己的蛋糕店小程序。下面,我将为大家详细介绍一下具体的操作步骤。 首先,登录乔拓云平台并进入后台管理…...

Docker的革命:容器技术如何重塑软件部署之路
引言 在过去的几年中,容器技术已经从一个小众的概念发展成为软件开发和部署的主流方法。Docker,作为这一变革的先驱,已经深深地影响了我们如何构建、部署和运行应用程序。本文将探讨容器技术的起源,Docker如何崛起并改变了软件部…...

【ARM-Linux】项目,语音刷抖音项目
文章目录 所需器材装备操作SU-03T语音模块配置代码(没有用wiring库,自己实现串口通信)结束 所需器材 可以百度了解以下器材 orangepi-zero2全志开发板 su-03T语音识别模块 USB-TTL模块 一个安卓手机 一根可以传输的数据线 装备操作 安…...
Linux驱动开发:技术、实践与Linux的历史
一、引言 Linux,这个开源的操作系统,已经在全球范围内赢得了开发者和企业的广泛支持。它的强大之处在于其内核以及无数的驱动程序,这些驱动程序使得各种硬件设备可以在Linux操作系统上运行。本篇文章将深入探讨Linux驱动开发,包括…...
# Go学习-Day5
文章目录 map增加和更新删除查询遍历(for-range)map切片关于哈希表遍历的一点看法对map的key排序 结构体与OOP声明、初始化、序列化方法工厂模式 个人博客:CSDN博客 map map是一个key-value的数据结构,又称为字段或关联数组 Gol…...

创建型(二) - 单例模式
一、概念 单例设计模式(Singleton Design Pattern):一个类只允许创建一个对象(或者实例),那这个类就是一个单例类。 优点:在内存里只有一个实例,减少了内存的开销,避免…...

深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

图解JavaScript原型:原型链及其分析 | JavaScript图解
忽略该图的细节(如内存地址值没有用二进制) 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么:保存在堆中一块区域,同时在栈中有一块区域保存其在堆中的地址(也就是我们通常说的该变量指向谁&…...

相关类相关的可视化图像总结
目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系,可直观判断线性相关、非线性相关或无相关关系,点的分布密…...
第22节 Node.js JXcore 打包
Node.js是一个开放源代码、跨平台的、用于服务器端和网络应用的运行环境。 JXcore是一个支持多线程的 Node.js 发行版本,基本不需要对你现有的代码做任何改动就可以直接线程安全地以多线程运行。 本文主要介绍JXcore的打包功能。 JXcore 安装 下载JXcore安装包&a…...
OpenGL-什么是软OpenGL/软渲染/软光栅?
软OpenGL(Software OpenGL)或者软渲染指完全通过CPU模拟实现的OpenGL渲染方式(包括几何处理、光栅化、着色等),不依赖GPU硬件加速。这种模式通常性能较低,但兼容性极强,常用于不支持硬件加速…...
[QMT量化交易小白入门]-六十二、ETF轮动中简单的评分算法如何获取历史年化收益32.7%
本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。 QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。 文章目录 相关阅读1. 策略概述2. 趋势评分模块3 代码解析4 木头…...