Linux 中文件的权限说明
目录
- 一:文件权限类型
- 二:默认权限管理
- 1. 查看当前用户的umask值
- 2. 修改当前用户的umask值
- 3. 根据umask计算默认权限
- 三:普通权限管理
- 1. 三种普通权限说明
- 1.1 对于非目录文件来说
- 1.2 对于目录文件来说
- 2. 查看某个文件的权限信息
- 2.1 使用 ls -l
- 2.2 使用 stat
- 3. 修改某个文件的权限信息
- 3.1 chmod 的符号模式
- 3.2 chmod 的数字模式
- 四:特殊权限管理
- 1. 三种特殊权限说明
- 1.1 SUID 权限
- 1.2 SGID 权限
- 1.3 Sticky Bit
一:文件权限类型
Linux中文件的权限可以大致分为默认权限、普通权限和特殊权限三大类;
- 默认权限:新建文件或目录时自动赋予的初始权限
- 普通权限:包括文件或目录的读(r)、写(w)、执行(x)权限。
- 特殊权限:对文件或目录的执行行为进行控制,包含
SUID、SGID、和 Sticky Bit
二:默认权限管理
Linux中创建文件的默认权限是由umask的值决定,而且还有个特点就是root用户的umask值和普通用户的umask值不一样;
1. 查看当前用户的umask值
umask的值是三位八进制数字,它表示需要去掉的权限。最前面的0表示这是一个八进制数。
# 在终端输入 umask 可以查看当前的 umask 值
ehigh@ubuntu:~$ umask
0002root@ubuntu:~# umask
0022
2. 修改当前用户的umask值
命令行修改umsk只会临时生效,系统重启后就失效了。
例如:
umask 026
3. 根据umask计算默认权限
-
非目录文件:
666 - umask值,如果结果为奇数就 + 1 -
目录文件:
777 - umask值
例如:umask为0002,文件的默认权限为:
666 - 002 = 644
文件默认权限基准值是666 是因为文件一般不需要可执行权限;
目录默认权限基准值是777 是因为目录需要“执行”权限才能进入和列出内容;
计算非目录文件权限时,如果结果是奇数说明具有执行权限,+1可以去掉其执行权限;
三:普通权限管理
1. 三种普通权限说明
1.1 对于非目录文件来说
-
读取权限
(r):这意味着用户可以查看文件的内容。 -
写入权限
(w):这意味着用户可以修改或删除文件。 -
执行权限
(x):这意味着用户可以执行文件(如果它是一个可执行文件或脚本)
1.2 对于目录文件来说
-
读取权限
(r):允许列出目录的内容。 -
写入权限
(w):允许在目录中创建、删除或重命名文件。 -
执行权限
(x):允许进入目录并访问其内容。
目录的最小权限是执行权限,既对于一个目录来说,必须要保证有执行权限,因为目录是一种特殊的文件类型,用于存储其他文件和目录。对于一个目录来说,必须拥有执行权限才能进入这个目录。不然连目录都没法进入。
2. 查看某个文件的权限信息
2.1 使用 ls -l
root@ubuntu:/home/ehigh# ls -l time_stamp.log
-rw-r--r-- 1 root root 11 10月 16 19:05 time_stamp.log
2.2 使用 stat
root@ubuntu:/home/ehigh# stat time_stamp.log File: time_stamp.logSize: 11 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 8936463 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2024-09-26 09:59:52.000000000 +0800
Modify: 2024-10-16 19:08:20.824239766 +0800
Change: 2024-10-16 19:08:20.824239766 +0800Birth: -
3. 修改某个文件的权限信息
通过chmod命令可以修改某个文件的权限信息,chmod有两种格式,字符格式和数字格式。
3.1 chmod 的符号模式
符号模式:用一个字符来表示某个权限,通过+、-、=符号来确认是增加权限还是去除权限。
表示用户:
a:表示所有的意思,包括文件所有者、所属组和其他用户u:表示的是文件所有者g:表示的是文件所属组o:表示的是其他用户
执行的操作:
+:表示在原有权限的基础上加上指定权限-:表示在原有权限的基础上减去指定权限=:表示清空原有权限,使用当前的权限
权限类型:
x:表示可执行权限r:表示可读权限w:表示可写权限-:单独的 - 表示无权限
例如:
# 给文件所有者增加可执行权限
chmod u+x file_name# 给所有用户(所有者、所属组、其它用户)增加可执行权限
chmod a+x file_name# 去除其它用户的r权限
chmod o-r file_name# 给文件所有者重新赋予权限
chmod a=rxw file_name
3.2 chmod 的数字模式
数字模式由 三个八进制数字组成 ,从左到第一个数字代表文件所有者权限,第二个数字表示文件所属组权限,第三个数字表示其他用户权限。
类别的权限(属主、组用户、其他用户)都是通过这些数字的组合来表示
1:表示可执行权限2:表示可写权限4:表示可读权限0:表示没有权限
例如:
# 表示给所有者、所属组和其他用户都授予读写执行权限 7=4+2+1 表示具有读写执行权限
chmod 777 file_name
四:特殊权限管理
1. 三种特殊权限说明
1.1 SUID 权限
- 默认状态;默认无
SUID权限 - 应用场景:用于可执行文件上,如果某个文件无可执行权限,则SUID不生效
- 权限作用:任何用户执行该文件时,都会以文件属主的身份来运行该文件,而不仅仅是执行用户的身份。
- 权限位置:出现在文件所有者可执行权限位置
- 权限表示:文件所有者的可执行权限位置会变为
s或S表示设置了SUIDrws:表示 SUID 已启用,并且文件的所有者具有对该文件的执行权限,此时SUID会生效;rwS:表示瑞谈SUID已启用,但是文件所有者对这个文件没有执行权限,此时SUID不生效;
- 权限设置:
- 符号发:
chmod u+s filename (只能给文件所有者 u 添加) - 数字法:
chmod 4755 filename(数字 4 代表 SUID,设置时在常规权限前面加上4)
- 符号发:
1.2 SGID 权限
- 默认状态;默认无SGID权限
- 应用场景:用于可执行权限或者目录
- 权限作用:
- 应用于可执行文件时:执行改文件的用户会以属组的身份来运行该文件
- 应用于目录文件时:所有在该目录中创建的文件或子目录将自动继承该目录的所属组,而不是创建者的有效组。
- 权限位置:出现在文件所属组可执行权限位置
- 权限表示:如果所属组的可执行权限位变为了
s或S,则表示设置了SGID权限。rwxr-sr-x:具有SGID权限,并且文件或目录对组用户有执行权限。rwxr-Sr-x:具有SGID权限,但文件对组用户没有执行权限。
权限设置:- 符号法:
chmod g+s filename(只能给文件所有者g 添加) - 数字法:
chmod 2755 filename(数字 2 代表 SGID,设置时在常规权限前面加上2)
1.3 Sticky Bit
- 默认状态;默认无 Sticky Bit 权限
- 应用场景:目录文件
- 权限作用:只有文件的所有者才可以删除或重命名文件,防止用户在公共目录中删除其他用户的文件。
- 权限位置:出现在文件其他用户可执行权限位置
- 权限表示:文件其他用户的执行权限位变为了
t或T,表示设置了 Sticky Bitrwxrwxrwt:具有 Sticky Bit 权限,并且目录对其他用户有执行权限;rwxrwxrwT:具有 Sticky Bit 权限,但目录对其他用户没有执行权限;
权限设置:- 符号法:
chmod o+t filename(省略 o 也可以直接加上 Sticky Bit - 数字法:
chmod 1755 filename(数字1 代表 Sticky Bit ,设置时在常规权限前面加上1)
例如:passwd命令设置有SUID权限:
普通用户使用 passwd 命令修改自己的密码时,需要访问 /etc/shadow 文件,但是该文件只有 root 用户才有权限访问。

为了允许普通用户修改自己的密码,passwd 程序需要拥有 SUID 权限,这样普通用户在运行 passwd 程序时,就会暂时获得 root 用户的权限,可以访问 /etc/shadow 文件并修改自己的密码。

例如:temp目录设置有 Sticky Bit 权限

相关文章:
Linux 中文件的权限说明
目录 一:文件权限类型二:默认权限管理1. 查看当前用户的umask值2. 修改当前用户的umask值3. 根据umask计算默认权限 三:普通权限管理1. 三种普通权限说明1.1 对于非目录文件来说1.2 对于目录文件来说 2. 查看某个文件的权限信息2.1 使用 ls -…...
MySql数据库中数据类型
本篇将介绍在 MySql 中的所有数据类型,其中主要分为四类:数值类型、文本和二进制类型、时间日期、String 类型。如下(图片来源:MySQL数据库): 目录如下: 目录 数值类型 1. 整数类型 2. …...
Godot中的信号
目录 概念 signal connect方法连接Callable 信号要求参数 查看信号 连接信号 监听信号 Button - text属性 pressed 连接源 「按钮」的信号连接 使用代码,将方法与信号相连接 节点的connect方法 节点直接使用emit_signal方法通过字符串的方式触发信号…...
vba学习系列(8)--指定列单元格时间按时间段计数
系列文章目录 文章目录 系列文章目录前言一、背景二、VBA总结 前言 一、背景 时间格式:00:00:00 时间段格式:00:00:00 - 01:00:00 计数N列单元格时间位于时间段内的行数 二、VBA 代码如下(示例): Sub AssignTimeSeg…...
大型企业软件开发是什么样子的? - Web Dev Cody
引用自大型企业软件开发是什么样子的? - Web Dev Cody_哔哩哔哩_bilibili 一般来说 学技术的时候 我们会关注 开发语言特性 ,各种高级语法糖,底层技术 但是很少有关注到企业里面的开发流程,本着以终为始(以就业为导向…...
【stm32】DMA的介绍与使用
DMA的介绍与使用 1、DMA简介2、存储器映像3、DMA框图4、DMA基本结构5、DMA请求6、数据宽度与对齐7、数据转运DMA(存储器到存储器的数据转运)程序编写: 8、ADC连续扫描模式DMA循环转运DMA配置:程序编写: 1、DMA简介 DM…...
哈希表的魔力
哈希表与字典 普遍存在一种误解,认为“哈希表”和“字典”这两个术语可以互换。这种观念从根本上是不准确的,至少在计算机科学领域是如此。 字典是将键映射到值的数据结构的一般概念。而哈希表是字典的具体实现。 本质上,字典扮演着一个总体…...
《YOLO 目标检测》—— YOLO v3 详细介绍
!!!!!!!!!!!!!还未写完!!!!!!!…...
WNN 多模态整合 | Seurat 单细胞多组学整合流程
测试环境:CentOS7.9, R4.3.2, Seurat 4.4.0, SeuratObject 4.1.4 2024.10.23 # WNN library(ggplot2) library(dplyr) library(patchwork)1. 导入数据 (1). load counts of RNA and protein dyn.load(/home/wangjl/.local/lib/libhdf5_hl.so.100) library(hdf5r)…...
【Linux】磁盘文件系统(inode)、软硬链接
文章目录 1. 认识磁盘1.1 磁盘的物理结构1.2 磁盘的逻辑结构 2. 引入文件系统2.1 EXT系列文件系统的分区结构2.2 inode 3. 软硬链接3.1 软链接3.2 硬链接 在讲过了内存文件系统后,我们可以知道文件分为两种: 打开的文件(内存中)未…...
网安加·百家讲坛 | 徐一丁:金融机构网络安全合规浅析
作者简介:徐一丁,北京小西牛等保软件有限公司解决方案部总监,网络安全高级顾问。2000年开始从事网络安全工作,主要领域为网络安全法规标准研究、金融行业安全咨询与解决方案设计、信息科技风险管理评估等。对国家网络安全法规标准…...
九、pico+Unity交互开发——触碰抓取
一、VR交互的类型 Hover(悬停) 定义:发起交互的对象停留在可交互对象的交互区域。例如,当手触摸到物品表面(可交互区域)时,视为触发了Hover。 Grab(抓取) 概念ÿ…...
老机MicroServer Gen8再玩 OCP万兆光口+IT直通
手上有一台放了很久的GEN8微型服务器,放了很多年,具体什么时候买的我居然已经记不清了 只记得开始装修的时候搬家出去就没用了,结果搬出去有了第1个孩子,孩子小的时候也没时间折腾,等孩子大一点的时候,又有…...
jmeter 从多个固定字符串中随机取一个值的方法
1、先新增用户参数,将固定值设置为不同的变量 2、使用下面的函数,调用这写变量 ${__RandomFromMultipleVars(noticeType1|noticeType2|noticeType3|noticeType4|noticeType5)} 3、每次请求就是随机取的值了...
priority_queue (优先级队列的使用和模拟实现)
使用 priority_queue 优先级队列与 stack 和 queue 一样,也是一个容器适配器,其底层通过 vector 来实现的。与 stack 和 queue 不同的是,它的第一个元素总是它所包含的元素中最大或最小的一个。 也就是说,优先级队列就是数据结…...
VisionPro 手部骨骼跟踪 Skeletal Hand Tracking 虚拟首饰
骨骼手部跟踪由XR Hands Package中的Hand Subsystem提供。使用场景中的Hand Visualizer组件,用户可以显示玩家手部的蒙皮网格或每个关节的几何图形,以及用于基于手部物理交互的物理对象。用户可以直接针对Hand Subsystem编写 C# 脚本,以推断骨…...
class 9: vue.js 3 组件化基础(2)父子组件间通信
目录 父子组件之间的相互通信父组件传递数据给子组件Prop为字符串类型的数组Prop为对象类型 子组件传递数据给父组件 父子组件之间的相互通信 开发过程中,我们通常会将一个页面拆分成多个组件,然后将这些组件通过组合或者嵌套的方式构建页面。组件的嵌套…...
Laravel|Lumen项目配置信息config原理
介绍 Laravel 框架的所有配置文件都保存在 config 目录中。每个选项都有说明,你可随时查看这些文件并熟悉都有哪些配置选项可供你使用。 使用 您可以在应用程序的任何位置使用全局 config 辅助函数轻松访问配置值。 可以使用“点”语法访问配置值,其中…...
2024系统分析师考试---论区块链技术及其应用
试题三论区块链技术及其应用 区块链作为一种分布式记账技术,目前已经被应用到了资产管理、物联网、医疗管理、政务监管等多个领域,从网络层面来讲,区块链是一个对等网络(Peer to Peer,P2P),网络中的节点地位对等,每个节点都保存完整的账本数据,系统的运行不依赖中心化节…...
为您的 Raspberry Pi 项目选择正确的实时操作系统(RTOS)
在嵌入式系统设计中,实时操作系统(RTOS)的选择对于确保项目的实时性能和可靠性至关重要。Raspberry Pi,尤其是其最新的RP2040微控制器,为开发者提供了一个功能强大的平台来实现各种实时应用。本文将探讨如何为您的Rasp…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
