当前位置:首页 > 文章列表 > 文章 > linux > Linux chmod 目录权限为什么不能只看 rwx:搜索权限与逐级遍历

Linux chmod 目录权限为什么不能只看 rwx:搜索权限与逐级遍历

来源:17golang原创 2026-08-27 13:31:53 0浏览 收藏

给共享目录加权限时,最容易出现一种错觉:把目录看成“装文件的普通文件”,然后只盯着 rwx 的字母组合。实际上,目录的 rwx 分别作用于列出目录项、修改目录项和搜索路径;少了中间任一级的搜索权限,目标文件即使本身是 644,也可能返回 EACCES

判断目录访问不能只看最后一个文件的模式位,要从路径起点开始逐级核对搜索权限,再分别验证列目录、创建和读取这几种动作。

要点速览
  • 目录的 x 表示能否搜索并穿过目录,不是“运行目录”。
  • 目录有 w 但没有 x,通常不能有效新增、删除或访问目录项。
  • namei -l 适合看路径每一级,stat 适合确认目标本身的模式和属主。

先把目录权限拆成三个动作

在 Linux 手册里,普通文件的 x 是执行权限,而目录的 x 是搜索权限。为避免把两者混淆,下面把目录上的这个动作写成 x/搜索:它允许进程在该目录中按名字查找下一级,并继续解析更深的路径。目录的 r 更接近“读取目录项列表”,所以能不能执行 ls 与能不能访问一个已知文件,并不是同一个问题。

目录、r、w、x/搜索三种权限与列目录、修改目录项、逐级搜索动作的对应关系

例如,一个目录可以不给普通用户 r,但保留 x。这时用户可能无法列出目录内容,却能在已知完整路径时读取自己有权限读取的文件。反过来,只有 r 没有 x,看到目录名不代表能打开其中的文件。

用一个可复查的目录树验证差异

下面的实验不改系统目录,只在当前用户的临时目录里建立三层路径。目录名固定为 permission-lab/private/report.txt,便于把每次命令输出和路径级权限对应起来。

mkdir -p permission-lab/private
printf 'daily report\n' > permission-lab/private/report.txt
chmod 711 permission-lab
chmod 701 permission-lab/private
chmod 644 permission-lab/private/report.txt
namei -l permission-lab/private/report.txt
stat -c '%A %a %U:%G %n' permission-lab permission-lab/private permission-lab/private/report.txt

预期检查点是:顶层目录和 private 都给了当前用户搜索路径所需的 x,目标文件自身是 644。如果当前用户不是目录属主,还要结合实际的 group/other 权限判断,不能只看数字是否“看起来合理”。

沿路径逐级找出 EACCES 的位置

访问一个路径时,内核会从起点开始处理每一个非末级组件。任一级目录缺少对应身份的搜索权限,路径解析就会停止。这里的关键节点是 namei搜索权限EACCES目标文件:它们对应“逐级展开、检查、失败或抵达”的实际链路。

namei 逐级检查搜索权限,缺少搜索权限返回EACCES,否则抵达目标文件
chmod o-x permission-lab/private
namei -l permission-lab/private/report.txt
cat permission-lab/private/report.txt
chmod o+x permission-lab/private
cat permission-lab/private/report.txt

用没有属主权限的测试账号执行时,第一次 cat 应表现为权限拒绝;恢复目录的搜索权限后,才会到达并读取 report.txt。如果你用 root 执行,传统权限检查可能被超级用户权限或能力绕过,这个实验就失去对比意义。

为什么 w 不能单独解决删除和创建

创建、删除和重命名主要是在目录项上做修改,因此判断时要看目录的 w;但进程还要能搜索目录,才能定位要操作的名字。实际排查时,先看父目录的 wx,再看目标文件或子目录的权限。删除一个文件通常不由该文件自己的写权限决定,这是很多“文件是 444 但仍能被删”的困惑来源。

mkdir permission-lab/inbox
chmod 733 permission-lab/inbox
printf 'keep me\n' > permission-lab/inbox/item.txt
ls -ld permission-lab/inbox
ls -l permission-lab/inbox/item.txt

