Linux 文件权限新手指南:看懂 rwx、数字模式与目录权限

Linux 文件权限新手指南:看懂 rwx、数字模式与目录权限

Kevin Wu
2026年8月27日· 6 分钟阅读

Linux 文件权限回答两个问题:当前是哪一类用户,这类用户能做什么。基础模型有三类用户——所有者、组、其他用户——以及读、写、执行三种权限位。目录的执行权限含义与普通文件不同,因此把文件模式直接套到目录上可能产生意外结果。

关键要点

  • 权限字符串应按“类型、所有者、组、其他用户”读取。
  • 对目录而言,x 表示穿越或访问条目,不是“运行目录”。
  • 只授予实际用户和任务所需的最小权限。
  • 不要用 chmod 777 作为万能修复,它会向所有人开放写入。

更通用的证据优先流程见《设备与 App 排障指南》。

Linux 文件权限中的所有者、组和其他用户是什么?

每个普通 Linux 文件和目录都有一个所有者用户和所有者组。基础权限分别应用于:

  • 所有者:拥有该对象的用户账户。
  • 组:属于该对象所有者组的用户。
  • 其他用户:既不是所有者,也没有通过所有者组匹配的其余用户。

Ubuntu 文件管理器文档说明,可分别为所有者、所有者组和系统中的其他用户设置权限。[1]系统为每次访问选择适用的一类,不会把“其他用户”权限叠加到更具体的所有者或组匹配上。

所有权与权限相关但不同。改变组会影响哪些用户落入“组”类别;改变模式则改变每类允许的操作。除非知道真正错误,不要同时修改两者。

如何读取 rwx 权限字符串?

长列表可能显示:

-rw-r-----

从左到右读取:

  1. - 表示普通文件,目录通常以 d 开头。
  2. rw- 是所有者权限。
  3. r-- 是组权限。
  4. --- 是其他用户权限。

Ubuntu 文档采用相同的“类型加三个三位组”结构,短横线表示该权限位未设置。[2]

该字符串只表示基础自主访问权限,并不包含所有控制层。ACL、强制访问控制、挂载选项、不可变标记、应用规则和网络文件系统政策仍可能允许或拒绝操作。

r、w、x 对文件是什么意思?

对普通文件:

  • 读 (r):读取内容。
  • 写 (w):修改或截断内容。
  • 执行 (x):请求系统把它作为程序或脚本执行,但还受文件格式、解释器、挂载选项和其他控制影响。

文件写权限不等于删除权限。删除通常修改父目录中的条目,因此目录权限更关键。反过来,移除文件写权限能防止直接修改,却未必阻止有权写父目录的用户替换或删除条目。

执行位也不能证明下载程序安全。赋予执行权限前应核实来源。软件来源选择见各类 Linux 软件包格式的差异对比。

权限对目录是什么意思?

目录权限描述对名称和条目的访问:

  • 读 (r):列出目录中的名称。
  • 写 (w):创建、删除或重命名条目,通常还需要穿越权限。
  • 执行 (x):穿越目录并按名称访问条目,同时仍受条目自身权限约束。

Ubuntu 图形界面的目录权限标签也区分“列出文件”“访问文件”和“创建及删除文件”。[1]

因此可能出现:

  • 有 r 没有 x:能看到名称,却无法正常访问元数据或内容。
  • 有 x 没有 r:知道准确文件名时可以访问,却不能列目录。
  • 目录同时有 w 和 x:即使文件不可写,也可能删除或替换目录条目。

排查路径时要检查每一级父目录。文件本身可读,也无法穿过缺少 x 的父目录。

chmod 数字模式如何计算?

每个权限有一个值:读 = 4,写 = 2,执行 = 1。所有者、组和其他用户分别相加。

模式所有者组其他用户常见含义
600读写无无私人用户文件
640读写读无所有者编辑、组读取
644读写读读广泛可读的非秘密文件
700全部无无私人目录或可执行文件
750全部读与执行无组可读并穿越
755全部读与执行读与执行公开可穿越目录或程序

