要点
- 01这三个数字分别设置所有者、群组和其他人的权限。
- 02每个数字是读(4)、写(2)和执行(1)值的总和——所以 7 = 所有三种,5 = 读 + 执行。
- 03755 是文件夹和程序的标准权限;644 是普通文件的标准权限;777 几乎总是错误的。
三个数字,三个受众
在 Linux 和 macOS 上,每个文件和文件夹都为三组不同的人携带权限。从左到右,像 755 这样的权限模式中的三个数字分别适用于:所有者(拥有该文件的用户)、群组(共享访问权限的用户集)和其他人(系统上的其他所有人)。顺序永不改变——所有者、群组、其他人。
所以 755 表示:给所有者 7 描述的权限,给群组 5 描述的权限,给其他人 5 描述的权限。要理解整个内容,只需知道单个数字的含义。然后同样的规则应用三次。
每个数字如何构成:4、2、1
每个数字是最多三个值的总和。读权限值 4,写权限值 2,执行权限值 1。将你想要的权限加在一起,就得到一个 0 到 7 的数字。因为 4、2 和 1 是 2 的幂,每种组合都产生唯一的总和——永远不会有歧义。
分解数字 7:4(读)+ 2(写)+ 1(执行)= 7,所以 7 授予所有权限。数字 5 是 4(读)+ 1(执行)= 5,授予读和执行但不授予写。数字 6 是 4 + 2 = 6:读和写,但不执行。数字 4 是只读。数字 0 不授予任何权限。
应用到 755,可以分解为:所有者获得 7(读、写、执行——完全控制),而群组和其他人各获得 5(读和执行,但无法修改文件)。这正是你对程序或其他人应该能使用但不能修改的文件夹想要的。
你实际会使用的权限模式
几乎所有日常工作都归结为少数几种模式。以下是每个模式的含义和何时使用。
- 01755 = rwxr-xr-x——所有者可以读、写和执行;其他人可以读和执行。文件夹、脚本和可执行文件的默认设置。
- 02644 = rw-r--r——所有者可以读和写;其他人只能读。HTML、文本和图像等普通文件的默认设置。
- 03700 = rwx------——所有者有完全控制权;其他人甚至不能查看。用于私人文件夹和个人脚本。
- 04600 = rw-------——所有者可以读和写;其他所有人被锁定。适合私钥和包含机密的配置文件。
- 05775 = rwxrwxr-x——所有者和群组可以写;其他人可以读和执行。共享项目目录的常见设置。
- 06777 = rwxrwxrwx——每个人都可以做任何事情。安全警告标志;几乎不是正确答案。
如何计算 chmod 值
与其记住八进制,不如描述你想要的访问权限,让计算器生成数字和 rwx 字符串。
- 01
打开 chmod 计算器
访问 Handytool 的 chmod 计算器。它完全在你的浏览器中运行。
- 02
勾选复选框
根据所有者、群组和其他人应该能做什么,为读、写或执行勾选复选框。
- 03
读取结果
该工具显示数字模式(如 755)和符号字符串(如 rwxr-xr-x)并排,所以你可以复制你的命令需要的任何一个。
- 04
复制命令
获取现成的 chmod 命令并将其粘贴到终端中以应用权限。
一个需要注意的问题:执行意味着不同的事情
对于文件,执行位意味着"这可以作为程序运行"。对于文件夹,执行意味着不同的事情:"你被允许进入这个目录并访问其中的内容"。这就是为什么文件夹通常得到 755 而不是 644——没有执行位,你可以列出文件夹的名称但无法打开它或访问其中的文件。
这就是为什么一个新上传的包含可读文件的文件夹仍然会抛出"权限被拒绝"的原因。文件可能是 644 完全可读,但如果文件夹本身缺少群组或其他人的执行位,没有人可以进入它。将目录设置为 755,将其内容设置为 644,大多数这些难题就会消失。
chmod 常见问题
chmod 755 是什么意思?
它给所有者完整的读、写和执行权限(7),给群组和其他人只读和执行权限(5 和 5)。这是其他人应该能使用但不能修改的文件夹、脚本和程序的标准模式。
755 和 644 之间有什么区别?
755 包含执行位,所以文件可以运行,文件夹可以进入。644 没有执行位——所有者可读写,其他人只读,这对普通数据文件是正确的。
chmod 777 安全吗?
很少。它让每个用户和进程读、修改和替换该文件,这在任何共享系统上都是安全风险。选择解决问题的最严格模式,通常是 755 或 644。
我如何读取像 rwxr-xr-x 这样的模式?
用三组三个字符读:rwx(所有者)r-x(群组)r-x(其他人)。字母表示权限被授予,破折号表示没有。rwxr-xr-x 是 755 的符号形式。