【Linux】权限理解【文件权限以及目录权限详解、以及umsk程序掩码知识详解】
权限理解
- 一、Linux权限的概念
- 二、su [用户名] : 切换用户
- 三、Linux权限管理
- 文件
- (一)文件访问者的分类(人)
- (二)文件类型和访问权限(事物属性)
- (1)第一位:文件类型
- 关于文件后缀
- 可执行程序的条件
- (2)第2—10位:基本权限
- (三)文件权限值的表示方法
- (四)文件访问权限的相关设置方法
- (1)chmod [参数] 权限 文件名:设置文件的访问权限
- (2)**chmod 命令权限值的格式**
- **① 用户表示符+/-=权限字符**
- chmod a=x /home/abc.txt
- **②三位8进制数字**
- chmod 640 /home/abc.txt
- (3)chown [参数] 用户名 文件名 :修改文件的拥有者
- (4)chgrp [参数] 用户组名 文件名 : 修改文件或目录的所属组
- chgrp users /abc/f2
- (5)file [选项] 文件或目录 :辨识文件类型
- sudo分配权限
- 四、使用 sudo分配权限:
- (1)修改/etc/sudoers 文件分配文件:格式:接受权限的用户登陆的主机 =(执行命令的用户) 命令
- (2)使用 sudo 调用授权的命令:$ sudo –u 用户名 命令
- <font color=red>目录的权限
- ★ 五、关于权限的总结
- 对于 删除 存在着一些讨论:root就算没有权限,也能进行修改,任何都能做
- 六、/tmp目录:文件共享
- 七、粘滞位 `chmod o+t`
- 八、umask
- umask前言引入
- (一)umask 权限值 :查看或修改文件掩码 [ 权限掩码:定制一个文件被创建的时候的默认权限 ]
- (二)umask过程及原理
- (1)什么叫程序掩码?
- (2)程序掩码具体实现
一、Linux权限的概念
Linux下有两种用户:超级用户(root)、普通用户。
- 超级用户:可以在linux系统下做任何事情,不受限制
- 普通用户:在linux下做有限的事情。
- 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
二、su [用户名] : 切换用户
命令:su [用户名]
功能:切换用户
要 从root用户切换到普通用户user,则使用 su user。
要 从普通用户user切换到root用户 则使用 su root(root可以省略),此时系统会提示输入root用户的口令。
三、Linux权限管理
文件
(一)文件访问者的分类(人)
- 文件和文件目录的所有者:u—User(中国平民 法律问题)
- 文件和文件目录的 所有者所在的组的用户 :g—Group(不多说)
- 其它用户:o—Others (外国人)
(二)文件类型和访问权限(事物属性)

(1)第一位:文件类型
-
-:普通文件【包括 文本、源代码、图片、视频、(动静态库)库、可执行程序 等,已经涵盖了所有的文件类型】
-
l:软链接 链接文件(类似Windows的快捷方式)

像windows下的桌面快捷方式


-
b:块设备文件(例如硬盘、光驱等)
-
p:管道文件
管道文件 和 数据化线|(都是兄弟)本质就是用来传递信息的 -
c:字符设备文件(例如屏幕等串口设备)
-
s:套接口文件
关于文件后缀
-
windows 与 文件后缀 有关
-
在Linux系统中 与 -ll ,-ls 显示的文件信息中,前面第一位的文件类型有关,与文件后缀无关

用cat查看 确实是可执行程序
但mv到 .txt文件中
使用 gcc/g++ 等工具 需要考虑对应的后缀

可执行程序的条件
可执行的条件:
-
首先,文件本身就是可执行文件
-
第一位:文件类型 具有
-x可执行权限
但系统之上的编译器指令,工具, 需要考虑对应相应的文件后缀
=> Linux 的文件类型不通过后缀区分( 不代表Linux不用后缀 )
- 对于文件后缀的态度 :虽然Linux不通过它识别文件类型,但是我们依旧推荐使用!:
- 使用工具时需要相应的文件后缀
- 人需要(人看一目了然)
(2)第2—10位:基本权限
-
读(r/4)[ Read ]
对文件而言, 读取文件内容 ;对目录来说, 浏览该目录信息
-
写(w/2)[ Write ]
对文件而言, 修改文件内容 ;对目录来说,删除移动目录内文件
-
执行(x/1)[ execute ]
对文件而言,执行文件 ; 对目录来说, 进入目录
-
“—” 表示 不具有该项权限
(三)文件权限值的表示方法
-
字符表示方法

