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…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...
区块链技术概述
区块链技术是一种去中心化、分布式账本技术,通过密码学、共识机制和智能合约等核心组件,实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点:数据存储在网络中的多个节点(计算机),而非…...
Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践
前言:本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中,跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南,你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案,并结合内网…...
jdbc查询mysql数据库时,出现id顺序错误的情况
我在repository中的查询语句如下所示,即传入一个List<intager>的数据,返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致,会导致返回的id是从小到大排列的,但我不希望这样。 Query("SELECT NEW com…...
