Capabilities zijn verfijnde rechten waarmee je een programma specifieke root-bevoegdheden kunt geven zonder het volledige root-account. In plaats van "alles of niets" kun je precies instellen wat een proces mag.
Traditioneel zijn er maar twee niveaus: root (alles) en niet-root (beperkt). Een webserver die op poort 80 wil luisteren heeft normaal root nodig — maar heeft verder geen verhoogde rechten nodig. Met capabilities geef je alleen CAP_NET_BIND_SERVICE mee.
| Capability | Geeft recht op |
|---|---|
CAP_NET_BIND_SERVICE | Binden aan poorten onder 1024 |
CAP_NET_RAW | Ruwe netwerksockets (ping, tcpdump) |
CAP_SYS_ADMIN | Breed scala aan beheertaken |
CAP_CHOWN | Bestandseigenaarschap wijzigen |
CAP_KILL | Signalen sturen naar processen van andere gebruikers |
# ping zonder root laten werken
setcap cap_net_raw+ep /usr/bin/ping
# capabilities van een bestand tonen
getcap /usr/bin/ping
Docker en andere container-runtimes gebruiken capabilities om de rechten van containers te beperken. Standaard worden gevaarlijke capabilities zoals CAP_SYS_ADMIN verwijderd.