Capability

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.

Waarom capabilities?

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.

Veelgebruikte capabilities

CapabilityGeeft recht op
CAP_NET_BIND_SERVICEBinden aan poorten onder 1024
CAP_NET_RAWRuwe netwerksockets (ping, tcpdump)
CAP_SYS_ADMINBreed scala aan beheertaken
CAP_CHOWNBestandseigenaarschap wijzigen
CAP_KILLSignalen sturen naar processen van andere gebruikers

Instellen op een bestand

# ping zonder root laten werken
setcap cap_net_raw+ep /usr/bin/ping

# capabilities van een bestand tonen
getcap /usr/bin/ping

Capabilities in containers

Docker en andere container-runtimes gebruiken capabilities om de rechten van containers te beperken. Standaard worden gevaarlijke capabilities zoals CAP_SYS_ADMIN verwijderd.

Zie ook

  • sudo — traditionele manier om root-rechten te geven
  • selinux — aanvullende beveiligingslaag
  • apparmor — profielgebaseerde beveiliging
  • container — capabilities in containerbeveiliging
linuxbeveiliging