OS X не хватает Linux strace
, но он имеет dtrace
, который должен быть намного лучше.Как можно заставить dtrace запустить прослеживаемую команду с привилегиями non-root?
Однако, я пропускаю возможность простейшего отслеживания по отдельным командам. Например, на Linux я могу написать strace -f gcc hello.c
в caputre все системные вызовы, которые дает мне список все имена файлов, необходимые компилятором скомпилировать свою программу (отличный memoize сценарий построен на этот трюк)
I хочу портировать 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?
Edit: это, кажется, что я не единственный, кто задавался вопросом, как сделать это: вопрос #1204256 является почти такой же, как у меня (и имеет тот же самый неоптимальный SUDO ответ :-)
Возможно, вы правы. хотя получение прав root не является проблемой здесь, так как на моем ноутбуке я могу (и сделал это) 'chmod a + s dtrace', но dtrace не предназначен как инструмент« unix power user », а как" unix administrator ". Вот почему попытка использовать его из пользовательских программ приводит к такой надуманной ситуации. Большое спасибо за ваш ответ. – Gyom
Не мог ли он иметь «ограниченный режим», в котором будут запускаться только некоторые зонды (например, зонды зондов или зондовые зонды) и только в некоторых процессах (принадлежащих соответствующему пользователю), и будут доступны только некоторые функции : те, которые могут быть легко сделаны только для проверки собственных процессов пользователя или которые предоставляют доступ к информации, уже доступной пользователю другими способами? – SamB