processkapabiliteter: Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
(Skapade sidan med '== 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**,...')
(Ingen skillnad)

Versionen från 30 januari 2025 kl. 10.44

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.