从入门到精通:Linux 权限管理(rwx/chmod/chown)
目录
1. 引言:为什么需要文件权限?
2. 基础概念:理解 rwx 权限
(1)权限的三种角色
(2)权限的三种类型
(3)权限的两种表示法
(4) 目录的 rwx 权限详解
3. 实战操作:权限管理命令
(1)查看权限
(2)修改权限:chmod
(3)修改所有者:chown
(4) 常见场景与解决方案
附录:常用命令速查表
4.umask
1. 什么是 umask?
2. 权限计算规则
(1)普通文件的默认权限
(2)目录的默认权限
补充:粘滞位(Sticky Bit)详解
1. 什么是粘滞位?
2. 粘滞位的表示方法
3. 设置与查看粘滞位
4. 粘滞位的实际应用
5. 粘滞位的注意事项
6. 总结
1. 引言:为什么需要文件权限?
- 用一句话场景引入:
“想象一下,你的 Linux 服务器存放着重要数据,如何防止他人误删文件?如何让团队协作时部分文件可编辑、部分只读?这一切都依赖 Linux 的权限系统。”
- 一句话点题:权限是 Linux 安全与协作的基石。
2. 基础概念:理解 rwx 权限
(1)权限的三种角色
- 用户(Owner):文件所有者
- 组(Group):文件所属用户组
- 其他(Others):既不是所有者,也不在组的用户
(2)权限的三种类型
| 符号 | 权限 | 对文件的含义 | 对目录的含义 |
|---|---|---|---|
| r | 读(Read) | 查看文件内容 | 列出目录中的文件(如 ls) |
| w | 写(Write) | 修改文件内容 | 在目录中创建/删除文件 |
| x | 执行(Execute) | 执行文件(如脚本) | 进入目录(如 cd) |
(3)权限的两种表示法
- 符号表示:
rwxr-xr--(三组权限:用户/组/其他)
rwx = 4 (r) + 2 (w) + 1 (x) = 7
r-x = 4 + 0 + 1 = 5
r-- = 4 + 0 + 0 = 4
组合后:755 → rwxr-xr-x
(4) 目录的 rwx 权限详解
对目录而言,rwx 的含义与文件不同:
| 权限 | 操作示例 | 说明 |
|---|---|---|
r | ls /dir | 列出目录内容(需配合 x 权限) |
w | touch /dir/newfile | 在目录中创建/删除文件 |
x | cd /dir 或 cat /dir/file | 进入目录或访问目录内文件内容 |
3. 实战操作:权限管理命令
(1)查看权限
ls -l # 显示详细信息,如:-rwxr--r-- 1 user group 1024 Jan 1 10:00 script.sh
(2)修改权限:chmod
符号模式:
chmod u+x script.sh # 给用户添加执行权限
chmod go-w data.txt # 移除组和其他用户的写权限
数字模式:
chmod 755 script.sh # rwxr-xr-x
chmod 644 config.txt # rw-r--r--
(3)修改所有者:chown
chown user:group file.txt # 修改所有者和所属组
chown -R user:group /dir # 递归修改目录下所有文件(-R 参数)
(4) 常见场景与解决方案
场景 1:让脚本可执行
chmod +x script.sh # 添加执行权限
./script.sh # 运行脚本
场景 2:共享目录的权限设置
mkdir /project
chmod 775 /project # 用户和组可读写执行,其他人只读执行
chown dev:team /project # 归属开发者组
附录:常用命令速查表
| 命令 | 作用 |
|---|---|
ls -l | 查看权限 |
chmod 755 file | 修改权限(数字模式) |
chmod u+x file | 添加用户执行权限 |
chown user:group | 修改所有者和组 |
chmod -R | 递归修改目录权限 |
4.umask
1. 什么是 umask?
umask(权限掩码)是 Linux 中一个关键参数,用于控制新创建文件或目录的默认权限。它通过“屏蔽”某些权限位,确保新建文件或目录的权限符合安全规范。
umask #输出例如0002 0022(八进制)
2. 权限计算规则
默认权限 = 起始最大权限 - umask
注意:这里实际是按位取反后做“按位与”运算,但为了方便记忆,可简化为“减法”。
(1)普通文件的默认权限
-
起始最大权限:
666(即rw-rw-rw-),因为普通文件默认不应有执行权限(避免安全隐患)。 -
为什么你的情况是 664?
-
计算示例(假设
umask=0022):
最大权限: 6 6 6 → rw-rw-rw-
umask: 0 2 2 → ----w--w-
实际权限:6 4 4 → rw-r--r--
解释:
- 用户权限:
6 - 0 = 6→rw- - 组权限:
6 - 2 = 4→r-- - 其他用户权限:
6 - 2 = 4→r--
(2)目录的默认权限
- 起始最大权限:
777(即rwxrwxrwx),因为目录需要x权限才能进入(cd)。
最大权限:7 7 7 → rwxrwxrwx
umask: 0 2 2 → ----w--w-
实际权限:7 5 5 → rwxr-xr-x
特殊规则:
- 仅拥有目录的
w权限而无x:无法创建或删除文件(因为操作依赖x权限)。 - 仅拥有目录的
x权限而无r:可以访问目录内已知文件(如cat /dir/known.txt),但无法列出文件列表。
-
umask 的默认值:
- Root 用户:通常
umask=022(安全优先,限制组和其他用户权限)。 - 普通用户:通常
umask=002(允许同组用户读写协作)。
- Root 用户:通常
补充:粘滞位(Sticky Bit)详解
1. 什么是粘滞位?
粘滞位是一种特殊的权限位,主要用于目录。它的作用是:
- 限制文件删除权限:即使目录对所有用户开放写权限(
w),只有文件的所有者、目录的所有者或超级用户(root)才能删除或重命名文件。 - 典型应用场景:共享目录(如
/tmp),防止用户随意删除他人文件。
2. 粘滞位的表示方法
- 符号表示:在权限位的最后一位显示为
t或T。- 如果目录有执行权限(
x),显示为t(如rwxrwxrwt)。 - 如果没有执行权限,显示为
T(如rwxrwxrwT)。
- 如果目录有执行权限(
- 数字表示:在权限数字前加
1,如1777。
3. 设置与查看粘滞位
(1)查看粘滞位
使用 ls -l 查看目录权限,粘滞位显示在权限位的最后一位:
ls -ld /tmp
# 输出示例:drwxrwxrwt 10 root root 4096 Oct 10 12:00 /tmp
(2)设置粘滞
符号模式:
chmod +t /shared_dir # 添加粘滞位
chmod -t /shared_dir # 移除粘滞位
数字模式:
chmod 1777 /shared_dir # 添加粘滞位,权限为 rwxrwxrwt
chmod 0777 /shared_dir # 移除粘滞位,权限为 rwxrwxrwx
4. 粘滞位的实际应用
场景:共享目录权限控制
假设有一个共享目录 /shared,希望:
- 所有用户可以在目录中创建文件;
- 只有文件所有者或 root 可以删除文件。
操作步骤:
mkdir /shared
chmod 1777 /shared # 添加粘滞位,权限为 rwxrwxrwt
ls -ld /shared # 检查权限
# 输出:drwxrwxrwt 2 root root 4096 Oct 10 12:00 /shared
5. 粘滞位的注意事项
- 仅对目录有效:粘滞位对普通文件无意义。
- 与写权限的关系:粘滞位通常与目录的写权限(
w)结合使用。如果目录没有写权限,粘滞位的作用有限。 - 安全性:粘滞位不能完全替代其他权限控制(如 ACL),但可以有效防止误删文件。
6. 总结
- 一句话总结:粘滞位是共享目录的“守护者”,确保只有文件所有者或 root 可以删除文件。
- 扩展建议:结合
chmod和chown,灵活控制目录权限,满足团队协作需求。
相关文章:
从入门到精通:Linux 权限管理(rwx/chmod/chown)
目录 1. 引言:为什么需要文件权限? 2. 基础概念:理解 rwx 权限 (1)权限的三种角色 (2)权限的三种类型 (3)权限的两种表示法 (4) 目录的 rwx…...
虚拟机如何设置ip
在虚拟机中设置IP地址的具体步骤会因虚拟机软件(如VMware、VirtualBox等)和操作系统(如Windows、Linux等)的不同而有所差异。以下是几种常见虚拟机软件和操作系统的IP设置方法。 --- 一、VMware中的IP设置 1.Windows虚拟机 1. 打…...
自然语言处理:稀疏向量表示
介绍 大家好,我是博主。今天又来和大家分享自然语言处理领域的知识了。原本我计划这次分享NLP中文本表示的相关内容,不过在整理分享计划的过程中,发现这部分知识里包含一些涉及复杂数学原理和抽象概念的内容。对于刚接触NLP的小伙伴们来说&a…...
ubuntu 20.04 安装labelmg
1. 下载安装包 下载链接:下载链接 2. 安装启动 # 创建labelImg的环境 conda create -n labelImg# 激活labelImg环境 source activate labelImg安装依赖 pip install pyqt5-dev-tools -i https://pypi.tuna.tsinghua.edu.cn/simple/cd requirements/pip install -…...
Redis版本的EOL策略与升级路径(刷到别划走)
各位看官,刷到就点进来,大数据已经抓到你喽~😊 前言 在软件行业做服务端开发的我们,多多少少都会接触到Redis,用它来缓存数据、实现分布式锁等,相关八股文烂熟于心,但是往往会忽略具…...
ExpMoveFreeHandles函数分析和备用空闲表的关系
第一部分:ExpMoveFreeHandles和备用空闲表的关系 ULONG ExpMoveFreeHandles ( IN PHANDLE_TABLE HandleTable ) { ULONG OldValue, NewValue; ULONG Index, OldIndex, NewIndex, FreeSize; PHANDLE_TABLE_ENTRY Entry, FirstEntry; EXHAND…...
[预订酒店]
预订酒店 真题目录: 点击去查看 E 卷 100分题型 题目描述 放暑假了,小明决定到某旅游景点游玩,他在网上搜索到了各种价位的酒店(长度为n的数组A),他的心理价位是x元,请帮他筛选出k个最接近x元的酒店(n>=k>0),并由低到高打印酒店的价格。 输入描述 第一行:n,…...
java项目之基于ssm的学籍管理系统(源码+文档)
项目简介 基于ssm的学籍管理系统实现了以下功能: 学生信息管理: 学生信息新增 学生信息修改 学籍异动管理: 学籍异动添加 学籍异动删除 学籍异动修改 学生学业管理: 学生学业添加 学生学业修改 学生学业删除 学院信息管理&am…...
SpringBoot+Redis+Mybatis-plus黑马点评
短信登录 基于Session实现登录 流程: 发送短信验证码-->短信验证码注册登录-->校验登录状态(保存用户到ThreadLocal,方便后续使用) 不能每次请求服务都要进行登录状态校验,解决办法:拦截器 在Sp…...
算法-二叉树篇23-二叉搜索树中的插入操作
二叉搜索树中的插入操作 力扣题目链接 题目描述 给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同…...
[STM32]从零开始的STM32 BSRR、BRR、ODR寄存器讲解
一、前言 学习STM32一阵子以后,相信大家对STM32 GPIO的控制也有一定的了解了。之前在STM32 LED的教程中也教了大家如何使用寄存器以及库函数控制STM32的引脚从而点亮一个LED,之前的寄存器只是作为一个引入,并没有深层次的讲解,在教…...
DeepSeek-V3关键技术之一:DeepSeekMoE
DeepSeekMoE 是一种创新的大规模语言模型架构,旨在通过高效的计算流程和优化设计,在保持高性能的同时显著降低计算成本。 1. 架构设计 DeepSeekMoE 基于 Transformer 架构,融合了以下核心技术: 专家混合系统(Mixture…...
MySQL--DQL、DML、DDL、DCL概念与区别
在SQL中,根据功能和操作对象的不同,通常将语文分为四大类:DQL(数据查询语言)、DML(数据操作语言)、DDL(数据定义语言)、DCL(数据控制语言) 一、D…...
Android Activity启动流程详解
目录 Activity 启动流程详细解析 1. 应用层发起启动请求 1.1 调用 startActivity() 1.2 通过 Instrumentation 转发请求 2. 系统服务处理(AMS 阶段) 2.1 Binder IPC 通信 2.2 AMS 处理流程 2.3 跨进程回调 ApplicationThread 3. 目标进程初始化…...
夜天之书 #106 Apache 软件基金会如何投票选举?
近期若干开源组织进行换届选举。在此期间,拥有投票权的成员往往会热烈讨论,提名新成员候选人和治理团队的候选人。虽然讨论是容易进行的,但是实际的投票流程和运作方式,在一个成员众多的组织中,可能会有不少成员并不清…...
保姆级教程:用Chart.js实现柱状图与折线图联动
保姆级教程:用Chart.js实现柱状图与折线图联动 ▲ 最终实现的交互式组合图表效果 一、技术原理剖析 1.1 Chart.js渲染机制 Chart.js基于HTML5 Canvas实现图表绘制,其核心原理包括: 数据绑定:将数据对象映射为图形元素分层渲染:通过order属性控制图层叠加顺序坐标系计算:…...
初阶MySQL(两万字全面解析)
文章目录 1.初识MySQL1.1数据库1.2查看数据库1.3创建数据库1.4字符集编码和排序规则1.5修改数据库1.6删除数据库 2.MySQL常用数据类型和表的操作2.(一)常用数据类型1.数值类2.字符串类型3.二进制类型4.日期类型 2.(二)表的操作1查看指定库中所有表2.创建表 3.查看表结构和查看表…...
大模型应用:多轮对话(prompt工程)
概述 在与大型语言模型(如ChatGPT)交互的过程中,我们常常体验到与智能助手进行连贯多轮对话的便利性。那么,当我们开启一个新的聊天时,系统是如何管理聊天上下文的呢? 一、初始上下文的建立 1. 创建新会…...
4.3MISC流量分析练习-wireshark-https
流量分析题目的例题 1.了解wireshark的过滤方式 2.了解tls跟ssl协议基本还原 3.了解xor基本变换方式,获取flag 附件是一个流量包,打开之后有各种流量,但是分析无果,然后丢到kali中使用binwalk进行分析,发现有一个r…...
【AGI】DeepSeek开源周:The whale is making waves!
DeepSeek开源周:The whale is making waves! 思维火花引言一、DeepSeek模型体系的技术演进1. 通用语言模型:DeepSeek-V3系列2. 推理优化模型:DeepSeek-R1系列3. 多模态模型:Janus系列 二、开源周三大工具库的技术解析1…...
CSS Selectors
当然,理解纯CSS选择器(CSS Selectors)对于进行UI自动化测试非常重要。CSS选择器允许您通过元素的属性、层级关系、类名、ID等来精准定位页面上的元素。下面我将详细讲解CSS选择器的常见用法,并结合您的需求提供具体的示例。 1. 基…...
Java Junit框架
JUnit 是一个广泛使用的 Java 单元测试框架,用于编写和运行可重复的测试。它是 xUnit 家族的一部分,专门为 Java 语言设计。JUnit 的主要目标是帮助开发者编写可维护的测试代码,确保代码的正确性和稳定性。 JUnit 的主要特点 注解驱动&…...
3-3 WPS JS宏 遍历文件名获取函数(遍历指定文件夹下的所有工作)学习笔记
************************************************************************************************************** 点击进入 -我要自学网-国内领先的专业视频教程学习网站 *******************************************************************************************…...
STM32CubeMx DRV8833驱动
一、DRV8833驱动原理 STBY口接单片机的IO口,STBY置0电机全部停止,置1才能工作。STBY置1后通过AIN1、AIN2、BIN1、BIN2 来控制正反转。 AIN1AIN2电机状态00停止1speed反转speed1正转11停止 其中A端(AIN1与AIN2)只能控制AO1与…...
用Python之requests库调用大型语言模型(LLM)API的流式输出与非流式输出比较
文章目录 1. 非流式输出与流式输出概述2. 非流式输出2.1 代码实例12.2 代码实例2 3. 流式输出3.1 流式输出的定义和作用3.2 流式输出适用的场景3.3 流式输出的实现方式与实现技术3.4 代码实例33.5 代码实例4 4. 小结 1. 非流式输出与流式输出概述 大模型收到输入后并不是一次性…...
【Qt】ffmpeg照片提取、视频播放▲
目录 一、图像的成像原理: RGB成像原理: YUV成像原理: 二、多线程 三、ffmpeg解码(照片提取) 1.准备工作 (1)在工程文件夹里面新建三个文件夹 (2)在main函数中加…...
Vue+Elementui 全局配置el-table表格列宽可拖拽
1、需求分析 如何让表格列宽可以拖动 elementui的el-table如果想要列宽可以拖动的话 有一个属性叫 border 在模板里添加这个属性即可实现 但是系统里面的表格我不可能一个一个去添加border太麻烦 如果能够全局配置岂不是非常省时间吗 我们在main.js里面通过全局混入的方式来…...
SQL命令详解之增删改数据
目录 简介 1 添加数据 1.1 基础语法 1.2 SQL 练习 2 修改数据 2.1 基础语法 2.2 SQL 练习 3 删除数据 3.1 基础语法 3.2 SQL 练习 总结 简介 在数据库操作中,增、删、改是最基础的操作,它们通常对应着SQL中的INSERT、DELETE和UPDATE命令。…...
鸿蒙开发第4篇__关于在鸿蒙应用中使用Java语言进行设计
本博文对于鸿蒙APP程序员来说,很重要 HarmonyOS从 API8 开始不再支持使用Java作为开发语言,未来的新功能将在ArkTS中实现. API 8对应的是HarmonyOS 3.0.0版本, 2022年7月27日, 华为发布了HarmonyOS 3.0。 请看下图: 因此&#…...
Linux三种网络方式
前言 发现运维啥都得会,这周就遇到了网络问题自己无法解决,因此痛定思痛学一下。 参考文献 你管这破玩意叫网络? 桥接模式、NAT模式、仅主机模式,原来是这样工作的 交换机 构成局域网,实现所有设备之间的通信。 …...
