Ich fragte mich, was syscalls von echo
(der Befehl, nicht die integrierte Shell) gemacht werden, so entschied ich mich, es über Dtrace zu schnüffeln. Speziell habe ich dtruss
verwendet.Warum kann ich keine Syscalls von `/ bin/echo` verfolgen?
sudo dtruss /bin/echo 'cat'
dtrace: failed to execute /bin/echo: unknown error
In der Tat:
Bedenken Sie, dass die folgenden Werke (von sed
alle syscalls gemacht Tracing): die folgende
sudo dtruss /usr/local/bin/sed 's/a/e/' <<< 'cat'
SYSCALL(args) = return
thread_selfid(0x0, 0x0, 0x0) = 470642 0
# and many more…
Aber wenn ich das gleiche mit echo
versuchen, erhalte ich dort sind viele Befehle, mit denen ich diesen Fehler bekomme. Die Gemeinsamkeit ist, dass diese Befehle alle in /bin
oder /usr/bin
waren.
Brendan's blog legt nahe, dass es möglich ist, dtruss
auf Befehle zu verwenden, wie ls
(sein Beispiel ist sudo dtruss ls -l hfsslower.d
, wo hfsslower.d
eine normale Textdatei ist). Der Blogbeitrag wurde 2011 zu Mac OS X geschrieben. Aber ich bin mir bewusst, dass OS X seitdem verschiedene Sicherheitsverbesserungen hatte.
Könnte es sein, dass ich irgendwie in OS X-Sicherheit stoße? Ich benutze OS X 10.12 Sierra.