Es sieht aus wie in OS X 10.11 El Capitan dtruss
und dtrace
kann nicht mehr das tun, was sie tun sollen. Dies ist der Fehler, den ich bekomme, wenn ich versuche auszuführen sudo dtruss curl ...
:
dtrace: Curl konnte nicht ausgeführt werden: dtrace kann keine ausführbaren Dateien steuern, die mit eingeschränkten Berechtigungen signiert sind
Ich bin auf Leute gestoßen, die dieses Problem bemerkt haben, aber bisher keine Lösungen.
Gibt es eine Möglichkeit, dies zu beheben oder zu umgehen?
osx-elcapitan
dtrace
Flimm
quelle
quelle
Antworten:
Nach den Antworten von Alexander Ushakov und Charles:
Sobald Sie dies getan haben
csrutil enable --without dtrace
, gibt es eine Alternative zum Kopieren der Binärdatei: Führen Sie die Binärdatei in einem Terminalfenster aus und verfolgen Sie den Terminalprozess selbst in einem anderen Terminalfenster.Suchen Sie im ersten Terminalfenster die PID:
Beginnen Sie im zweiten Terminalfenster mit der Ablaufverfolgung:
Führen Sie im ersten Terminalfenster den Prozess aus, den Sie verfolgen möchten:
Zu diesem Zeitpunkt sollte die Ablaufverfolgung im zweiten Fenster angezeigt werden. Ignorieren Sie die Einträge für die PID, die Sie verfolgen (z. B. 1154), und der Rest bezieht sich auf den Prozess (und seine Nachkommen), an dem Sie interessiert sind.
quelle
dtruss -n
funktioniert auch. Dies ist eine viel schönere Problemumgehung als das Kopieren.Für diejenigen, die das System nachverfolgen möchten
csrutil disable
, wirdcopy
es in ein Verzeichnis verschoben , das nicht "eingeschränkt" ist, z./tmp
Siehe @ JJs Kommentar: /apple/208762/now-that-el-capitan-is-rootless-is-there-any-way-to-get-dtrace-working/224731#224731
quelle
~$ sudo dtruss -f -t open sudo -u $USER /tmp/Picasa dtrace: failed to execute sudo: dtrace cannot control executables signed with restricted entitlements
Wie Andrew bemerkt, liegt dies am Systemintegritätsschutz , der auch als "rootless" bezeichnet wird.
Sie können es ganz oder teilweise deaktivieren (aktivieren Sie nur dtrace mit einigen Einschränkungen).
quelle
Ich würde dies als Kommentar posten, aber ich bin nicht erlaubt.
Das Deaktivieren von SIP ist nicht erforderlich. Kopieren Sie einfach die Binärdatei an einen anderen Speicherort und es funktioniert einwandfrei:
Für Binärdateien, die nach dem Kopieren noch normal funktionieren können, ist dies die beste Option, da sie die gesamte Lebensdauer des Prozesses erfassen und keinen Schutz deaktivieren müssen.
quelle
/sbin/ifconfig
. Ausgabe istdtrace: failed to execute ./ifconfig: (os/kern) failure
.dtrace
kannifconfig
aufgrund des von Apple verwendeten Codesignierungsprozesses nicht angehängt werden. Einfachcodesign --remove-signature ./ifconfig
und es sollte funktionieren!Es sieht so aus, als würde das vollständige Deaktivieren von SIP immer noch dtruss für eingeschränkte Prozesse blockieren:
quelle
Siehe meine Antwort auf die verwandte Frage "Wie kann dtrace den Befehl traced mit Nicht-Root-Berechtigungen ausführen?" [sic].
DTrace kann Prozesse ausführen, die bereits ausgeführt werden. Starten Sie also einen Hintergrundprozess, der 1 Sekunde auf den Start von DTrace wartet (Entschuldigung für die Rennbedingung), und überprüfen Sie die PID dieses Prozesses.
Vollständige Erklärung in der verknüpften Antwort.
quelle