사용자가 Mac OS X에서 dtrace를 사용할 수 있도록 하려면 어떻게 해야 합니까? Linux에서 strace와 동등한 작업을 수행하려고 하는데 높은 권한으로 응용 프로그램을 실행하는 것을 좋아하지 않습니다.
업데이트
좋아, 내가 말할 수 있는 최선은. 악의적인 응용 프로그램이 시스템을 망치지 않도록 디버깅하는 유일한 방법은 디버깅하는 것입니다.
- 별도의 콘솔에서 프로세스에 연결
- 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
실행할 때마다 프로그램은 루트 권한으로 실행됩니다.
답변3
둘 다 가질 수는 없습니다. dtrace는 커널과 통신하려면 루트 권한이 필요하므로 루트 권한(setuid)을 사용하거나 루트로 실행해야 합니다.