终端工作期间,启动代理获得QQ/文件的“不允许操作”

2026年8月26日2 次浏览来源:Dev.to阅读原文

同样的zsh脚本可以列出 当我运行在终端。

起先为"LOUSTATION",失败取自:"The LaunchATION"拥有同名用户ID,同名,同名脚本.

这种组合使得这看起来像Unix许可问题.

测试结果并非如此。

有用的歧义是启动上下文:访问从终端成功,从.失败,仍然在受保护文件夹外的路径成功.

我在macOS 15.6.1(达尔文24. 6.0)上复制了这个,在.

测试后探测器被取出.

为什么第一次检查是错的 明显的嫌疑人是文件所有权、错误的家目录或作为另一个用户运行的工作。

探测器在接触档案前打印了这些事实: 两种运行产生了这个差异: 检查终端启动代理在用户 / uid / / 内部的列表条目 读取文件列表条目 工作目录不同,但脚本在.下使用绝对路径,所以没有解释否认.

负控更为重要:启动代理可以读取同一用户拥有的另一个目录.

改变所有权或模式比特不能解释为什么只有发射背景改变了结果。

自有层是隐私背景 在这个机器上,访问决定是附加在进程是如何启动的,而不只是uid

501.

终端有一个允许访问用户文档文件夹的隐私背景 。

启动的进程没有继承这一访问。

正因为如此,这些观察可以一并是真的:报告预期的用户。

指向预期的主目录。

该主目录的其他普通文件是可读的 。

在返回下读取 。

因此,最小的诊断不是另一个。

从交互应用程序和计划进程运行一个相同的读取,然后在桌面、文档或下载之外添加一个控制路径。

如果用户和路径正确,控制成功,并且只有被保护的文件夹失败,则调查预定过程的macOS隐私上下文.

管道可以隐藏否认 我的第一个探测器包含这行:它印出,然后印出。

在zsh中,管道的默认状态是其上个指令状态.

成功打印出错误文本, 因此管道虽然失败, 仍然看起来成功 。

这足以将明显的隐私否定转化为缺失的下游数据.

对于一个诊断脚本,在探测器前允许管道故障:我用最小的控制检查了行为:默认返回,并启用。

在更大的工作,抓住和处理状态 立即,而不是让另一个命令覆盖。

如果任务不需要保护文件夹, 请移动所需的输入和状态到一个无保护的应用程序目录中 。

从这次试验的两种发射背景来看,下面的负控制路径都是可以读取的。

如果工作必须读取文档,则将此作为单独的许可要求,从实际发射代理测试.

一个成功的终端运行并不能证明计划的进程有相同的访问权限.

我没有测试全磁盘访问(Full Disk Access),即一个系统启动Daemon,桌面,或下载,因此这个结果不能确定这些配置是如何表现的.

实用规则是狭义的:同样的uid和同义不会使"终端"和"发射代理"的等同阅读器成为.

比较发射背景,保持外向负控制,使管道报告实际失败的指令.

分享