Chroot: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Aerik (talk | contribs)
No edit summary
Aerik (talk | contribs)
 
(30 intermediate revisions by the same user not shown)
Line 1: Line 1:
Ardo Erik A21 2015


=Sissejuhatus=
Chroot on käsk millega on võimalik muuta juurkausta. Juurkaust on kõikide süsteemis paiknevate failide kõige esimene ehk ülemine kaust millest kõrgemale enam minna ei saa. Vaikimisi on juurkaustaks "/" ehk kaldkriips.Chroot käsku kasutatakse isoleeritud ja turvalise keskkonna loomiseks, mis on kogu muust süsteemist eraldatud. Seal keskkonnas käivitatud protsessid töötavad ainult sellele määratud asukohas ning nad ei pääse ülejäänud süsteemile ligi. Chroot'i poolt eraldatud keskkonda kutsutakse "''chroot jail''"[http://www.freebsd.org/cgi/man.cgi?query=chroot&sektion=2]
Chroot käsku kasutatakse eelkõige testimiseks aga ka turvalisuse pärast. Tuleb meeles pidada, et kuigi selline isoleeritud keskkond on üldiselt turvaline kuna ta on muust süsteemist täiesti eraldatud, on siiski õigete tingimuste kokkulangemisel, harvadel juhtudel, sealt võimalik ka välja saada.


=Sissejuhatus=
Chroot on käsk millega on võimalik muuta juurkausta. Juurkaust on kõikide süsteemis paiknevate failide kõige esimene ehk ülemine kaust millest kõrgemale enam minna ei saa. Vaikimisi on juurkaustaks "/" ehk kaldkriips.Chroot käsku kasutatakse isoleeritud ja turvalise keskkonna loomiseks, mis on kogu muust süsteemist eraldatud. Seal keskkonnas käivitatud protsessid töötavad ainult sellele määratud asukohas ning nad ei päääse ülejäänud süsteemile ligi. Chroot'i poolt eraldatud keskkonda kutsutakse "''chroot jail''"[http://www.freebsd.org/cgi/man.cgi?query=chroot&sektion=2]


Chroot käsku kasutatakse eelkõige turvalisuse pärast kui tahetakse, midagi testida või potentsiaalselt ohtliku programmi käivitada. Tuleb meeles pidada, et kuigi selline isoleeritud keskkond on üldiselt turvaline on siiski õigete tingimuste kokkulangemisel, harvadel juhtudel, sealt võimalik ka välja saada.


=Keskkonna loomine=
=Keskkonna loomine=
Kõigepealt tuleb üle minna root kasutajaks
'''NB!''' Esimene chroot funktsioon loodi seitsmekümnendate lõpul seega peaks see tänapäeval töötama kõigis UNIX süsteemides.
 
Kõigepealt tuleb üle minna juur kasutajaks.
<pre>sudo -i</pre>
<pre>sudo -i</pre>


Seejärel tuleks installid pakid nimega "''schroot''" ja "''debootstrap''"
Seejärel tuleks installid pakid nimega "''schroot''" ja "''debootstrap''" Need on vajalikud, et chroot õigesti töötaks.
<pre>apt-get install schroot debootstrap</pre>
<pre>apt-get install schroot debootstrap</pre>
Siis vali endale uus juurkaust, mida chroot kasutama hakkab. Antud näites luuakse test kaust.
Siis vali endale uus juurkaust, mida chroot kasutama hakkab. Antud näites luuakse "test" kaust.
<pre>mkdir /test</pre>
<pre>mkdir /test</pre>
Nüüd peab scroot konfiguratsiooni muutma.   
Nüüd peab scroot konfiguratsiooni muutma.   
<pre>nano /etc/schroot/schroot.conf</pre>
<pre>nano /etc/schroot/schroot.conf</pre>


Konfiguratsioonis tuleb kirjeldada, kuidas chroot keskkond hakkab välja nägema. Mina olen valinud installimiseks Lucid Lynx (Ubuntu versioon 10.04). Kindlasti kontrolli, et ''location'' rida viitakse sinu valitud uue juurkausta asukohale.
Konfiguratsioonis tuleb kirjeldada, kuidas chroot keskkond hakkab välja nägema. Mina olen valinud installimiseks Lucid Lynx (Ubuntu versioon 10.04). Kindlasti kontrolli, et ''location'' rida viitaks sinu valitud uue juurkausta asukohale.
<pre>[lucid]
<pre>[lucid]
description=Ubuntu Lucid
description=Ubuntu Lucid
Line 27: Line 29:
root-groups=root</pre>
root-groups=root</pre>


