Linux 权限管理:从「Permission Denied」到「畅行无阻」
如果你曾在终端里敲命令时被一句Permission denied怼回来过这篇文章就是为你准备的。我们将从「为什么要有权限」开始把用户切换、rwx、chmod 八进制、umask 掩码、粘滞位这些看似零散的知识点串成一条完整的逻辑链。前置知识为什么会有「权限」这种东西一个很现实的场景Linux 是多用户操作系统。一台服务器上可能同时有 root 管理员、后端开发、前端开发、运维实习生同时登录。如果实习生不小心rm -rf /那就出大事了。权限的本质决定谁用户/角色能对什么资源文件/目录做什么操作读/写/执行。权限 人用户 角色 文件属性rwx人你的账号身份是什么root 还是普通用户你在目标文件面前扮演什么角色文件属性目标文件身上挂了哪些权限标签可读可写可执行两种用户级别用户类型特点root超级用户不受权限限制可以做任何事。例如 root 切换到任何普通用户都不需要密码普通用户受权限约束只能访问自己被授权的内容 root 的特权体现之一su切换到任何用户无需输入目标用户的密码而普通用户su切换时必须输入目标密码。第一部分su 和 sudo —— 切换身份的两种姿势suswitch usersu # 不跟用户名默认切换到 root因为系统 100% 存在 root su alice # 切换到 alice 用户 su - # 以重新登录的方式切换自动跳转到目标用户的家目录 su - alice # 组合用法密码规则切换方向需要谁的密码普通用户 → root输入root密码root → 普通用户不需要密码特权普通用户 A → 普通用户 B输入B的密码sudosuper user dosu的问题是什么你告诉了别人 root 密码他就能为所欲为。sudo解决了这个问题。sudo vim /etc/nginx/nginx.conf # 临时提权执行单条命令sudo 的逻辑你输入自己的密码不是 root 密码系统查/etc/sudoers这个白名单文件看你是不是被允许执行这条命令白名单的编辑权限只在 root 手里普通用户改不了❓为什么 sudo 不设计成输入 root 密码如果输入的是 root 密码那 sudo 就退化成了 su —— 知道 root 密码的人还是可以为所欲为。sudo 的设计哲学是短暂地放宽一个受信任用户的权限而不是交出 root 的钥匙。白名单机制让 root 可以在不泄露自己密码的前提下精准控制谁可以做什么。su vs sudo 对比susudo需要谁的密码目标用户的密码自己的密码权限范围完全切换身份单条命令临时提权安全程度知道 root 密码 拥有 root白名单精准控制root 密码不外泄适用场景管理员日常维护给普通用户开放特定高权限操作第二部分文件权限的构成 —— 三个角色 × 三种操作用ls -l看一个文件的属性-rw-r--r-- 1 alice dev 50 Jul 19 17:23 test.txt拆解第一列的-rw-r--r--- rw- r-- r-- │ │ │ │ │ │ │ └── other 权限其它用户 │ │ └───────── group 权限所属组 │ └──────────────── user 权限拥有者 └────────────────────── 文件类型- 普通文件d 目录l 链接三个角色角色缩写说明举例拥有者uuser文件的主人一般是创建者alice 创建的test.txt拥有者是 alice所属组ggroup一个用户组组内成员共享权限dev 组的所有成员对test.txt拥有 g 权限其它者oother既不是拥有者、也不属于所属组的所有人路人甲❓为什么要有所属组当你想对特定的一群人开放权限而不是对所有人开放时组就是最合适的管理单元。比如后端开发组能读写项目代码但前端组只能读。三种权限权限字母对文件对目录可读r能查看文件内容cat、more能列出目录内的文件名ls可写w能修改文件内容能在目录内新增、删除、重命名文件可执行x能运行该文件可执行程序/脚本能进入该目录cd能访问目录内文件关键认知同一个 r/w/x对文件和目录的含义完全不同。比如目录的 w 权限决定的是你能不能在里面新建/删除文件而不是修改目录本身的内容。第三部分chmod —— 修改文件权限⚠️ 只有文件的拥有者和root才能修改文件的权限。方式一符号法直观适合新手chmod 角色 操作 权限 文件名 │ │ │ u r g - w o x aall全部示例chmod uw test.txt # 给拥有者添加写权限 chmod g-r test.txt # 去掉所属组的读权限 chmod ox script.sh # 给其它用户添加执行权限 chmod ar shared.txt # 给所有人添加读权限等于不写角色默认 a chmod u-rw,gr test.txt # 同时修改多个角色用逗号隔开逗号后不要加空格 chmod urwx,grx,o test.txt # 表示精确设置为指定权限o 表示 other 没有任何权限方式二八进制数字法更常用高手必备每个权限对应一个数字r读 4 w写 2 x执行 1 -无 0 例如 rwx 421 7 rw- 420 6 r-x 401 5 r-- 400 4 -w- 020 2 --x 001 1 --- 000 0三个角色各用一个 0~7 的数字表示组成三位数chmod 755 script.sh # rwx r-x r-x → 拥有者全权限其他人只读执行 chmod 644 data.txt # rw- r-- r-- → 拥有者可读写其他人只读 chmod 600 secret.txt # rw- --- --- → 只有拥有者能读写私密文件 chmod 777 public.txt # rwx rwx rwx → 所有人全权限不安全常见数字组合速查数字含义典型用途755rwx r-x r-x可执行脚本、目录644rw- r-- r--普通文本文件600rw- --- ---私钥、密码文件700rwx --- ---个人脚本777rwx rwx rwx临时共享⚠️ 不推荐长期使用⚡ 权限匹配的一次验证原则这是一个很容易踩坑的机制用户访问文件时系统按照u → g → o的顺序匹配身份只匹配一次。一旦身份确定就只看该身份的权限不会因为 g 权限更大而降级使用。示例alice 是test.txt的拥有者同时也是其所属组dev的成员。-r---w-rw- 1 alice dev test.txtalice 对此文件的权限是r--只有读不是rw-。为什么因为系统先匹配到她是拥有者u就锁定用 u 的权限r--不会再去检查她作为组成员的 g 权限。 一句话权限验证是一次匹配立即生效不是取所有身份的最大权限。第四部分chown 和 chgrp —— 修改文件的拥有者和所属组⚠️ 修改拥有者和所属组是root 专属权限。即使你是文件的拥有者也不能把文件送给别人只能用sudo。# chown修改拥有者change owner chown root test.txt # 把拥有者改为 root chown alice:dev test.txt # 同时修改拥有者和所属组 chown :dev test.txt # 只修改所属组冒号前留空 # chgrp修改所属组change group chgrp dev test.txt # 把所属组改为 dev实际演示[rootserver ~]# ll -r-------- 1 whb whb 50 Jul 19 17:23 test.txt # 拥有者 whb所属组 whb [rootserver ~]# chown root test.txt -r-------- 1 root whb 50 Jul 19 17:23 test.txt # 拥有者 → root [rootserver ~]# chgrp root test.txt -r-------- 1 root root 50 Jul 19 17:23 test.txt # 所属组 → root [rootserver ~]# chown whb:whb test.txt -r-------- 1 whb whb 50 Jul 19 17:23 test.txt # 一键改回第五部分Linux 文件类型速览ls -l输出的第一个字符代表的不是权限而是文件类型首字符类型说明举例-普通文件源代码、文本、可执行程序、图片、库hello.c、a.outd目录目录本质上也是文件存储的是其内部文件的元数据列表my_project/l符号链接相当于 Windows 的快捷方式/lib64 → usr/lib64c字符设备按顺序 IO以字符为单位不支持随机读写键盘、显示器b块设备支持随机读写以数据块为单位硬盘、U 盘p管道文件进程间通信s套接字网络/本地进程间通信第六部分目录的 rwx —— 一个容易搞错的地方目录本身只是一个登记表存储的是内部文件的属性文件名、inode 号等而不是文件的内容。理解了这一点下面的规则就顺了。进入一个目录需要什么权限权限能否进入目录cd能否 ls 查看文件名能否在目录内新建/删除/重命名能否访问目录内的文件只有 r❌ 进不去✅ 能 ls但看不到详细信息❌❌进都进不去只有 w❌ 进不去❌❌进不去谈何操作❌只有 x✅ 能进❌ 无法 ls❌✅知道文件名就能读内容r x✅ 能进✅ 能 ls❌✅w x✅ 能进❌✅✅知道文件名就行r w x✅ 能进✅✅✅记忆技巧x是进门卡 —— 没有 x目录的门你都进不去r是花名册 —— 允许你查阅目录里有哪些文件lsw是增删改签 —— 允许你在花名册上添加、划掉、改名不影响文件内容本身一个反直觉的细节如果目录的 w 权限被关闭但文件的 w 权限保持打开chmod 555 mydir/ # 目录r-x r-x r-x没有 w # 此时无法在 mydir/ 下新建、删除、重命名文件 # 但如果 mydir/ 下已有文件 hello.txtrw-rw-rw-... vim mydir/hello.txt # ✅ 可以修改文件内容目录的权限管不到文件内容 —— 它只管登记表上的增删改。所以删除文件 ≠ 修改文件内容。删除是修改目录的登记表目录的内容修改是改文件的正文文件的内容。两者互不干涉。第七部分umask —— 为什么新建文件的默认权限是那样新建一个文件/目录时默认权限是怎么来的起始权限文件类型起始权限原因普通文件666rw-rw-rw-默认不需要执行权限大部分文件是文本/数据目录777rwx rwx rwx进入目录需要 x所以默认给予权限掩码 umask但实际新建的文件并不会是 666/777。看看你自己系统$ umask 0002umask权限掩码的作用凡是在掩码中出现的权限都要在起始权限中去掉。最终权限 起始权限 (~umask) # 位运算取反后按位与⚠️ 这个去掉不是数学减法而是位运算。不要用777 - 022 755来理解虽然结果碰巧相同但原理完全不同。实际计算假设umask 022最常见的值普通文件 起始 666 rw- rw- rw- umask 022 --- -w- -w- 掩码要去掉组写和其他写 ~umask 755 rwx r-x r-x 666 755 644 rw- r-- r-- 目录 起始 777 rwx rwx rwx 777 755 755 rwx r-x r-x结论新建普通文件 →rw- r-- r--644拥有者可读写其他人只读 ✅新建目录 →rwx r-x r-x755拥有者全权限其他人可读可进入 ✅umask 越大默认权限越小。例如umask 077会让新建文件只有拥有者能访问。修改 umaskumask # 查看当前掩码值 umask 027 # 临时设置重启后失效第八部分粘滞位Sticky Bit—— 共享目录中的隔离墙问题场景假设有一个多人共享目录/shared权限为rwx rwx rwx777whb 创建了whb_report.txt属于 whb另一个用户 maisui 进入/shared可以删除whb_report.txt为什么因为目录的 w 权限给了 other允许在目录内删除文件。矛盾点我需要 other 有 w 权限 → 这样才能在共享目录里创建文件 但我又不想 other 删我的文件 → w 权限允许删任何人的文件怎么办粘滞位登场chmod ot /shared # 给目录的 other 加上粘滞位 # 或 chmod t /shared # 简写默认加到 other 上加上粘滞位后目录的 other 权限位从x变为tdrwxrwxrwt 2 root root 4096 Aug 3 18:00 shared/ # ↑ 注意这个 t说明粘滞位已生效粘滞位的规则在设置了粘滞位的目录下 —谁能删除文件条件root超级用户✅ 永远可以目录拥有者✅文件拥有者✅其他用户❌ 即使有 w 权限也不能删别人的文件 满足既能让大家共享又保护每个人创建的文件不被别人删除。典型应用Linux 的/tmp目录默认就设置了粘滞位$ ls -ld /tmp drwxrwxrwt 20 root root 4096 Aug 3 18:00 /tmp/ # ↑ 看到 t 了吧第九部分通配符*—— 批量操作的利器跟权限搭配的常用姿势ls *.c # 列出所有 .c 结尾的文件 ls te* # 列出所有 te 开头的文件 chmod 644 *.txt # 批量修改所有 .txt 文件的权限 rm *.tmp # 删除所有 .tmp 文件*代表任意字符任意长度。*.c 所有以.c结尾的文件te* 所有以te开头的文件。总结一张图看清全部权限位完整解读- rw- r-- r-- │ │ │ │ │ │ │ └── othero4 r-- │ │ └──────── groupg4 r-- │ └────────────── useru6 rw- └─────────────────── 文件类型- 普通文件 数字表示644命令速查表命令作用示例su切换用户su - alicesudo单条命令提权sudo vim /etc/hostschmod 符号法修改权限加减chmod uw test.txtchmod 数字法修改权限数字chmod 755 script.shchown修改拥有者chown alice:dev test.txtchgrp修改所属组chgrp dev test.txtumask查看/设置权限掩码umask 027chmod t设置粘滞位chmod t /shared关键认知集锦权限只验证一次u → g → o 顺序匹配匹配到就停不取最大值目录的 rwx ≠ 文件的 rwx目录的 w 管增删改名文件的 w 管内容修改删除文件与文件权限无关与目录权限有关你能否删一个文件取决于你对目录有没有 w 权限最终权限 ≠ 起始权限 - umask是位运算起始权限 (~umask)粘滞位只对 other 生效chmod t和chmod ot是等价的chown/chgrp 只有 root 能做文件的拥有者也不能把文件送人最好的学习方式开一个终端用touch a.txt建个文件然后把本文中的每条chmod、chown、umask命令都敲一遍每次改完用ls -l看变化。权限这东西敲 10 分钟就全记住了。本文力求为初学者提供准确、全面、易理解的 Linux 权限知识体系。如有疏漏欢迎指正。

