“sudo” est dangereux car pendant plusieurs minutes (au moins une dizaine je crois, ça dépend des versions), on peut exécuter n’importe quelle commande en tant que root. Heureusement, à la fin du temps impartit, la session est automatiquement fermée.
“su” est encore plus dangereux puisqu’une fois qu’on a ouvert la session root, il faut la fermer manuellement. Le temps qu’on ne l’a pas fait, n’importe quelle commande peut est exécutée en root, sans limitation de temps… Seul le mode root graphique fait pire.
“setuid” permet de donner les privilèges root pour une commande, et pas toutes les commandes d’un coup. Ainsi, on limite la portée des privilèges à un seul processus et on ne peut donc pas exécuter autre chose que ce que contient le programme (sauf bug de conception, mais on se place dans un cadre sain). Le temps qu’on ne pourra pas modifier le fichier qui s’exécute avec un setuid (et pour peu que ce fichier soit bien conçu), on ne mettra pas le système en péril, ce qui n’est pas du tout le cas si on peut exécuter n’importe quelle commande comme dans le cas de “su” ou “sudo”.