这些只是示例,不是通用处方。644 不适合秘密,755 不适合私人目录。

符号修改通常更容易审核,因为它表达意图。例如 chmod u+x script.sh 只为所有者增加执行位,chmod 640 report.txt 则把基础模式替换为明确值。执行前应确认路径和所有权。

为什么 chmod 777 不是修复?

777 向所有者、组和所有其他本地用户授予读、写、执行。对目录而言,其他用户或进程可能因此创建、替换、重命名和删除条目。它会掩盖原来的所有权或服务账户错误,同时扩大安全问题。

应该先问:

  1. 哪个账户实际运行应用?
  2. 它需要读取、写入、创建、删除还是穿越哪个对象?
  3. 权限应属于一个所有者还是受控组?
  4. 真正阻塞是否发生在父目录?
  5. 是否还有挂载选项、ACL 或安全政策?

只修复最小不匹配。在审查符号链接、特殊文件、应用预期和回退方案前,不要递归改变大目录树。

所有权、umask 和 Linux 特殊权限呢?

新对象的初始模式由应用请求值再经过进程 umask 移除部分权限位。这解释了为什么同一目录中的不同应用会创建不同模式。

Linux 还有 set-user-ID、set-group-ID、sticky bit 和 ACL,常用于共享目录和可执行文件,但超出基础三位数字模型。如果权限字符串出现陌生字符或列表显示 ACL,应查看具体系统文档,而不是强行改成简单模式。

以高权限工具改变所有权可能影响服务、包管理、备份和用户访问。不要为省事把整个目录树递归改成自己的账户。

安全排查清单

  1. 确认执行失败操作的准确用户或服务账户。
  2. 记录文件类型、所有者、组、基础模式和父路径。
  3. 判断所需操作是读、写、执行、创建、删除还是穿越。
  4. 检查每级父目录的 x。
  5. 基础位正确时检查 ACL、挂载、沙箱或安全政策。
  6. 只做最小的所有权、组或模式改动。
  7. 用实际账户测试,并确认无关访问没有扩大。
  8. 记录并撤销临时诊断改动。

总结

把用户类别和操作分开,并记住目录 x 表示穿越,Linux 权限就容易理解。检查完整路径,选择最小模式,并同时考虑所有权和其他控制层。777 这类宽泛模式不能替代对失败访问的理解。

常见问题

-rw-r--r-- 是什么意思?

普通文件,所有者可读写,组和其他用户只能读取。

目录上的 x 是什么?

允许穿越目录并按名称访问条目,同时受条目自身权限约束,不是“执行目录”。[2]

可以删除只读文件吗?

可能可以。删除主要由父目录权限控制,不只由文件写权限决定。

目录使用 755 一定正确吗?

不一定,它允许所有用户读取并穿越;私人或项目目录可能需要更窄权限。

文件可读,为什么仍打不开?

父目录可能缺少穿越权限,或 ACL、挂载、沙箱和安全政策正在阻止。

脚本都应该有执行权限吗?

不应该。只有确实要运行、来源可信且执行路径清楚时才增加。

临时使用 chmod 777 安全吗?

它会扩大写入并掩盖原因。应使用范围最小的临时诊断修改,并在测试后还原。


来源:

  1. Ubuntu Help — Set file permissions — https://help.ubuntu.com/stable/ubuntu-help/nautilus-file-properties-permissions
  2. Ubuntu Help — Files list columns preferences — https://help.ubuntu.com/stable/ubuntu-help/nautilus-list.html

Sources checked 2026 年 8 月 27 日。


延伸阅读:

开启 3 天免费试用

注册即可免费体验全部高级功能。

*仅限新用户;每位用户只能获得一次试用。

Linux 文件权限新手指南:看懂 rwx、数字模式与目录权限 | AethoVPN