Se você tem strace
e ele é não setuid para root, então
strace -e '!all' program_name [argument(s)]
deve funcionar. strace (1) diz (sob BUGS):
Programs that use the setuid bit
do not have effective user ID privileges while being traced.
porque seria um problema de segurança
se um usuário não privilegiado puder rastrear um programa setuid
(porque o rastreamento permite examinar e modificar a memória do processo).
Mas também, em uma seção especial chamada SETUID INSTALLATION,
Hedges o acima um pouco:
If strace
is installed setuid to root, then ... setuid and setgid programs
will be executed and traced with the correct effective privileges.
... only users trusted with full root privileges
should be allowed to do these things, ...
Portanto, se strace
for instalado como setuid para root, o truque acima não funcionará.
Mas isso geralmente não deveria ser o caso. E, mesmo que seja,
você pode contornar isso fazendo uma cópia privada, não SUID, de strace
.
(Estou pensando que, mesmo se /bin/strace
for atualizado automaticamente,
você não deve precisar para atualizar sua cópia privada.
Quanto ao comando, -e
informa a strace
quais e ventilam para rastrear.
-e all
significaria "rastrear todos os eventos" (que é o padrão),
então -e '!all'
significa nenhum traço. 1
Isso deve fazer com que strace
efetivamente faça nada além de aguardar e assistir
como seu programa (o programa X) é executado.
Se ele produzir uma saída indesejada, redirecione a saída para /dev/null
.
(Isso pressupõe que você não precisa ver a saída do console
do servidor X.)
por
03.07.2015 / 03:10