Как я могу заставить dtrace запускать трассированную команду с привилегиями не-root?
OS X не хватает Linuxstrace
, но это имеетdtrace
что должно быть намного лучше.
Однако мне не хватает возможности выполнять простую трассировку по отдельным командам. Например, на Linux я могу написатьstrace -f gcc hello.c
для блокировки всех системных вызовов, что дает мне списоквсе имена файлов, необходимые компилятору для компиляции моей программы (отличноmemoize скрипт построен на этом трюке)
Я хочу портировать памятку на Mac, поэтому мне нужно какое-тоstrace
, Что мне действительно нужно, так это список файловgcc
читает и пишет, так что мне нужно большеtruss
, Конечно же, я могу сказатьdtruss -f gcc hello.c
и получить примерно такую же функциональность, но затем компилятор запускается с привилегиями root, что, очевидно, нежелательно (кроме огромного риска для безопасности, одна проблема заключается в том, чтоa.out
файл теперь принадлежит пользователю root :-)
Я тогда попробовалdtruss -f sudo -u myusername gcc hello.c
, но это чувствует себя немного неправильно, и не работает в любом случае (я не получаюa.out
файл на все это время не уверен почему)
Вся эта длинная история пытается мотивировать мой оригинальный вопрос:Как я могу получитьdtrace
запустить мою команду с обычными правами пользователя, так же, какstrace
делает в Linux?
Изменить: кажется, что я не единственный, кто задается вопросом, как это сделать: question# 1204256 во многом совпадает с моим (и имеет такой же субоптимальный ответ sudo :-)