为什么SIP禁止我在受保护的文件夹之外的可执行文件上使用`dtruss`?


5

我正在OS X El Capitan(10.11.4)上运行以下命令:

sudo dtruss /usr/local/bin/mix phoenix.server

它失败,说:

dtrace:无法执行/ usr / local / bin / mix:dtrace无法控制以受限权利签名的可执行文件

mix是我随Homebrew安装的可执行文件。/usr/local/bin/mix实际上是一个符号链接,但它指向嵌套在下的文件/usr/local/Cellar

关于SIP官方声明说,/usr/local它对于安装人员是可写的(与/usr/一般情况不同)。它没有说SIP是否允许在此跟踪程序,但是鉴于我自己安装了该程序,因此能够跟踪它似乎是合理的。

我可以做些什么来允许跟踪此程序吗?我的想法:

  • 完全禁用SIP(似乎很用力)
  • 使Homebrew将所有内容安装到下面的文件夹中~(似乎很杂乱)
  • 忽略Homebrew并mix从源代码编译为~,然后将新的可执行文件压缩
    • 更新:同样的失败。这对我来说真的没有任何意义。SIP已关闭,因为我自己编译了该可执行文件,所以未对其进行“签名”,并且该文件不在受限制的位置。:P
  • 在VM中安装Linux。(严重吗?我必须这样做吗?)

如果您将混合二进制文件复制到下面的位置~或创建硬链接会怎样?
nohillside

@patrix我将其复制到~,虽然mix可以从那里运行,但是尝试dtruss给出相同的错误。
内森·朗

注意-我的特殊用例是观察流程访问了哪些文件。sudo fs_usage > some_file后来为感兴趣的过程做准备就可以了。但是我仍然不明白为什么我的原始命令不起作用。我是root,我明确要求使用锋利的剪刀。
内森·朗
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.