Et valitud keskkonna installi lõpuni viia kopeeri järgnev rida.  
Nüüd on vaja eelnevalt kirjeldatud informatsioon ära installida. Pane tähele et amd64 on konkreetse süsteemi arhitektuur, lucid on konfiguratsioonis kirjeldatud keskkond ja /test/ on uue juurkausta täisteekond.
<pre>debootstrap --variant=buildd --arch amd64 lucid /test/ http://mirror.cc.columbia.edu/pub/linux/ubuntu/archive/</pre>
<pre>debootstrap --variant=buildd --arch amd64 lucid /test/ http://mirror.cc.columbia.edu/pub/linux/ubuntu/archive/</pre>


Nüüd on meile kõik ettevalmistused tehtud ja saab chroot käsku kasutama hakata
<pre>chroot /test/</pre>


=Lingid=
Käsu edukalt sisestades tundub, et midagi pole muutnud aga tegelikult oled valinud uue juurkausta. Selle kontrollimiseks tee järgnevat:
<pre>cd /
ls -di</pre>
 
Saades tagasi mistahes numbri peale 2 on kõik läinud plaanipäraselt.
 
Sealt väljumiseks ja endise juurkausta taastamiseks kirjuta:
<pre>exit</pre>
Pakkide uuendamine ja installimine toimub chroot asukohas sarnaselt juurkaustale.
[https://www.digitalocean.com/community/tutorials/how-to-configure-chroot-environments-for-testing-on-an-ubuntu-12-04-vps][https://help.ubuntu.com/community/BasicChroot]
 
=Lisaseaded=
Kui chroot algselt paigaldada siis tuleb temaga kaasa minimaalselt funktsioone. Rohkemate võimaluste lisamiseks on vaja paar käsku kirjutada.
 
'''NB!''' Kõik järgnevad käsud tuleb sisestada tavalise juurkasutaja alt!
 
Võib juhtuda, et teises juurkaustas olles ei ole interneti ühendust. Selle parandamiseks peab DNSi tööle saama. DNSi lisamiseks chrootile tuleb kirjutada järgmine käsk:
<pre>cp /etc/resolv.conf /test/etc/resolv.conf</pre>
See kopeerib resolv.conf faili, kus hoitakse internetti minemiseks vajaliku informatsiooni meie teise juurkausta.
 
Kuna me tahame kasutada käske nagu "kill", "top" ning teisi haldamiseks vajalike käske siis on vaja külgehaakida /proc failisüsteem.
<pre>mount -o bind /proc /test/proc</pre>
 
Uuel juurkasutajal ei ole meie algseid reposi. Nende lisamisek tee järgnevat:
<pre>cat /etc/apt/sources.list >> /test/etc/apt/sources.list</pre>
[https://help.ubuntu.com/community/BasicChroot 3]
 
=MMap error=
Võib juhtuda, et chroot keskkonnas toimetades ja pakke installides tekib MMAP error:
<pre>Reading package lists... Error!
E: Dynamic MMap ran out of room.</pre>
Siis tuleb avada konkreetne tekstifail
<pre>nano /etc/apt/apt.conf.d/70debconf</pre>
Lisada faili selline rida
<pre>APT::Cache-Limit "100000000";</pre>
ning lõpuks
<pre>sudo apt-get clean
sudo apt-get update --fix-missing</pre>
[http://askubuntu.com/questions/219523/dynamic-mmap-ran-out-of-room-when-trying-to-sudo-apt-get-anything 4]
 
=Kokkuvõte=
Juurkausta vahetamine on väärtuslik oskus, mida hea UNIX'i kasutaja võiks osata. Selle parim omadus on süsteemi testimine (näiteks pakkide sõltuvustega manipuleerimine) ilma seda katki tegemata.
 
=Autor=
Ard Erik
 
rühm: A21
 
30.11.2015
 
=Allikad=
1 http://www.freebsd.org/cgi/man.cgi?query=chroot&sektion=2
1 http://www.freebsd.org/cgi/man.cgi?query=chroot&sektion=2
2 https://www.digitalocean.com/community/tutorials/how-to-configure-chroot-environments-for-testing-on-an-ubuntu-12-04-vps
3 https://help.ubuntu.com/community/BasicChroot
4 http://askubuntu.com/questions/219523/dynamic-mmap-ran-out-of-room-when-trying-to-sudo-apt-get-anything
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]

Latest revision as of 17:48, 27 August 2019

Sissejuhatus

Chroot on käsk millega on võimalik muuta juurkausta. Juurkaust on kõikide süsteemis paiknevate failide kõige esimene ehk ülemine kaust millest kõrgemale enam minna ei saa. Vaikimisi on juurkaustaks "/" ehk kaldkriips.Chroot käsku kasutatakse isoleeritud ja turvalise keskkonna loomiseks, mis on kogu muust süsteemist eraldatud. Seal keskkonnas käivitatud protsessid töötavad ainult sellele määratud asukohas ning nad ei pääse ülejäänud süsteemile ligi. Chroot'i poolt eraldatud keskkonda kutsutakse "chroot jail"[1]

Chroot käsku kasutatakse eelkõige testimiseks aga ka turvalisuse pärast. Tuleb meeles pidada, et kuigi selline isoleeritud keskkond on üldiselt turvaline kuna ta on muust süsteemist täiesti eraldatud, on siiski õigete tingimuste kokkulangemisel, harvadel juhtudel, sealt võimalik ka välja saada.


Keskkonna loomine

NB! Esimene chroot funktsioon loodi seitsmekümnendate lõpul seega peaks see tänapäeval töötama kõigis UNIX süsteemides.

Kõigepealt tuleb üle minna juur kasutajaks.

sudo -i

Seejärel tuleks installid pakid nimega "schroot" ja "debootstrap" Need on vajalikud, et chroot õigesti töötaks.

apt-get install schroot debootstrap

Siis vali endale uus juurkaust, mida chroot kasutama hakkab. Antud näites luuakse "test" kaust.

mkdir /test

Nüüd peab scroot konfiguratsiooni muutma.

nano /etc/schroot/schroot.conf

Konfiguratsioonis tuleb kirjeldada, kuidas chroot keskkond hakkab välja nägema. Mina olen valinud installimiseks Lucid Lynx (Ubuntu versioon 10.04). Kindlasti kontrolli, et location rida viitaks sinu valitud uue juurkausta asukohale.

[lucid]
description=Ubuntu Lucid
location=/test
priority=3
users=demo
groups=sbuild
root-groups=root

Nüüd on vaja eelnevalt kirjeldatud informatsioon ära installida. Pane tähele et amd64 on konkreetse süsteemi arhitektuur, lucid on konfiguratsioonis kirjeldatud keskkond ja /test/ on uue juurkausta täisteekond.

debootstrap --variant=buildd --arch amd64 lucid /test/ http://mirror.cc.columbia.edu/pub/linux/ubuntu/archive/

Nüüd on meile kõik ettevalmistused tehtud ja saab chroot käsku kasutama hakata

chroot /test/

Käsu edukalt sisestades tundub, et midagi pole muutnud aga tegelikult oled valinud uue juurkausta. Selle kontrollimiseks tee järgnevat:

cd /
ls -di

Saades tagasi mistahes numbri peale 2 on kõik läinud plaanipäraselt.

Sealt väljumiseks ja endise juurkausta taastamiseks kirjuta:

exit

Pakkide uuendamine ja installimine toimub chroot asukohas sarnaselt juurkaustale. [2][3]

Lisaseaded

Kui chroot algselt paigaldada siis tuleb temaga kaasa minimaalselt funktsioone. Rohkemate võimaluste lisamiseks on vaja paar käsku kirjutada.

NB! Kõik järgnevad käsud tuleb sisestada tavalise juurkasutaja alt!

Võib juhtuda, et teises juurkaustas olles ei ole interneti ühendust. Selle parandamiseks peab DNSi tööle saama. DNSi lisamiseks chrootile tuleb kirjutada järgmine käsk:

cp /etc/resolv.conf /test/etc/resolv.conf

See kopeerib resolv.conf faili, kus hoitakse internetti minemiseks vajaliku informatsiooni meie teise juurkausta.

Kuna me tahame kasutada käske nagu "kill", "top" ning teisi haldamiseks vajalike käske siis on vaja külgehaakida /proc failisüsteem.

mount -o bind /proc /test/proc

Uuel juurkasutajal ei ole meie algseid reposi. Nende lisamisek tee järgnevat:

cat /etc/apt/sources.list >> /test/etc/apt/sources.list

3

MMap error

Võib juhtuda, et chroot keskkonnas toimetades ja pakke installides tekib MMAP error:

Reading package lists... Error!
E: Dynamic MMap ran out of room.

Siis tuleb avada konkreetne tekstifail

nano /etc/apt/apt.conf.d/70debconf

Lisada faili selline rida

APT::Cache-Limit "100000000";

ning lõpuks

sudo apt-get clean
sudo apt-get update --fix-missing

4

Kokkuvõte

Juurkausta vahetamine on väärtuslik oskus, mida hea UNIX'i kasutaja võiks osata. Selle parim omadus on süsteemi testimine (näiteks pakkide sõltuvustega manipuleerimine) ilma seda katki tegemata.

Autor

Ard Erik

rühm: A21

30.11.2015

Allikad

1 http://www.freebsd.org/cgi/man.cgi?query=chroot&sektion=2

2 https://www.digitalocean.com/community/tutorials/how-to-configure-chroot-environments-for-testing-on-an-ubuntu-12-04-vps

3 https://help.ubuntu.com/community/BasicChroot

4 http://askubuntu.com/questions/219523/dynamic-mmap-ran-out-of-room-when-trying-to-sudo-apt-get-anything