Como posso o dtrace executar o comando rastreado com privilégios não raiz?
OS X não possui Linuxstrace
, mas temdtrace
que deveria ser muito melhor.
No entanto, sinto falta da capacidade de fazer rastreamento simples em comandos individuais. Por exemplo, no Linux eu posso escreverstrace -f gcc hello.c
caputre todas as chamadas do sistema, o que me dá a lista detudo os nomes de arquivos necessários para o compilador compilar meu programa (o excelentememorizar script é construído sobre esse truque)
Quero portar memoize no mac, então preciso de algum tipo destrace
. O que eu realmente preciso é a lista de arquivosgcc
lê e escreve, então o que eu preciso é maistruss
. Com certeza posso dizerdtruss -f gcc hello.c
e obter a mesma funcionalidade, mas o compilador é executado com privilégios de root, o que é obviamente indesejável (além do enorme risco à segurança, um problema é que oa.out
agora o arquivo pertence à raiz :-)
Então eu tenteidtruss -f sudo -u myusername gcc hello.c
, mas isso parece um pouco errado e não funciona de qualquer maneira (nãoa.out
arquivo todo esse tempo, não sei por que)
Toda essa longa história tenta motivar minha pergunta original:como eu consigodtrace
executar meu comando com privilégios normais de usuário, assim comostrace
faz no linux?
Edit: parece que eu não sou o único perguntando como fazer isso: pergunta# 1204256 é praticamente o mesmo que o meu (e tem a mesma resposta subótima do sudo :-)