Pourquoi le ping requiert-il le bit setuid?


Réponses:


15

ping doit générer et recevoir des paquets ICMP, et généralement cela se fait en utilisant des "sockets bruts" - une fonctionnalité limitée à root (cap_net_raw) car elle pourrait également être utilisée abusivement pour renifler et perturber le reste du trafic sur le système.

De nombreuses distributions donnent désormais à ping le privilège cap_net_raw (voir les pages de manuel capabilities(7)et getcap(8)) au lieu de root setuid complet. Cela nécessite cependant à la fois le noyau et le système de fichiers pour prendre en charge les attributs étendus (xattrs), et certains systèmes "minimaux" les désactivent.

En outre, récemment, un type de socket "ICMP" spécial a été ajouté qui permet d'envoyer des messages ICMP Echo uniquement, sans aucun privilège supplémentaire. Cependant, la commande ping n'a pas encore été mise à jour.


je pense que les capacités (7) n'utilisent pas les xattrs.
ggg

2
@ggg: Mais c'est le cas. Essayez getfattr --dump --match=.* /sbin/ping.
user1686
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.