Chmod 计算器

类别 读取(r) 写入(w) 执行(x)
拥有者
其他
下一个

Unix文件权限分为三种组合形式(用户、组及其他用户的读取/写入/执行权限),可精确表示为三位八进制数值。例如chmod 755 script.sh即等同于rwxr-xr-x:所有者拥有全部权限,组及其他人仅具备读取和执行权限。该计算器支持逐项勾选复选框实时显示八进制权限结构;亦可直接输入八进制数值查看其读/写/执行权限分解详情,并提供完整的chmod命令供复制使用。

chmod 权限的工作原理

  1. 1

    切换 9 个权限位

    三组(用户、组、其他)×三种权限(读取、写入、执行)= 9个复选框。

  2. 2

    每个组都会转换为一个八进制数字。

    读取 = 4,写入 = 2,执行 = 1。将需要启用的位相加。

  3. 3

    阅读生成的八进制形式和符号形式

    例如 755 → rwxr-xr-x;644 → rw-r--r--;600 → rw-------。

  4. 4

    复制 chmod命令

    该工具会显示当前权限对应的 chmod 命令,可直接复制。例如:chmod 755 文件名、chmod u+x 文件名、chmod -R 755 目录。

权限位值

对文件的含义 对目录的含义
读取 4 可查看内容 可列出条目
写入 2 可修改 可创建/删除/重命名条目
执行 1 可作为程序运行 可遍历(用 cd 进入并访问其内部内容)

常见的权限值

八进制 符号化表示 常用用途
777 rwxrwxrwx 所有人皆可写入,危险;极少正确
755 rwxr-xr-x 脚本、二进制文件、目录
750 rwxr-x--- 仅您及您的团队可使用的私有脚本
700 rwx------ 专属于您的私有脚本(SSH, ~/.ssh)
644 rw-r--r-- 公共文档、图像、HTML
640 rw-r----- 组可读配置
600 rw------- 私有配置、SSH 私钥、~/.netrc
444 r--r--r-- 只读已发布文件
400 r-------- 私有只读(准确性较低;建议使用 600)

特殊权限(罕见但重要)

  • setuid (4xxx):以文件所有者的身份运行该文件,无论由谁执行。/usr/bin/passwd 使用此选项。
  • setgid (2xxx):在文件上运行时,以该组身份执行;在目录上运行时,新创建的文件将继承该目录所属的用户组。
  • 可粘性位(1xxx):在目录中,仅文件所有者有权删除或重命名该文件。/tmp文件即采用此设置。

四位数八进制数包括以下内容:chmod 4755 setuid-binary会在755的作用下激活setuid。

符号化的chmod

许多管理员更倾向于使用符号化形式来实现增量变更:

  • chmod u+x script,仅限所有者添加执行权限。
  • chmod go-w file,移除对组及其他对象的写入权限。
  • chmod a+r file,向所有用户、组及其他用户授予读取权限。
  • chmod u=rw,go=r file,精确设置这些位。
  • chmod -R 755 directory,递归。

常见错误

  • 上传文件夹设为 777:看似能“修复权限问题”,实则会向攻击者开放服务器访问。请使用更严格的组合(例如 755 配合正确的组所有权)。
  • 对目录执行 chmod -R 644:会移除目录的执行权限,导致无法用 cd 进入。请为目录设置 755,为普通文件设置 644。
  • 0600 对比 600:前导零表示 C 语言及 Shell 系统中的八进制形式;大多数 chmod 实现均支持这两种表示方式。
  • Umask:新文件会继承 666 减去 umask 的值。默认 umask 为 022,因此共有 644 个文件和 755 个目录。

常见问题

通常需要让所有者能够修改数据,而其他用户则只能查看和浏览数据。权限设置为:所有者使用 rwx 权限,组及其他用户使用 r-x 权限,正是这种精确组合。

几乎从不会如此。777权限允许系统中的任何用户修改该文件:在多用户系统中这存在安全隐患;而在单用户系统中则毫无必要(文件所有者已拥有755权限下的rwx权限)。若某Web应用程序确实需要777权限,真正的解决方案在于调整文件所有权(chown)或更改组成员关系。

~/.ssh 目录权限:700;私钥(id_rsa、id_ed25519)权限:600;公钥(.pub)权限:644;authorized_keys 权限:600。作为安全措施,SSH 会拒绝权限范围过宽的密钥。

chown用于指定文件所有者,chgrp用于指定所属组,二者为独立命令。chmod仅修改文件权限位,不会改变文件的所有者(用户或组)。

相关工具