-
8进制数值表示方法

(四)文件访问权限的相关设置方法
(1)chmod [参数] 权限 文件名:设置文件的访问权限
功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:
- R -> 递归修改目录文件的权限
【 说明:只有文件的拥有者和root 才可以改变文件的权限 】
(2)chmod 命令权限值的格式
① 用户表示符+/-=权限字符
+:向权限范围增加权限代号所表示的权限-:向权限范围取消权限代号所表示的权限=:向权限范围赋予权限代号所表示的权限
用户符号:
- u:拥有者
- g:拥有者同组用
- o:其它用户
- a:所有用户
//实例
# chmod u+w /home/abc.txt
# chmod o-x /home/abc.txt
# chmod a=x /home/abc.txt
chmod a=x /home/abc.txt
②三位8进制数字
//实例
# chmod 664 /home/abc.txt
# chmod 640 /home/abc.txt
chmod 640 /home/abc.txt
(3)chown [参数] 用户名 文件名 :修改文件的拥有者
功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
//实例
# chown user1 f1
# chown -R user1 filegroup1
(4)chgrp [参数] 用户组名 文件名 : 修改文件或目录的所属组
功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:
-R递归修改文件或目录的所属组
//实例
# chgrp users /abc/f2
chgrp users /abc/f2
(5)file [选项] 文件或目录 :辨识文件类型
功能说明:辨识文件类型。
语法:file [选项] 文件或目录
常用选项:
-
-c详细显示指令执行过程,便于排错或分析程序执行的情形。 -
-z尝试去解读 压缩文件 的内容
sudo分配权限
四、使用 sudo分配权限:
(1)修改/etc/sudoers 文件分配文件:格式:接受权限的用户登陆的主机 =(执行命令的用户) 命令
# chmod 740 /etc/sudoers
# vi /etc/sudoer
(2)使用 sudo 调用授权的命令:$ sudo –u 用户名 命令
//实例
$sudo -u root /usr/sbin/useradd u2
目录的权限
目录也是文件
- 会 对用户先进行匹配,对应的第2-10位用户权限
-
-x可执行权限:如果目录没有可执行权限, 则无法cd到目录中.创建一个目录 几乎给拥有者所属组都具备了
-x权限,有可执行-x权限 就一定能进文件

-
-r可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.-llls-l都是 查看对应文件的属性,-r读权限 取决于是否有权利查看文件的属性有
-x可以进文件,但无-r权限 无法通过ls查看文件属性

-
-w可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.无
-w写权限,则无法在文件中进行创建文件等活动

★ 五、关于权限的总结
- 目录的可执行权限 是表示 你可否在目录下执行命令。
-
-x决定是否可以进入目录如果 目录没有
-x权限,则无法对目录执行任何命令,甚至无法cd 进入目录, 即使目录仍然有-r读权限 【 这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件 】 -
-r决定是否可以进行对文件属性信息进行查看的权力而如果目录具有
-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限 ,所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档也就是说
-x权限 是后续操作的前提。 -
-w决定是否可以在目录下进行 新建 和 删除 文件
对于 删除 存在着一些讨论:root就算没有权限,也能进行修改,任何都能做

于是, 问题来了~~
-
问题一
换句话来讲, 就是 只要用户具有 目录 的写权限, 用户就可以删除 目录中 的文件, 而不论这个用户是否有这个文件的写权限.- 这好像不太科学啊, 我张三创建的一个文件, 凭什么被你李四可以删掉? 我们用下面的过程印证一下
虽然文件目录确实是你的,但文件的所有者是root。且该文件并没有开放任何权限,所以普通用户无法对其进行任何修改。

