Включить dtrace без sudo в Mac OS X?
Как я могу позволить пользователям использовать dtrace в Mac OS X. Я пытаюсь сделать эквивалент strace в Linux, и мне не нравится запускать приложения с повышенными привилегиями.
ОБНОВИТЬ
Хорошо, лучшее, что я могу сказать. Единственный способ не допустить, чтобы вредоносное приложение разрушило систему путем отладки, - это.
- Присоединить к процессу в отдельной консоли
- Используйте sudo дважды
Чтобы:
sudo dtruss sudo -u myusername potentially_harmful_app
Я подтвердил это с помощью этой короткой программы:
#include <iostream>
#include <unistd.h>
int main()
{
std::cout << "effective euid " << geteuid() << "\n";
}
Смотрите это обсуждение для получения дополнительной информации:
3 ответа
Пожалуйста, смотрите мое обновление выше. Это плохая дыра в безопасности, если я когда-либо видел. Правильная реализация dtruss должна отбрасывать привилегии любой программы, которую он вызывает. Имея несколько пользователей в системе, один из них будет вынужден все испортить и позволить плохо написанной программе испортить вещи.
Вы не можете иметь оба. Для взаимодействия с ядром dtrace требуются права суперпользователя, поэтому он должен работать либо с привилегированным пользователем root (setuid), либо с правами root.
chmod 4755 dtrace как root
при каждом запуске программа будет запускаться с правами root