Linux Capabilities

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... :wink:

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

Interessante ma complesso.
trovo: https://linux.die.net/man/3/cap_get_file

attachment.htm (2.2 KB)

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)