首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能跟踪‘/bin/echo`’创建的系统?

为什么我不能跟踪‘/bin/echo`’创建的系统?
EN

Stack Overflow用户
提问于 2016-11-29 10:45:40
回答 1查看 340关注 0票数 1

我想知道系统是由echo (命令,而不是shell内置的)创建的,所以我决定通过dtrace窥探它。特别是我使用了dtruss

请考虑以下工作(跟踪sed创建的所有系统):

代码语言:javascript
复制
 sudo dtruss /usr/local/bin/sed 's/a/e/' <<< 'cat'
SYSCALL(args)        = return
thread_selfid(0x0, 0x0, 0x0)         = 470642 0
# and many more…

但是,如果我对echo做同样的尝试,我会得到以下内容:

代码语言:javascript
复制
 sudo dtruss /bin/echo 'cat'
dtrace: failed to execute /bin/echo: unknown error

事实上:有许多命令会导致这个错误。共同之处在于,这些命令都在/bin/usr/bin中。

布兰登的博客建议在诸如ls这样的命令上使用dtruss是可能的(他的例子是sudo dtruss ls -l hfsslower.d,其中hfsslower.d是一个普通文本文件)。这篇博文是2011年写的,是关于Mac的,但我知道OS从那时起就有了各种各样的安全增强。

会不会是我遇到了某种OS安全问题?我正在使用OS 10.12塞拉利昂。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-29 11:02:33

我应该试着搜索错误信息。

看来这确实是系统完整性保护

您不能再将DTrace附加到Mac上受限制的进程。所谓限制,我指的是每个内置的实用程序、守护进程或应用程序。

我对这篇文章的解释是:

  • csrutil enable --without dtrace不足以将DTrace附加到内置可执行文件。
  • 相反,您需要执行一个完整的csrutil disable (这完全关闭了SIP,这是过度的,在您的安全中造成了缺口,但似乎是唯一的解决方案)。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40863873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档