Linux File Capabilities

Da Andreabont's Wiki.

Su Linux le capabilities sono una estensione dei permessi file dedicata agli eseguibili. Un eseguibile può eseguire determinate azioni solo se lanciato come root o se è di proprietà di root e dispone del flag setuid nei permessi classici, questa soluzione è però pericolosa, perché fornisce all'eseguibile tutti i permessi di root. Le capabilities permettono di fornire all'eseguibile i singoli permessi necessari per permettergli di lavorare, senza eseguirlo come root.

Lista delle capabilities

Questa lista non è esaustiva, ma contiene solo le capabilities più importanti.

Capabilities Descrizione
CAP_CHOWN Permette cambio utente e gruppo di un file
CAP_DAC_OVERRIDE Bypassa permessi classici (lettura, scrittura ed esecuzione)
CAP_KILL Permette l'invio dei segnali
CAP_NET_ADMIN Permette l'amministrazione di rete
CAP_NET_BIND_SERVICE Permette il bind di un socket per porte < 1024
CAP_NET_RAW Permette l'utilizzo di socket RAW
CAP_SETUID Permette il cambio del user id del processo
CAP_SETGID Permette il cambio del group id del processo
CAP_SYS_ADMIN Permette di eseguire una serie di azioni di amministrazione del sistema
CAP_SYS_BOOT Permette il reboot
CAP_SYS_CHROOT Permette chroot
CAP_SYS_MODULE Permette la gestione dei moduli kernel
CAP_SYS_NICE Permette di cambiare il valore nice del processo

Scrivere le capabilities su un eseguibile

setcap cap_setgid,cap_setuid,cap_net_bind_service,cap_sys_chroot+ep eseguibile_di_prova

Leggere le capabilities di un eseguibile

$> getcap eseguibile_di_prova
eseguibile_di_prova = cap_setgid,cap_setuid,cap_net_bind_service,cap_sys_chroot+ep