Как разрешить пользователям использовать 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";
}
Более подробную информацию смотрите в этом обсуждении:
решение1
Пожалуйста, посмотрите мое обновление выше. Это серьезная дыра в безопасности, если я когда-либо ее видел. Правильная реализация dtruss должна лишать привилегий любую программу, которую она вызывает. Если в системе несколько пользователей, один из них обязательно все испортит и позволит плохо написанной программе все испортить.
решение2
chmod 4755 dtrace как root
каждый раз, когда вы запускаете программу, она будет работать с правами root
решение3
Вы не можете иметь и то, и другое. Для взаимодействия с ядром dtrace требуются привилегии root, поэтому он должен запускаться либо с привилегиями root (setuid), либо от имени root.