Chroot-systemanropet ändrar rotkatalogen för anropsprocessen och dess underordnade. Detta innebär att processen och dess barn kommer att se den angivna katalogen som roten till filsystemet. Alla sökvägsnamn kommer att tolkas i förhållande till denna nya rot, istället för själva roten av filsystemet.
Chroot används ofta för att skapa en begränsad miljö för en process eller grupp av processer. Till exempel kan en webbserverprocess chrootas till sin egen katalog, så att den inte kan komma åt några andra filer på servern. Detta kan bidra till att förbättra säkerheten genom att förhindra att webbservern äventyras av en illvillig användare.
Chroot kan också användas för att skapa en sandlåda för opålitlig kod. Till exempel kan en användare vilja köra ett program som laddats ner från internet i en chrooted miljö för att förhindra att det skadar deras system.
För att använda chroot måste processen ha CAP_SYS_CHROOT-kapaciteten. Denna funktion ges normalt till processer som körs som root.
Syntaxen för chroot-systemanropet är:
`int chroot(const char *sökväg);`
Där:
sökväg:Sökvägen till den nya rotkatalogen.
Här är ett exempel på hur man använder chroot:
```
#include
#include
#include
int main()
{
// Ändra rotkatalogen till /tmp
if (chroot("/tmp") ==-1) {
perror("chroot");
exit(EXIT_FAILURE);
}
// Skriv ut den aktuella arbetskatalogen
char cwd[1024];
if (getcwd(cwd, sizeof(cwd)) ==NULL) {
perror("getcwd");
exit(EXIT_FAILURE);
}
printf("Aktuell arbetskatalog:%s\n", cwd);
returnera EXIT_SUCCESS;
}
```
När detta program körs kommer det att skriva ut följande utdata:
```
Aktuell arbetskatalog:/tmp
```
Detta visar att den aktuella arbetskatalogen har ändrats till /tmp.