既然什么都做不了,留着也没什么用,那我普通用户就你root账号建设的文件给删除了。

问:为什么 普通用户 可以将 root账号 设置的文件给删除掉?即便你是root文件 我想删我也能删,尽管没有任何权限-x -r -w 凭什么可以删掉?
解答:答案就是我们前面说的。只要用户具有 目录 的写权限, 用户就可以删除 目录中 的文件, 而不论这个用户是否有这个文件的写权限.
虽然文件目录确实是你的,但文件的所有者是root,文件所有者有权对文件权限进行设置 。
但该 文件所在的目录 是我的,虽然文件不是我的 。
对于这个目录,我是拥有者-u 对应的写权限我是有的,所以我可以对这个目录里的内容进行修改
一个文件能否被删除,并不取决于文件本身!!! 而取决于文件所处的目录,拥有者是否具有-w权限!!
-
问题二
但应不应该删除root在未经自己允许的情况下设置的文件呢 ?这是否合理?-
合理,你root账号可以未经别人允许即可进入别人的目录里 别人并没有同意让你在里面写文件 那么别人也有权删除你创建的文件。
-
现在的问题已经不在于删的合不合理了 而是在于你为什么要随便在别人的目录下创建文件呢
-
但现实中并不会存在这样的问题
只对自己有权限,别人都没有。普通用户之间 乱搞不了。

只有root用户 和 超级用户 才会出现这样的情况 但你也有权 也可以 删除
六、/tmp目录:文件共享
家目录只对自己一个人有权限,对其他用户无权访问。
所以只能且 需要 在系统中的非家目录中进行 文件共享 。比如说 系统中的 /tmp 目录( 权限对u,g,o 都开放了 )

所以有 -w 权限,所有人都能删除tmp里的文件
删一个文件你这个文件无关!如果 想让其他人 看 或者 写,确实做到了 ---- 但是我们防不住别人删我!
-
问题三:我们去掉other的w权限不就可以了吗?
-
在
/tmp 目录,无-w虽说删不了( 能解决上述由于/tmp目录对于u,g,o的权限的全开放,避免了自己开辟的文件被别人删除的可能 ), -
但你能在root拥有者的tmp中能建文件的前提 也是因为
-w。没了
-w,新文件也在里面建不了,何来的共享可言。
-
为了解决这个不科学的问题, Linux引入了粘滞位的概念 .
七、粘滞位 chmod o+t
[root@localhost ~]# chmod +t /home/ # 加上粘滞位
[root@localhost ~]# ls -ld /home/
drwxrwxrwt. 3 root root 4096 9月 19 16:00 /home/
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/abc.c #litao不能删除别人的文件
rm:是否删除有写保护的普通空文件 "/home/abc.c"?y
rm: 无法删除"/home/abc.c": 不允许的操作
给 other 新增一个权限:t
粘滞位:给 自录共享 中的 other 设置的一个权限位 t,具有x的意义,同时也进一步对目录权限进行特殊限定:
该目录里面的文件,只有 超级用户root 、文件的拥有者或 目录的所有者 有权利进行删除!!
其他人一概不允许!
粘滞位 ( 用chmod o+t )
八、umask
umask前言引入
- 在Linux系统当中,可执行程序所占的比例只占其中一部分,只有必须得用可执行程序的才会加上
-x, 不需要的可由用户自己去加,或者其他生成软件去加。
目录和可执行程序,本身天然的就需要
-x,系统自动就会给你带上
那么
- 新建目录文件 的起始权限 本身就是从777开始( 带
-x),事实上:775 - 而新建普通文件 的起始权限 则是从666开始( 不带
-x),实际上:664

这是为什么呢? 原因就是创建文件或目录的时候还要受到umask文件掩码的影响。
(一)umask 权限值 :查看或修改文件掩码 [ 权限掩码:定制一个文件被创建的时候的默认权限 ]
功能:
查看 或 修改 文件掩码,给目录定制 被创建时的 默认权限
//实例
# umask 755
# umask ★查看
# umask 044 ★设置
(二)umask过程及原理
-
新建文件夹 默认权限=0666
-
新建目录 默认权限=0777
【只关心后面3个】

