Ero sivun ”Chroot” versioiden välillä
p (suoraan voi käyttää -t prociakin) |
LP (keskustelu | muokkaukset) (chroot-vankila: vaatii hieman enemmän) |
||
Rivi 1: | Rivi 1: | ||
[[Komentorivi]]komennolla chroot voi käynnistää ohjelmia siten, että ne | [[Komentorivi]]komennolla chroot voi käynnistää ohjelmia siten, että ne näkevät jonkun nykyisen tiedostojärjestelmän alihakemistoa [[juurihakemisto]]kseen. | ||
Jotta ohjelmat toimisivat uudella juurihakemistossa, siinä on 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-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. | |||
Esimerkiksi polun <tt>/mnt/distro</tt> muuttaminen juureksi ja [[bash]]-shellin käynnistäminen siinä onnistuu komennolla | Esimerkiksi polun <tt>/mnt/distro</tt> muuttaminen juureksi ja [[bash]]-shellin käynnistäminen siinä onnistuu komennolla | ||
chroot /mnt/distro /bin/bash | 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/- ja /sys-[[Linuxin hakemistorakenne|hakemistot]] myös chrootissa olevan jakelun juurihakemistoon ongelmien välttämiseksi: | 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: | ||
Rivi 10: | Rivi 20: | ||
mount -o bind /sys /mnt/distro/sys | mount -o bind /sys /mnt/distro/sys | ||
Chroot-tilasta palataan normaalitilaan | Chroot-tilasta palataan normaalitilaan poistumalla chrootilla käynnistetystä ohjelmasta: | ||
exit | exit | ||
Versio 19. marraskuuta 2009 kello 13.31
Komentorivikomennolla chroot voi käynnistää ohjelmia siten, että ne näkevät jonkun nykyisen tiedostojärjestelmän alihakemistoa juurihakemistokseen.
Jotta ohjelmat toimisivat uudella juurihakemistossa, siinä on 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-shellin 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/- ja /sys-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
Chroot-tilasta palataan normaalitilaan poistumalla chrootilla käynnistetystä ohjelmasta:
exit