processkapabiliteter

Från Wiki.linux.se
Version från den 30 januari 2025 kl. 10.45 av Admin (diskussion | bidrag)
Hoppa till navigering Hoppa till sök

Vad är processkapabiliteter i Linux?

Processkapabiliteter är en mekanism i Linux som gör det möjligt att ge en process specifika privilegier utan att behöva köra den som **root**. Istället för att en process har alla rättigheter som användaren **root**, kan den ges en begränsad uppsättning privilegier som behövs för dess funktion.

Varför finns processkapabiliteter?

Traditionellt har systemadministratörer behövt ge program **setuid root**, vilket innebär att programmet körs med alla rättigheter som root-användaren. Detta innebär dock en säkerhetsrisk om ett program utnyttjas av en angripare. Kapabiliteter gör det möjligt att bryta ner **root**-rättigheter i separata delar så att en process bara får de rättigheter den behöver.

Hur fungerar processkapabiliteter?

Varje process har tre kapabilitetsuppsättningar:

  1. Permitted (Tillåtna) – Anger vilka kapabiliteter processen har rätt att använda.
  2. Effective (Effektiva) – Anger vilka kapabiliteter som faktiskt är aktiva vid exekvering.
  3. Inheritable (Arvbara) – Anger vilka kapabiliteter som kan ärvas av barnprocesser vid `exec()`.

Utöver dessa finns även:

  • Bounding set (Begränsningsuppsättning): Bestämmer den maximala kapabiliteten som en process och dess barn kan få.
  • Ambient set (Omgivande uppsättning): Kapabiliteter som kan ärvas vid exekvering av nya program.

Exempel på kapabiliteter

Linux har en lista av kapabiliteter som kan tilldelas processer. Här är några vanliga:

Vanliga kapabiliteter
Kapabilitet Beskrivning
CAP_NET_ADMIN Tillåter nätverkskonfiguration.
CAP_SYS_ADMIN Ger många administrativa rättigheter.
CAP_CHOWN Tillåter ändring av filägare.
CAP_SETUID Tillåter byte av användar-ID (UID).
CAP_KILL Tillåter att skicka signaler till andra processer.
CAP_DAC_OVERRIDE Överstyr standard filåtkomstkontroller.

Den fullständiga listan finns i **man capabilities(7)**.

Hur används kapabiliteter?

Visa kapabiliteter för en process

getcap /bin/ping Exempelutdata: /bin/ping = cap_net_raw+ep Detta betyder att `ping` har `CAP_NET_RAW`, vilket tillåter den att skicka råa nätverkspaket.

Sätta kapabiliteter på en fil

sudo setcap cap_net_admin+ep /usr/bin/example Detta ger `example` rättigheten `CAP_NET_ADMIN`.

Ta bort alla kapabiliteter från en fil

sudo setcap -r /usr/bin/example

Köra ett program med specifika kapabiliteter

capsh --caps="cap_net_admin+ep" -- -c "/bin/bash" Startar ett nytt skal med `CAP_NET_ADMIN`.

Fördelar med processkapabiliteter

  • Ökad säkerhet: Minskar behovet av att köra program som **root**.
  • Finjusterad åtkomstkontroll: Ger program exakt de rättigheter de behöver.
  • Mindre attackyta: Om en process komprometteras har den inte alla root-rättigheter.

Sammanfattningsvis är **processkapabiliteter ett kraftfullt säkerhetsverktyg i Linux**, och de används ofta i moderna system för att begränsa privilegier och förbättra säkerheten.


Sidslut


Det här är en AI generad manualsida för att förklara en datatekisk term. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp som har sponsrat Linux.se med webbhotell.