Включить dtrace без sudo в Mac OS X?

Как я могу позволить пользователям использовать dtrace в Mac OS X. Я пытаюсь сделать эквивалент strace в Linux, и мне не нравится запускать приложения с повышенными привилегиями.

ОБНОВИТЬ

Хорошо, лучшее, что я могу сказать. Единственный способ не допустить, чтобы вредоносное приложение разрушило систему путем отладки, - это.

  1. Присоединить к процессу в отдельной консоли
  2. Используйте sudo дважды

Чтобы:

sudo dtruss sudo -u myusername potentially_harmful_app

Я подтвердил это с помощью этой короткой программы:

#include <iostream>
#include <unistd.h>
int main()
{
  std::cout << "effective euid " << geteuid() << "\n";
}

Смотрите это обсуждение для получения дополнительной информации:

http://discussions.apple.com/message.jspa?messageID=6430877

3 ответа

Решение

Пожалуйста, смотрите мое обновление выше. Это плохая дыра в безопасности, если я когда-либо видел. Правильная реализация dtruss должна отбрасывать привилегии любой программы, которую он вызывает. Имея несколько пользователей в системе, один из них будет вынужден все испортить и позволить плохо написанной программе испортить вещи.

Вы не можете иметь оба. Для взаимодействия с ядром dtrace требуются права суперпользователя, поэтому он должен работать либо с привилегированным пользователем root (setuid), либо с правами root.

chmod 4755 dtrace как root

при каждом запуске программа будет запускаться с правами root

Другие вопросы по тегам