共享投递目录常用“能放入但不让人互相列举”的思路,但它会带来猜测文件名、清理责任和审计困难。若目录允许多人写入,还应评估 sticky bit、属主分组和应用层命名规则,别把一条 chmod 命令当成完整隔离方案。

把最小权限落到验收清单

  • namei -l /完整路径 检查路径每一级的属主、属组和模式。
  • stat 分别确认目录和目标文件,不把最后一个 644 当成全路径结论。
  • 分别测试“已知文件名读取”“列出目录”“创建/删除目录项”,这三个动作的权限需求不同。
  • 用目标运行用户复测;不要用 root 的成功结果替代服务账号的验收。

常见问题

目录没有 r,为什么已知文件名仍可能能读?

只要路径每一级都有搜索权限,并且目标文件本身允许读取,进程可以按已知名字完成查找;没有 r 主要影响读取目录项列表。

目录有 w 没有 x,为什么创建仍失败?

修改目录项需要写权限,但定位目录项也需要搜索权限。缺少 x 时,路径解析阶段就可能失败。

只改最后一个文件的 chmod 能解决权限拒绝吗?

不一定。应先用 namei -l 找出返回 EACCES 的路径组件,再根据运行用户和实际动作修正最小范围的权限。

总结

目录权限的核心不是记住几组数字,而是把动作拆开:r 影响目录项列表,w 影响目录项修改,x 影响搜索和穿过路径。遇到“文件权限没问题但仍打不开”时,从路径根部逐级检查,通常比反复给目标文件加权限更快,也更安全。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Python pathlib.Path.read_text 编码陷阱:默认编码与显式 UTF-8 的跨平台验证Python pathlib.Path.read_text 编码陷阱:默认编码与显式 UTF-8 的跨平台验证
上一篇
Python pathlib.Path.read_text 编码陷阱:默认编码与显式 UTF-8 的跨平台验证
Go net/http ServeContent 如何处理断点续传:Range 响应与缓存校验
下一篇
Go net/http ServeContent 如何处理断点续传:Range 响应与缓存校验
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • ljg-skills -
    ljg-skills
    ljg-skills 是李继刚开源的 AI 技能与提示词集合,面向大模型使用者整理了一批可复用的 prompt、角色设定和任务技能模板,适合用于学习提示词设计、搭建个人 AI 工作流和沉淀团队常用智能体能力。
    5309次使用
  • MELO音乐 - AI 音乐生成平台,支持多模态创作能力
    MELO音乐
    MELO音乐是一站式AI视频与音乐制作助手,对标suno, udio的高品质体验。提供伴奏生成、原创写词、无损导出、哼唱识曲、混音变声等全套音频与短视频编辑工具。无论是流行Kpop、电音说唱、民谣古风、摇滚儿歌还是商用轻音乐,MELO为你免费谱曲,轻松做同款!
    4824次使用
  • UniScribe - AI 免费在线音视频转文字平台
    UniScribe
    UniScribe 是一款 AI 音视频转文字与内容整理工具,支持上传音频、视频文件或粘贴 YouTube 链接,自动生成转写文本、摘要、思维导图和关键问题,并支持多格式导出,适合会议记录、课程学习、访谈整理和内容创作复盘。
    4766次使用
  • 剧云 - 免费 AI 智能中文剧本创作平台
    剧云
    剧云是专业中文剧本创作平台,安全稳定运行十余年,集成AI编剧、剧本医生审核、人物小传、剧情关系图、大纲编写、多人协作、Word导入导出、版权管控功能,数据安全防护,轻松高效创作剧本。
    5028次使用
  • 万象有声 - AI 一站式有声内容创作平台
    万象有声
    万象有声,一个专为有声创作者打造的新一代智能有声内容创作平台。平台提供专业的智能拆章、智能画本编辑、AI配音、AI生成音效、后期制作、智能对轨、智能审听等有声创作全流程工具,可以帮助创作者高效、低成本创作出引人入胜的有声作品。立即体验,让有声书制作更简单!
    4972次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码