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)