Pourquoi le ping requiert-il le bit setuid?

9

Dans la version Jessie pour le Raspberry Pi, pingle setuidbit doit être défini. Quelle en est la raison?

Old Geezer
la source

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.

user1686
la source
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