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…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
