Quello che non mi e' chiaro e': **nel concreto** quando si
devono/possono usare queste capabilities? Qualcuno ha degli esempi
concreti di applicazioni che necessitano di avere delle
capabilities? In che casi e perche' bisognerebbe assegnare una
capability piuttosto che assegnare setuid?
Premesso che ho sentito di queste capabilities solo quando
tu me ne hai parlato all'incontro a Merano poche ore fa... 
come esempio concreto, se hai un eseguibile webserver che vuoi
far ascoltare sulla porta 80, mi pare interessante poter dare questa
capabiliy CAP_NET_BIND_SERVICE che citi, piuttosto di grezzamante
dare setuid root all'eseguibile rischiando che faccia danni.
Bye,
Chris.
Chris Mair wrote:
mi pare interessante poter dare questa
capabiliy CAP_NET_BIND_SERVICE che citi, piuttosto di grezzamante
dare setuid root all'eseguibile rischiando che faccia danni.
Un altro esempio concreto รจ il ping, che ha bisogno di creare un raw
socket per mandare pacchetti icmp. In passato questo programma doveva
essere setuid, ma adesso usa le capabilities sotto Linux:
root(a)grumpel:~# getcap /usr/bin/ping
/usr/bin/ping = cap_net_raw+ep
Altri esempi sono wireshark, tcpdump etc.
Thomas
Sul mio notebook (Linux Mint 19.3) trovo pochi casi:
diego(a)dm-nb2:~$ sudo getcap -r /usr/bin/
/usr/bin/mtr-packet = cap_net_raw+ep
/usr/bin/gnome-keyring-daemon = cap_ipc_lock+ep
diego
attachment.htm (3.68 KB)