traceroute
não precisa ser executado como root
; só precisa da capacidade CAP_NET_ADMIN
. Assim, você pode definir isso como recurso de arquivo para o arquivo e, em seguida, traceroute
sempre terá esse recurso (para todos os usuários), se seu kernel suportar recursos de arquivo e nenhum Módulo de Segurança do Linux (SELinux, AppArmor) estiver bloqueando:
setcap CAP_NET_ADMIN+ep /usr/sbin/traceroute
Enquanto traceroute
estiver em execução, você poderá ver seus recursos com pscap
. Isso não afeta o UID / EUID do processo.
Eu não sei como fazer isso, mas a AFAIK também é possível usar o AppArmor (e provavelmente o SELinux) para executar um processo com certos recursos. A tarefa principal é, obviamente, limitar as capacidades disponíveis.