开发者工具 · Chmod 计算器
chmod 符号模式解释:u+x、g-w、o=r 和 a+rX
· 工作原理
chmod UNIX 开发人员工作流程
chmod 的符号形式是一个微小的语法:who、operator、which 位。这篇文章将其拆开,使 u+x 和 go-rwx 变得显而易见,并显示符号何时击败八进制。
充满字母的部署脚本 — chmod u+x,go-w deploy.sh 有效,但团队中没有人能说出它改变了什么
u+x 等命令看起来像计算器的符号显示,但两种形式有不同的作用。可编辑的符号字段接受九个权限位置,可以选择在其前面添加可识别的文件类型字符。相比之下,生成的 chmod 参数用 u=、g= 和 o= 子句拼出完整的赋值,因此它表示固定模式而不是解析相对更改。
输入 750 使区别具体化。显示为rwxr-x---,而生成的赋值为u=rwx,g=rx,o=。两者都描述相同的所有者、组和其他位,但只有第二个被格式化为 chmod 参数。该页面从不运行该命令。它公开了表示形式,以便可以在任何单独的 shell 操作之前审查建议的值。
计算器将 ls 样式的显示与其生成的作业列表分开
字母 u、g 和 o 出现在生成的作业中,因为它们标记所有者、组和其他。每个输出都明确命名所有三个类,当类没有权限时包括一个空子句。计算器不会解析省略的 who 语法或 a 速记。它的输入从已完成的模式开始,而不是结果取决于现有目标的指令。
此更正可防止微妙的夸大。该矩阵可以准确显示哪个类接收读取、写入或执行,但它无法决定省略的类选择器在另一个 chmod 实现中意味着什么。将三个矩阵列与三个赋值子句进行比较。他们的协议验证固定值,而不依赖于该接口未实现的相对命令规则。
生成的作业中出现了哪些字母;相对省略-who语法不被解析
赋值生成器对每个普通类使用=。该选择准确地重建了所请求的所有者、组和其他三元组,包括通过发出空的右侧来清除类。尽管 + 和 - 属于符号 chmod 命令,但不接受它们作为计算器输入。因此,该页面不会对未知启动模式的增量添加或删除进行建模。
一位比较显示了支持的工作流程可以证明什么。模式 750 渲染 rwxr-x---;将组数字更改为 7 会生成 rwxrwx--- 并将 g=rx 更改为 g=rwx。计算器识别完成的前后模式。它不会针对实时文件评估 g+w,因为当前模式、路径、文件系统或命令执行不参与转换。
生成的运算符是 =,而 + 和 - 输入语法保留在工具之外
解析器在固定位置识别 r 和 w,在普通执行位置加上 x 或 -。它还接受 s、S、t 和 T,其中特殊位共享这些位置。大写X则不同:它属于相对chmod语法,这里不支持。提供 X 会被拒绝,而不是默默地解释为普通执行位。
小写和大写特殊字母是故意实现的。当 setuid 和 setgid 匹配的执行位存在时,使用 s;当不存在时,使用 S; Sticky 在其他执行位置按照相同的规则使用 t 或 T。特殊行和四位数摘要保留这些位。所有这些都没有增加对跨文件和目录的条件大写 X 选择的支持。
解析器接受 r、w、x、s、S、t 和 T;不支持大写X
类复制表达式(例如 g=u)未实现。计算器从不从现有对象中读取源类或将一个类的位应用于另一个类。它接收完整的八进制或 ls 样式模式,将该值转换为命名布尔值,并为每个类发出显式标志。任何复制的结果必须先在其他地方计算,然后此页面才能检查它。
假设外部步骤确定所有者和组都应具有 rwx,而其他则没有。输入 770 产生 rwxrwx--- 和 u=rwx,g=rwx,o=。这证实了完整的结果,但没有证明它是如何得出的。所有权也仍然未知:转换器标记类,但不识别真正的所有者、组或将遇到目标的进程。
未实现在类之间复制权限
模式 0750 以其前导零被接受,并解析为与 750 相同的值。所有者数字 7 激活读、写和执行;组位 5 激活读取和执行;其他数字 0 不会激活任何内容。同步显示变为 rwxr-x---,并且始终为四位数字的摘要使 0750 保持可见,作为明确的审核值。
为该固定模式生成的符号赋值为 u=rwx,g=rx,o=。它的三个子句直接对应于矩阵列,而八进制命令预览使用 750 ,除非特殊位需要第四位数字。提供的路径可能会在预览中引用,但永远不会打开。该示例验证表示,而不是所有权、授权或成功的权限更改。
工作示例:0750 作为固定模式并生成分配列表
基于引用的更改、符号链接处理和 ACL 操作保留在此转换器之外。页面中没有参考文件输入、路径遍历、ACL 条目模型或文件系统查询。选择递归仅添加显示的 -R 标志。因此,生成的命令无法报告将到达哪些对象或另一个访问控制层是否更改了有效结果。
无效输入提供了有用的边界检查。错误放置的许可函、不受支持的 X、尾随标记或格式错误的八进制数字将被拒绝而不是修复。将文本更正为支持的九字符显示会生成模式和同步视图。该接受仅证明该字符串映射到已实现的 12 位;它不验证外部 chmod 功能或目标环境。
引用、符号链接和 ACL 操作保留在此转换器之外
实际区别在于 ls 样式显示和生成的固定赋值之间,而不是作为相对的符号输入和作为绝对的八进制输入之间。两种可编辑形式都代表完成模式。计算器将其中之一转换为相同的整数、矩阵、摘要、解释和预览,然后为符号命令形式发出显式的 u=、g= 和 o= 子句。
使用这些同步视图来捕获算术错误。如果750、rwxr-x---、u=rwx,g=rx,o=同时出现,则固定模式内部一致。除非实际系统提供更多证据,否则就到此为止。该页面不会解析相对运算符、省略的选择器、类复制或大写 X,并且无法确定该模式是否解决了真正失败的操作。