Déjà, ping/traceroute/nmap ont besoin de permission administrateur, mais sur linux tu peux limiter à créer des sockets raw.
Les Linux modernes n'ont pas besoin de faire utiliser des sockets bruts pour procéder à un traceroute, du moment que le paquet avec TTL réduit transporte de l'UDP (ou du TCP) et non de l'ICMP. Il suffit pour cela d'activer l'option IP_RECVERR ou IPV6_RECVERR sur le socket, et d'utiliser l'appel
recvmsg avec le drapeau MSG_ERRQUEUE afin de recevoir les informations relatives aux erreurs ICMP dans les données auxiliaires.
L'
implèmentation de traceroute fournie avec la plupart des distributions populaires (ainsi que celle dénommée
tracepath) n'a pas besoin de setuid ou de CAP_NET_RAW, contrairement à ping, et contrairement à mtr, pour cette raison. nmap propose également des modes ne requérant pas de droits super-utilisateur, notamment le scan par connect() (qui répond aux besoins de scan TCP, mais qui peut potentiellement être plus gourmand en matière de descripteurs système).