【 不是减法,借位作减法 得到的663 而不是664 】
(1)什么叫程序掩码?
-
【 umask【值】:【值】八进制二进制:权限掩码 】
-
程序掩码=最终不会出现的码 在umask当中出现的权限,就不应该在最终的权限中出现
(2)程序掩码具体实现
先 按位取反~(任何跟0按位与都会被转换成0) 后 再按位与 &

假设默认权限是mask,则实际创建的出来的文件权限是: mask & ( ~umask )
格式:umask 权限值
说明:将现有的存取权限 减去 权限掩码后,即可产生建立文件时预设权限。
超级用户root 默认掩码值为 0022,普通用户 默认为 0002 。
umask 权限值:修改文件掩码,将现有的存取权限 减去 权限掩码后,即可产生建立文件时预设权限。

由此可见,最终权限:由 起始权限 和 umask权限掩码 共同决定
相关文章:
【Linux】权限理解【文件权限以及目录权限详解、以及umsk程序掩码知识详解】
权限理解 一、Linux权限的概念二、su [用户名] : 切换用户三、Linux权限管理文件(一)文件访问者的分类(人)(二)文件类型和访问权限(事物属性)(1)第…...
Leetcode—1410.HTML实体解析器【中等】
2023每日刷题(三十八) Leetcode—1410.HTML实体解析器 算法思想 实现代码 typedef struct entityChar {char* entity;char rechar; }entity;entity matches[] {{""", "},{"'", \},{"&"…...
golang指针学习
package mainimport "fmt"func main() {name:"飞雪无情"nameP:&name//取地址fmt.Println("name变量的内存地址为:",&name)fmt.Println("name变量的值为:",name)fmt.Println("name变量的内存地址为:",nameP)fmt.Prin…...
c语言:用迭代法解决递归问题
题目: 解释:题目的意思就是用迭代法的空间和时间复杂的太高了,需要我们减小空间与时间的复杂度,我就想到了迭代法,思路和代码如下: #include <stdio.h> //这里是递归法转迭代法 int main() {int x,i…...
服务器数据恢复—OCFS2下raid5磁盘损坏导致阵列崩溃的数据恢复案例
服务器数据恢复环境: IBM某型号存储,6块sas硬盘组建一组raid5,划分一个lun分配给Linux服务器并格式化为OCFS2文件系统,共享给虚拟化使用,存放的数据包括24台liunx和windows虚拟机、压缩包文件和配置文件。 服务器故障…...
YOLO目标检测——卫星遥感多类别检测数据集下载分享【含对应voc、coco和yolo三种格式标签】
实际项目应用:卫星遥感目标检测数据集说明:卫星遥感多类别检测数据集,真实场景的高质量图片数据,数据场景丰富,含网球场、棒球场、篮球场、田径场、储罐、车辆、桥、飞机、船等类别标签说明:使用lableimg标…...
基于Towers of Binary Fields的succinct arguments
1. 引言 Ulvetanna团队Benjamin E. Diamond和Jim Posen 2023年论文《Succinct Arguments over Towers of Binary Fields》,开源代码见: https://github.com/recmo/binius(Rust Sage)【基于plonky3等库】 在该论文中࿱…...
【LeetCode刷题笔记】DFSBFS(一)
51. N 皇后 解题思路: DFS + 回溯 :由于 NxN 个格子放 N 个皇后, 同一行不能放置 2 个皇后,所以皇后必然放置在不同行 。 因此,可以从第 0 行开始,逐行地尝试,在每一个 i...
Amazon Generative AI 新世界 | 基于 Amazon 扩散模型原理的代码实践之采样篇
以前通过论文介绍 Amazon 生成式 AI 和大语言模型(LLMs)的主要原理之外,在代码实践环节主要还是局限于是引入预训练模型、在预训练模型基础上做微调、使用 API 等等。很多开发人员觉得还不过瘾,希望内容可以更加深入。因此&#x…...
使用C语言统计一个字符串中每个字母出现的次数
每日一言 Wishing is not enough; we must do. 光是许愿望是不够的; 我们必须行动。 题目 输入一个字符串,统计在该字符串中每个字母出现的次数 例如: 输入:i am a student 输出:a:2 d:1 e:1 i:1 m:1 n:1 s:1 t:2 u:1 大体思路…...
中国出海主力系列专访之三七互娱:亚马逊云科技助力三七互娱海外“出圈”之路
如果问,在众多的中国出海赛道中哪一条拥有基数最大的粉丝拥趸?以网络游戏、社交媒体、直播、短视频为代表的泛娱乐赛道便成为当仁不让的领跑者。 在东京、新加坡、开罗、伦敦、纽约、慕尼黑等国际都市,当地的年轻人会随时随地的打开“中国造”…...
算法刷题-动态规划2
算法刷题-动态规划2 珠宝的最高价值下降路径最小和 珠宝的最高价值 题目 大佬思路 多开一行使得代码更加的简洁 移动到右侧和下侧 dp[ i ][ j ]有两种情况: 第一种是从上面来的礼物最大价值:dp[ i ][ j ] dp[ i - 1 ][ j ] g[ i ][ j ] 第二种是从左…...
【Vue】自定义指令
hello,我是小索奇,精心制作的Vue系列持续发放,涵盖大量的经验和示例,如果对您有用,可以点赞收藏哈~ 自定义指令 自定义指令就是自己定义的指令,是对 DOM 元素进行底层操作封装 ,程序化地控制 DOMÿ…...
MFC 中创建并显示二维码
1.创建并显示 QRcode* pQR_Encode; pQR_Encode QRcode_encodeString("12345678901234567890", 0, QR_ECLEVEL_H, QR_MODE_8, 1); if (pQR_Encode) { int nBmpWidth pQR_Encode->width; //获取控件的边界大小 CRect rect; Ge…...
NX二次开发UF_CAM_set_clear_plane_tag 函数介绍
文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_CAM_set_clear_plane_tag Defined in: uf_cam_planes.h int UF_CAM_set_clear_plane_tag(tag_t object_tag, tag_t target_tag ) overview 概述 Set the tag of a clearance pl…...
计算机网络:数据链路层
0 本节主要内容 问题描述 解决思路 1 问题描述 数据链路层主要面临四个问题: 封装成帧;透明传输;差错检测;实现相邻节点之间的可靠通信。 1.1 子问题1:封装成帧 怎么知道数据从哪里开始?到哪里结束&a…...
电线电缆行业生产管理怎么数字化?
行业介绍 随着市场环境的变化和现代生产管理理念的不断更新,电缆的生产模式也在发生转变,批量小,规格多,交期短的新型制造需求逐年上升,所以企业车间管理的重要性越发凸显,作为企业良性运营的关键…...
计算机网络之数据链路层
一、概述 1.1概述 物理层发出去的信号需要通过数据链路层才知道是否到达目的地;才知道比特流的分界线 链路(Link):从一个结点到相邻结点的一段物理线路,中间没有任何其他交换结点数据链路(Data Link):把实现通信协议的硬件和软件…...
前端新手Vue3+Vite+Ts+Pinia+Sass项目指北系列文章 —— 系列文章(目录)
系列文章目录 第一章 技术栈简介 (开篇) 第二章 环境部署 (Node等环境安装) 第三章 项目创建 (Vite项目初始化) 第四章 认识项目目录 (项目整体介绍) 第五章 组件库安装和使用(Element-Plus基础配置) 第六章 样式格式化 (Sass配置) 第七章 路由配置 (vue-router深入解读) 第八…...
uniapp 给小程序添加分享功能
在 Uni-app 中,要为小程序添加分享功能,你可以通过使用小程序的自定义分享组件或通过配置页面的分享信息来实现。下面我将分别介绍这两种方法。 方法一:使用小程序的自定义分享组件 在小程序中,你可以创建一个自定义的分享组件&…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...
【Linux】自动化构建-Make/Makefile
前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...
CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...
永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...
