Chroot

Från Wikipedia
Hoppa till: navigering, sök

Chroot är en operation inom Unix-system som begränsar åtkomst till filer i systemet så att vissa processer bara kan komma åt en del av filträdet. Uttrycket kommer av engelskans "change root" och betyder att man ändrar lägsta nivån (roten) i filträdet för den vy vissa processer och eventuellt vissa användare har tillgång till.

Konceptet används främst för att hindra användare och utsatt serverprogramvara från att påverka systemet utanför den katalogstruktur de behöver, till exempel hemkatalogen ifråga om användare som hyr www-utrymme, eller filarkivet ifråga om användare av anonym ftp. Genom detta försvårar man dataintrång, genom att man i det begränsade filträdet erbjuder bara en minimal uppsättning programvara och inte inkluderar känslig information.

Systemanropet chroot ändrar roten i filträdet i den begränsade processens och alla barnprocessers vy, så att de då de hänvisar till rotkatalogen "/" ser den modifierade roten, till exempel vad som för icke-begränsade användare är "/home/kalle". I Unix ligger alla filer inom en enhetlig hierarki, så filer utanför denna är oåtkomliga för normala användare.

Svagheter[redigera | redigera wikitext]

Det finns flera välkända sätt att ta sig ur en chroot eller att påverka miljön utanför den, varför också övriga försiktighetsåtgärder måste vidtas. Den viktigaste är att användaren root kan ansluta godtycklig hårdvara var han vill också i det begränsade filträdet, och därmed komma åt godtyckliga filer. I de fall filer i det begränsade filträdet används oförsiktigt av icke-begränsade användare eller systemprogram kan också vanliga användare påverka miljön utanför. Vanliga användare kan också oberoende av begränsningar vad gäller vilka filer de kommer åt på andra sätt ha tillgång till den normala informationen om andra processer, vilken kan betraktas som känslig information.

Annan användning[redigera | redigera wikitext]

chroot kan också användas utan tanke på säkerhetsaspekter, då man behöver tillgång till ett alternativt filträd.

Programvara skall ofta köras i en annan miljö än den utvecklaren använder på sin egen maskin. Genom att köra test i ett alternativt filträd kan utvecklaren lätt se att de filer han tror sig behöva räcker till, eller kontrollera att programmet fungerar med alternativa programvaruuppsättningar, i linux-sammanhang till exempel andra distributioner eller andra utgåvor (med samma kärna).

Det alternativa filträdet kan vara vad som efter omstart kommer att vara det huvudsakliga filträdet, till exempel då en ny hårddisk installeras och uppstart i framtiden skall ske från denna. Samma problematik gäller installationsmedia för operativsystem, som är lättare att konstruera om de program som skall ingå kan installeras utan att de ser annat än installationsmediets filstruktur.