相关新闻

R语言linkET包实战:相关性网络热图构建与Mantel检验分析

R语言linkET包实战:相关性网络热图构建与Mantel检验分析

1. 项目概述:从“相关性”到“网络”的深度洞察在数据分析,尤其是生态学、微生物组学、基因组学乃至金融、社会科学等领域,我们常常面对一个核心问题:如何理解众多变量之间错综复杂的关系?传统的相关性矩阵或热图&…

2026/10/11 5:20:47 阅读更多 →
Unity角色头部跟踪系统:Animation Rigging实现与性能优化

Unity角色头部跟踪系统:Animation Rigging实现与性能优化

1. 项目概述:为什么需要角色头部跟踪系统?在Unity中开发角色时,我们常常会遇到一个看似简单却影响深远的细节:角色的头部如何自然地跟随目标?无论是第一人称射击游戏中角色转头瞄准,还是RPG中NPC与玩家对话…

2026/10/2 5:31:38 阅读更多 →
图解SQL JOIN:从INNER到FULL OUTER,避坑数据查询失真

图解SQL JOIN:从INNER到FULL OUTER,避坑数据查询失真

1. 从一次数据查询的“翻车”说起那天下午,产品经理急匆匆地跑过来,说后台报表里新用户的数据对不上,明明昨天注册了1000人,但统计出来的活跃行为只有800条记录。我第一反应是数据同步延迟,但检查了流水日志&#xff0…

