简体中文

开发者工具 · Chmod 计算器

chmod 无法表达的内容:功能、不可变文件和 MAC

· 背景

chmod UNIX 访问控制

超出模式位的限制,显示为不同的 Unix 权限位图
原始 ToolAcre 矢量图

模式位是决定操作是否成功的几个层之一。这篇文章介绍了其他的(文件功能、chattr 标志、SELinux 和 AppArmor)以及如何识别每个人的拒绝。

Root 无法写入 644 文件 — 模式显示“是”,chmod 没有更改任何内容,并且错误仍然存在

模式可能允许操作,但操作仍然失败。计算器将 644 解码为 rw-r--r--,这意味着所有者可以读取和修改常规文件,而组和其他人可以读取它。这仅解决了提供的传统位的问题。它既不能证明进程所有权、路径身份,也不能证明另一个执行层的存在。

源名称了几个未建模的控件:功能、不可变属性、强制访问策略、安装标志、命名空间、系统调用过滤器、ACL 和所有权。重新进入模式或生成另一个 chmod 命令不会显示任何有关它们的信息。首先验证八进制、符号和矩阵的一致性;如果失败仍然存在,请从环境中收集证据,而不是扩大 chmod 猜测。

对于该工具看不到的层,模式兼容操作仍然可能失败

计算器不模拟外部控件之间的顺序。它的整个数据模型是一个从八进制 0000 到 7777 的整数,扩展为所有者、组、其他、setuid、setgid 和粘性布尔值。解释使用该值和目标类型。没有内核决策路径、安全模块序列或系统调用结果进入计算。

该限制使页面成为受控的第一步。确认模式,区分遍历和执行,记下特殊位字母。文章 501 添加所有权和父目录执行作为附近检查。除此之外,这些来源不提供 ACL、强制策略、挂载、属性、命名空间、功能或过滤器之间的诊断排名。兼容模式只会缩小问题范围。

计算器不会对外部执行层之间的排序进行建模

文件功能不在可用证据范围内。该实现不包含功能名称、数据解析器、检查命令或它们与 setuid 交互的说明。它可以将 setuid 编码为 4000 并解释一个可执行的常规文件。这不应该与该存储库既不建模也不记录的更细粒度的权限系统进行比较。

该页面证明的是具体的。模式 4755 变为 rwsr-xr-x,其摘要名称为 setuid,赋值附加 u+s。模式 4644 使用大写 S,因为所有者执行不存在,从而暴露了一个称为“几乎总是错误”的组合。测试确定这些模式事实;外部工具必须确定功能是否存在、是否允许访问或提供更好的设计。

文件功能位于源集之外

模型中也不存在不可变和仅附加属性。计算器既不读取文件系统属性,也不识别用于更改它们的命令。它的矩阵包含用于所有者、组和其他的 rwx,以及三个特殊位。因此,可见的写入位不能保证成功写入,并且重复切换它不能诊断页面从未观察到的属性。

保持区分可操作性。如果 644 渲染正确,则传统模式下存在所有者写入;这是代表性证据,而不是完整的书写。该页面不会打开安全引用的显示路径或运行其生成的命令。当足够的位伴随真正的故障时,检查实际的对象和系统,而不是归因于未观察到的状态。

不可变和仅附加属性位于源集之外

此处不解析强制访问控制上下文、配置文件和日志。消息来源仅将 SELinux 和 AppArmor 作为计算器无法观察到的决策示例。它们不提供上下文语法、策略语义、日志格式或诊断命令。因此,仅模式不能将拒绝归因于任一系统;证据必须来自执行环境。

文件或目录选择器强化了这个边界。它更改诸如运行、列表、创建、删除、输入和到达等动词,但既不更改整数也不读取策略标签。 755 程序和目录在描述不同的普通操作时共享 rwxr-xr-x。这两种解释都无法预测强制政策的结果,因此请保留经过验证的模式并查阅平台日志。

强制访问控制上下文和日志位于源集之外

提供的模式无法显示安装选项。计算器接受八进制或符号文本以及仅用于命令显示的可选路径。它永远不会打开该路径、识别其安装或读取配置。来源将只读、不执行和无 setuid 行为列为外部问题,但没有提供用于诊断这些策略的平台详细信息。

生成的文本可能包括八进制模式、带引号的路径和显示的 -R 标志,但没有一个证明文件系统会满足该请求。即使是完美往返的特殊位值,在看不见的规则下也可能无效。将命令视为审查工件,然后在声明权限更改或可以执行之前验证目标文件系统。

未从提供的模式中发现安装选项

命名空间和系统调用过滤器不会出现在模式模型中。输入不包含进程标识、容器上下文、系统调用列表或运行时配置。该页面无法知道进程是否看到相同的路径、到达预期的对象或过滤了调用。这些问题与在权限三元组中添加 4、2 和 1 有着根本的不同。

不要从成功的转换中推断运行时机制。验证涵盖格式错误的八进制数字、符号长度和错误的字母。有效的结果仅意味着文本映射到可表示的模式;它不验证执行环境。由于生成的 shell 文本是惰性的,因此命名空间和过滤器分析仍然需要这些源中缺少的运行时证据。

命名空间和系统调用过滤器未表示

从模式开始,因为它紧凑且易于排除或排除。转换值,检查每个类,区分文件和目录,并公开任何特殊位前缀。八进制、符号、矩阵、摘要和解释之间的一致性使传统问题得到了很好的组织。它可能会揭示缺失或过多的位,而不是排他性的权限。

仅使用来自真实系统的证据继续。所有权、ACL、属性、强制策略、挂载、功能、命名空间、过滤器和应用程序规则均未在此处发现。预览既不读取也不更改文件。严格的结论很狭窄:在本地解决提供模式算术,然后调查外部执行,而不是在不知道拒绝的情况下循环使用更广泛的 chmod 值。