当前位置: 首页 > article >正文

从入门到精通: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 的含义与文件不同:

权限操作示例说明
rls /dir列出目录内容(需配合 x 权限)
wtouch /dir/newfile在目录中创建/删除文件
xcd /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(允许同组用户读写协作)。

  •  

补充:粘滞位(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模式、仅主机模式,原来是这样工作的 交换机 构成局域网,实现所有设备之间的通信。 …...