2026/10/5 10:23:53 阅读更多 →

最新新闻

Python商品推荐系统实践:协同过滤算法与踩坑指南

Python商品推荐系统实践:协同过滤算法与踩坑指南

简介:这是一份以Python实现的商品推荐系统完整项目包,面向希望掌握推荐算法落地流程的学生、数据分析与机器学习初学者。项目基于约15万用户、12万商品及对应特征的脱敏数据集,完整覆盖数据加载、特征工程、基于内容推荐、协同过滤与矩阵分解…

2026/10/12 13:24:36 阅读更多 →
农业物联网数据传输模块参数配置实战指南

农业物联网数据传输模块参数配置实战指南

1. 项目概述:一个被低估的农业物联网“神经末梢”“小马智农数据传输模块参数”——这串词乍看平平无奇,像设备说明书里随手翻过的一页。但我在某农业物联网实验室连续三年参与田间部署后发现,它其实是整套智慧农业系统里最常出问题、也最容易…

2026/10/12 13:24:36 阅读更多 →
MATLAB评价与预测模型实战:从AHP、熵权法到TOPSIS与时间序列

MATLAB评价与预测模型实战:从AHP、熵权法到TOPSIS与时间序列

做评价和预测模型这块有些年头了,从最开始只会套模板跑TOPSIS,到后来被导师逼着搞懂AHP权重到底是怎么算出来的,再到现在能闭着眼在MATLAB里搭一套完整的组合模型流程——这条路踩过的坑不少,但积累下的经验也确实值钱。这篇文章就…

