Chroot

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 2. december 2021; checks kræver 2 redigeringer .

chroot  er en operation til at ændre rodbiblioteket i Unix-lignende operativsystemer . Et program, der startes med en ændret rodmappe, vil kun have adgang til filerne i den mappe. Derfor, hvis du har brug for at give programmet adgang til andre mapper eller filsystemer (for eksempel / proc), skal du forudmontere de nødvendige mapper eller enheder i målbiblioteket.

Udtrykket chroot kan referere enten til konceptet med rodmappeændringer eller til chroot(2) systemkaldet eller til chroot(8) programmet , som det normalt fremgår af konteksten.

Ændring af rodmappen udføres med chroot(2) systemkaldet . Ændring af rodbiblioteket påvirker kun den aktuelle proces (det vil sige den proces, der fik chroot(2) -systemet til at kalde ) og alle dens efterkommere. Hvis du vil køre et eller andet program med en ændret rodmappe, men dette program giver ikke mulighed for at udføre et kald til chroot(2) , skal du bruge programmet chroot(8) . Dette program tager som parametre en ny rodmappe og stien til programmet. Den får først en chroot(2) til at kalde sig selv for at ændre sin egen rodmappe til den angivne, og kører derefter programmet på den angivne sti. Da det ændrede rodbibliotek nedarves af de underordnede processer, startes programmet med det ændrede rodbibliotek.

Et program, hvis rod er blevet flyttet til en anden mappe, kan ikke få adgang til filer uden for denne mappe. Dette giver en bekvem måde at " sandbox " teste, upålidelige eller ethvert andet potentielt skadeligt program. Dette er også en nem måde at bruge " fængsel "-mekanismen på. Dokumentationen advarer dog mod sådan brug [1] . Men oftest bruges chroot til at bygge distributioner eller individuelle programmer i et "rent" miljø, som det var. Se også bootstrapping .

I praksis er det svært at chroot programmer, der forventer at finde ledig diskplads ved opstart, konfigurationsfiler , enhedsfiler og dynamiske biblioteker på bestemte steder. For at tillade programmer at køre inde i en chroot-mappe, er det nødvendigt at give dem et minimalt sæt af sådanne filer, fortrinsvis nøje udvalgt for at forhindre utilsigtet adgang til systemet udefra (f.eks. via enhedsfiler eller FIFO'er ).

Programmer har lov til at åbne filbeskrivelser (for filer, pipelines og netværksforbindelser) i en chroot, hvilket kan gøre det lettere at fængsle ved at gøre det unødvendigt at gemme arbejdsfiler i en chroot-mappe. Det kan også bruges som et rudimentært kapacitetssystem , hvor et program eksplicit gives adgang til ressourcer uden for chroot baseret på de deskriptorer, der er indeholdt i.

Brug

Ulemper

Kun superbrugeren (roden) kan udføre chroot(2) systemkaldet . Dette er for at forhindre et angreb fra en bruger ved at placere et setuid -program i et specielt fremstillet chroot-fængsel (for eksempel med en falsk /etc/passwd-fil ), hvilket resulterer i, at han får privilegie-eskalering.

I sig selv er chroot-mekanismen ikke helt sikker. Hvis et program, der kører i en chroot, har root-rettigheder, kan det udføre en anden chroot for at komme ud. Dette virker, fordi nogle Unix-kerner ikke tillader korrekt indlejring af chroot-kontekster.

De fleste Unix-systemer er ikke helt filsystemorienterede og efterlader potentielt destruktiv funktionalitet såsom netværk og processtyring tilgængelig via en systemopkaldsgrænseflade til et program i chroot.

Chroot-mekanismen ved ikke selv, hvordan man håndhæver ressourcebegrænsninger såsom I/O-båndbredde, diskplads eller CPU-tid.

Se også

Links

Noter

  1. chroot(2) - Linux manual side . Hentet 15. juni 2017. Arkiveret fra originalen 25. juni 2017.