Ero sivun ”Chroot” versioiden välillä

Linux.fista
Siirry navigaatioon Siirry hakuun
p (wikilinkitystä vaihteeksi)
(otsikko pienellä)
 
(10 välissä olevaa versiota 7 käyttäjän tekeminä ei näytetä)
Rivi 1: Rivi 1:
[[Komentorivi]]komennolla chroot voi käynnistää ohjelmia siten, että ne luulevat jonkun nykyisen tiedostojärjestelmän alihakemistoa [[juurihakemisto]]kseen.
{{DISPLAYTITLE:{{lcfirst:{{PAGENAME}}}}}}
'''chroot'''-[[Komentorivi|komennolla]] voi käynnistää ohjelmia siten, että ne näkevät jonkun nykyisen tiedostojärjestelmän alihakemistoa [[juurihakemisto]]kseen.


Esimerkiksi polun <tt>/mnt/distro</tt> muuttaminen juureksi ja [[bash]]-shellin käynnistäminen siinä onnistuu komennolla
Jotta ohjelmat toimisivat uudessa juurihakemistossa, on siinä oltava ainakin minimaalinen järjestelmä, sisältäen tarvittavat ohjelmat, niiden tarvitsemat [[kirjasto]]t ja muut aputiedostot sekä joitakin keskeisiä tiedostoja, kuten yleensä (muunnettu) /etc/[[passwd-tiedosto|passwd]]. Jos komentoa käytetään turvallisuuden parantamiseksi, hakemistorakenteen sisällön pitää kuitenkin olla mahdollisimman vähäinen. Ylimääräisiä ohjelmakirjastoja voi välttää [[kääntäminen|kääntämällä]] ohjelmia niin, että niihin sisältyy tarvittavat kirjastot tai valitsemalla ohjelmia, jotka eivät tarvitse kuin muutamia kirjastoja.
chroot /mnt/distro /bin/bash


Jos ajat kokonaista jakelua chrootin alaisuudessa, kannattaa [[Mount|liittää]] /[[proc]]-, [[laitetiedostot|/dev-]], /dev/pts/- ja /sys-[[Linuxin hakemistorakenne|hakemistot]] myös chrootissa olevan jakelun juurihakemistoon ongelmien välttämiseksi:
Esimerkiksi polun <tt>/mnt/distro</tt> muuttaminen juureksi ja [[bash]]-komentotulkin käynnistäminen siinä onnistuu komennolla
  mount -o bind /proc /mnt/distro/proc
chroot /mnt/distro /bin/[[bash]]
 
Hieman pidemmällä kaavalla, jos tarkoitus on ajaa tietty ohjelma rajoitetussa ympäristössä:
[[cd]] /mnt/jail
chroot .
cd .
[[su]] - -c '/bin/[[dash]]' [[Käyttäjä|tunnus]]
 
Tällä jälkimmäisellä tavalla varmistetaan, ettei ohjelmalla (tässä tapauksessa dash) ole avoimia tiedostoja uuden hakemistorakenteen ulkopuolella, kuten [[työhakemisto]] (josta löytyy .. ja sitä kautta koko tavallinen hakemistorakenne). Lisäksi ohjelma ajetaan toisena käyttäjänä, koska pääkäyttäjä voi helposti poistua chroot-vankilasta esimerkiksi luomalla [[Laitetiedostot|laitetiedostoja]] tai uuden vankilan alihakemistoon.
 
Jos ajat kokonaista jakelua chrootin alaisuudessa, kannattaa [[Mount|liittää]] /[[proc]]-, [[laitetiedostot|/dev-]], /dev/pts/-, /sys- ja /run-[[Linuxin hakemistorakenne|hakemistot]] myös chrootissa olevan jakelun juurihakemistoon ongelmien välttämiseksi:
  mount -t proc proc /mnt/distro/proc
  mount -o bind /dev /mnt/distro/dev
  mount -o bind /dev /mnt/distro/dev
  mount -o bind /dev/pts /mnt/distro/dev/pts
  mount -o bind /dev/pts /mnt/distro/dev/pts
  mount -o bind /sys /mnt/distro/sys
  mount -o bind /sys /mnt/distro/sys
mount -o bind /run /mnt/distro/run


Chroot-tilasta palataan normaalitilaan komennolla
Chroot-tilasta palataan normaalitilaan poistumalla chrootilla käynnistetystä ohjelmasta:
  exit
  exit


Rivi 19: Rivi 31:
[[Luokka:Coreutils]]
[[Luokka:Coreutils]]
[[Luokka:Komentorivin perustyökalut]]
[[Luokka:Komentorivin perustyökalut]]
[[pl:Chroot]]

Nykyinen versio 31. elokuuta 2023 kello 15.00

chroot-komennolla voi käynnistää ohjelmia siten, että ne näkevät jonkun nykyisen tiedostojärjestelmän alihakemistoa juurihakemistokseen.

Jotta ohjelmat toimisivat uudessa juurihakemistossa, on siinä oltava ainakin minimaalinen järjestelmä, sisältäen tarvittavat ohjelmat, niiden tarvitsemat kirjastot ja muut aputiedostot sekä joitakin keskeisiä tiedostoja, kuten yleensä (muunnettu) /etc/passwd. Jos komentoa käytetään turvallisuuden parantamiseksi, hakemistorakenteen sisällön pitää kuitenkin olla mahdollisimman vähäinen. Ylimääräisiä ohjelmakirjastoja voi välttää kääntämällä ohjelmia niin, että niihin sisältyy tarvittavat kirjastot tai valitsemalla ohjelmia, jotka eivät tarvitse kuin muutamia kirjastoja.

Esimerkiksi polun /mnt/distro muuttaminen juureksi ja bash-komentotulkin käynnistäminen siinä onnistuu komennolla

chroot /mnt/distro /bin/bash

Hieman pidemmällä kaavalla, jos tarkoitus on ajaa tietty ohjelma rajoitetussa ympäristössä:

cd /mnt/jail
chroot .
cd .
su - -c '/bin/dash' tunnus

Tällä jälkimmäisellä tavalla varmistetaan, ettei ohjelmalla (tässä tapauksessa dash) ole avoimia tiedostoja uuden hakemistorakenteen ulkopuolella, kuten työhakemisto (josta löytyy .. ja sitä kautta koko tavallinen hakemistorakenne). Lisäksi ohjelma ajetaan toisena käyttäjänä, koska pääkäyttäjä voi helposti poistua chroot-vankilasta esimerkiksi luomalla laitetiedostoja tai uuden vankilan alihakemistoon.

Jos ajat kokonaista jakelua chrootin alaisuudessa, kannattaa liittää /proc-, /dev-, /dev/pts/-, /sys- ja /run-hakemistot myös chrootissa olevan jakelun juurihakemistoon ongelmien välttämiseksi:

mount -t proc proc /mnt/distro/proc
mount -o bind /dev /mnt/distro/dev
mount -o bind /dev/pts /mnt/distro/dev/pts
mount -o bind /sys /mnt/distro/sys
mount -o bind /run /mnt/distro/run

Chroot-tilasta palataan normaalitilaan poistumalla chrootilla käynnistetystä ohjelmasta:

exit

Katso myös[muokkaa]