2026/10/12 13:24:36 阅读更多 →
Java后端社招面试指南:并发JVM数据库与系统设计全解析

Java后端社招面试指南:并发JVM数据库与系统设计全解析

最近整理了一份某老牌互联网公司Java后端社招的面试实录,发现不少题目其实没有想象中那么玄。整个过程大概是:简历筛过后两轮技术电话面,接着现场三面,最后HR面收尾。这份面试名单里的题目和答案,非常适合准备社招的同…

2026/10/12 13:24:36 阅读更多 →
基于Vue+Node.js的无人机与机器人健康预警系统实战

基于Vue+Node.js的无人机与机器人健康预警系统实战

做无人机和机器人健康预警这个需求,我是被一次“毫无预兆”的返航逼出来的。当时一台六旋翼在物流巡检途中直接触发低电量保护迫降,落地后发现其中一组电池已经轻微鼓包。问题不在电池本身,而在于监控后台只看了剩余电量,完全没有…

2026/10/12 13:24:36 阅读更多 →
C语言经典题61-70精讲:数组、递归、指针、结构体与链表实战

C语言经典题61-70精讲:数组、递归、指针、结构体与链表实战

手上一套一百道的C语言经典题库,不少朋友刷到61到70这个区间就卡住了。前面六十题基本属于“语法热身”,分支、循环、数组的读写占了一大半,到了61到70这批题,局面忽然变了:递归、指针、结构体、链表开始轮番上阵。这个…

2026/10/12 13:23:36 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →