Je regarde une poignée de fichiers sur mon système avec une autorisation définie sur mon système, en exécutant:
Sudo find / -perm -4000
J'ai remarqué ça /bin/ping
montre sur la liste.
Quelqu'un peut-il expliquer pourquoi ping nécessite une autorisation de setuid?
Pour que ping
doit fonctionner, il doit être capable de créer un brut prise réseau. Ceci est typiquement une action privilégiée.
Sur un système Linux moderne, cela peut Soyez accordé avec "capacités"
par exemple sur Centos 7:
$ ls -l /bin/ping
-rwxr-xr-x 1 root root 62088 Nov 7 2016 /bin/ping*
$ getcap /bin/ping
/bin/ping = cap_net_admin,cap_net_raw+p
Sur Debian 9.1 (Stretch):
$ getcap /bin/ping
/bin/ping = cap_net_raw+ep
Les capacités sont une façon plus récente d'effectuer une forme d'escalade de privilège plus fine sans accorder l'ensemble de "racine" qui est accordée avec des programmes séduides.
Sans capacités alors ping
_ _ devra être une racine définie, afin de créer la prise réseau brute.