Portál AbcLinuxu, 30. dubna 2025 11:02

Jak si chrochtat v chrootu

16.1.2013 22:56 | Přečteno: 1844× | Výběrový blog | poslední úprava: 17.1.2013 10:21

Dnes si krátce povíme něco o chrootu a ukážeme si, jak v něm jednoduše (a nebezpečně) spustit grafickou aplikaci :-)

 

 

O chrootu jste jistě již mnohé slyšeli, ale možná jste s ním stejně jako já neměli žádné zkušenosti a báli se o svůj odladěný systém. Mohu vás ujistit, že se není čeho bát a vše jde až podezřele hladce.

K čemu je chroot vlastně dobrý? Zjednodušeně řečeno tím vytvoříme systém v systému, jakousi matrjošku :-) Někteří to považují za bezpečností prvek (tím může správně nastavený chroot opravdu být), jiní díky němu testují aplikace aniž by si zaneřádili systém a někteří (já) jej používají jen k tomu, aby jim na 64-bitovém systému fungovala 32-bitová aplikace. Proč? V dnešní době 64-bitových aplikací a 32-bitových knihoven?

Když jsem před rokem studoval na střední škole, snažil jsem se v Debianu zprovoznit program Eagle. Pokud se podíváte sem http://packages.debian.org/unstable/electronics/eagle, tak si můžete všimnout paradoxního vývoje - nejstarší verze 5.10 podporuje jak i386, tak AMD64, zato verze 5.12 a 6.3 už podporuje jen i386. Tehdy Eagle určitou dobu fungoval, ale brzy se díky balíčkovacímu systému záhadně odporoučel a odmítal se nainstalovat. Pokud se nepletu, tak v repozitáři byl balík eagle verze 5.12, ale eagle-data jen verze 5.10. Ruční stažení eagle verze 5.10 a uzamknutí pomáhalo, ale brzy začal nějak kolidovat s aktualizací systému a já raději zvolil aktuálnější systém, než funkční Eagle. Verze z cadsoft.de trpěla nějakou chybou a ani po měsíci se nic nezměnilo i přesto, že chyba byla mnoha lidmi nahlášena a řešena na různých fórech. K mojí smůle mi ani jedno z řešení nepomáhalo. Mimochodem, některé aplikace dokážou údajně vzdorovat i 32-bitovým knihovnám a chroot je jediné řešení, jak s nimi pracovat na systému, pro který nejsou určeny.

Uplynul rok a já dostal opět sto chutí překreslit několik schémat z hlavy do Eagle (memory dump mozku by byl někdy opravdu neocenitelný). Ale jak na to? Používám Debian testing x86_64 a Eagle je jen pro i386. Dříve jsem zkoušel vnutit instalaci 32-bitového balíčku na 64-bitový systém, instalovat 32-bitové knihovny, upravoval podle různých fór konfiguraci, ale ani tak nedospěl k funkčnímu výsledku. Rozhodl jsem se, že zvolím jiné řešení a před pár dny mě do očí praštilo to známé-neznámé slovo. Chrocht....totiž chroot :-)

 

Jako vždy jsem se poradil s vyhledávačem Google a k mému překvapení našel několik odlišných a nejednou i protichůdných návodů. Ve většině návodů bylo potřeba upravovat soubor /etc/fstab a protože se tím dá hodně zkazit, hledal jsem dál až jsem našel tento návod http://www.debian-administration.org/articles/566.

Jednoduchý, srozumitelný, ale (jako většina nalezených návodů) poměrně starý. Naštěstí ho to nijak nepoznamenalo a funguje doteď. Připraveni? Jdeme na to!

[Protože jsem ve svém PC zapsán jako "dreit", budu tak zapsán i v návodu - všechny výskyty slova "dreit" přepište svým uživatelským jménem]

 

 

Jako první si nainstalujeme balíčky schroot a debootstrap:

sudo apt-get install schroot debootstrap

Poté upravíme soubor /etc/schroot/schroot.conf, konkrétně jen odkomentujeme vše v sekci [sid] (samozřejmě pokud chceme Debian Sid) a nastavíme správně uživatele, u mě to vypadá takto:

[sid]
description=Debian sid (unstable)
directory=/srv/chroot/sid
users=dreit
groups=users
root-groups=root
aliases=unstable,default

Dále si vytvoříme adresář, který se pro náš chroot bude chovat jako kořenový a je daný konfiguračním souborem výše. Přitom rovnou vytvoříme i domovský adresář uživatele, který bude chroot používat (v mém případě se totiž nevytvořil a chroot proto nešel spustit):

sudo mkdir -p /srv/chroot/sid/home/dreit

Nyní necháme debootstrap vše nainstalovat na první pohled poměrně složitým příkazem:

sudo debootstrap --arch i386 sid /srv/chroot/sid http://debian.mirror.dkm.cz/debian

Přepínač --arch udává architekturu, kterou chcete mít v chrootu a "sid" udává verzi systému (musí existovat na zrcadle). Dále je zde cesta k adresáři, kde chceme chrootovat a nakonec nepovinný parametr - adresa zrcadla. Pokud jej nezadáte, bude debootstrap stahovat z přednastaveného zrcadla (v mém případě opravdu pomalé).

Debootstrap bude chvíli chroupat a po jeho úspěšném ukončení se můžete podívat do adresáře /srv/chroot/sid, kde spatříte kompetní adresářovou strukturu chrootovaného systému. Právě nadešel čas na poslední příkaz, kterým se dostaneme dovnitř. Připraveni? Tady je:

sudo schroot -c sid -p

 

Právě jste si vytvořili systém v systému, který můžete do jisté míry ničit podle svých představ. Pokoušet příkaz rm -rf / vám ale nedoporučuji, mým hlavním cílem bylo jen zprovoznení programu, nikoli jeho zabezpečení před stupidním uživatelem :-D

A když už ten hezký chroot máme, tak jej i nějak využijeme. Můžeme zde napříkad na zkoušku instalovat různé aplikace (Steam, Eagle, webové prohlížeče) a v případě potřeby vše krásným rm -rf /srv/chroot/sid uklidit :-) Já chtěl ale pracovat v Eagle a to pokudmožno v poslední verzi. Rozšířil jsem tedy soubor /etc/apt/sources.list o slůvka non-free a contrib příkazem

echo -e 'deb http://debian.mirror.dkm.cz/debian/ testing main non-free contrib\n' > /etc/apt/sources.list

a příkaz následoval typickým

apt-get update

V případě Eagle 6 bylo nutné stáhnout balíček ze stránky http://packages.debian.org/experimental/i386/eagle/download a nainstalovat jej:

wget http://ftp.cz.debian.org/debian/pool/non-free/e/eagle/eagle_6.3.0-1_i386.deb

dpkg -i eagle*.deb

Dostal jsem typickou hlášku o nesplněných závislostech a opravil je příkazem mým oblíbeným příkazem:

apt-get -f install

 

 

Pokud vše proběhlo dobře, nezbývá než spustit Eagle (pokud ne, můžete zkusit přidat zrcadla). Napíšeme eagle, potvdíme enterem...ouha:

eagle: cannot connect to X server :0

Řešení je naštěstí snadné, stačí spustit jednoduchý příkaz, který udělí vyjímku (nikoli v chrootu, ale v hostitelském systému). Bohužel po restartu jej musíte zadat znovu, ale při občasném použití to jistě nebude moc vadit. Nezapomeňte napsat na konci dvojtečku.

xhost +local:

Nyní už se Eagle bez problému spustí a může si páchat co se mu zachce - je zavřený v chrootu a teoreticky by neměl mít kam utéct. Samozřejmě v praxi je lepší poradit se s někým zkušenějším před ostrým nasazením ;-)

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

pavlix avatar 17.1.2013 00:49 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Jak si chrochtat v chrootu
Odpovědět | Sbalit | Link | Blokovat | Admin
tím může správně nastavený chroot opravdu být
Osobně bych tomu říkal spíš kombinace chrootu s dalšími prvky. A i tak jsou řešení založená na chrootu do jisté míry kritizována za to, že zabezpečnují jednotlivé vlastnosti systému a tudíž je velká šance, že se na něco zapomene. Narozdíl třeba od zabezpečení pomocí různých selinuxů a podobných, kde především řeší, co aplikace vůbec může, ne co explicitně nesmí.

To jen poznámka naokraj.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
Dreit avatar 17.1.2013 09:46 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
Rozbalit Rozbalit vše Re: Jak si chrochtat v chrootu

Bezpečností se nezabývám, snažil jsem se spíš jen poznamenat, že to opravdu jde. Koukal jsem na spouštění SSH daemonů v chrootu aby připojený uživatel nemohl utíkat pryč a to by se svým způsobem za bezpečnostní prvek dalo považovat. Samozřejmě při dostatku času a prostředků se dá zlomit naprosto cokoli ;-)

To mě přivádí na myšlenku, že bych vlastně v chrootu mohl rozjet SSH daemona na vyšším portu (třeba 8022) pro "veřejnost" a ten pustit routerem ven, ale zároveň mít daemon běžící v hostitelském systému na portu 22 jen pro vnitřní síť :-)

Nope
17.1.2013 10:48 MMichal | skóre: 21
Rozbalit Rozbalit vše Re: Jak si chrochtat v chrootu
Problem je, ze pokud nekdo ziska v tom chrootu roota (napr. local exploit), potom se muze probourat vne chroot prostredi do systemu.
Dreit avatar 17.1.2013 10:56 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
Rozbalit Rozbalit vše Re: Jak si chrochtat v chrootu

Tak to nezní moc příjemně, děkuji za osvětlení

Nope
17.1.2013 19:13 Radovan Garabík
Rozbalit Rozbalit vše Re: Jak si chrochtat v chrootu

Tak to nezní moc příjemně, děkuji za osvětlení

Na druhej strane tu zase grsecurity môže pomôcť. Samozrejme, nemusí to byť stopercentné...
pavlix avatar 17.1.2013 12:29 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Jak si chrochtat v chrootu
Koukal jsem na spouštění SSH daemonů v chrootu aby připojený uživatel nemohl utíkat pryč a to by se svým způsobem za bezpečnostní prvek dalo považovat.
To už je ale kombinace dvou prvků. Nejprve se provede chroot a následně se změní uid na obyčejného uživatele a nakonec to celé funguje díky tomu, že obyčejný uživatel nemá možnost provádět některé privilegované operace.

Navíc ten chroot pro SSH má bezpečnostní smysl pouze kvůli špatně nastaveným právům, popřípadě jiným bezpečnostním problémům, které ten systém má. Jenže v chrootu nefunguje nic, co tam nedáš.

Když se chroot zkombinuje s izolací ostatních systémových prostředků, tak se tomu potom říká kontejnerová virtualizace. Stačí si najít OpenVZ, LXC a podobné.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
coder avatar 17.1.2013 11:22 coder | skóre: 4 | blog: lINUKS
Rozbalit Rozbalit vše Re: Jak si chrochtat v chrootu
Odpovědět | Sbalit | Link | Blokovat | Admin
yaourt -S eagle
Targets (1): eagle-6.4.0-2

Funguje, nepada. Na 64bitu s 32bitovyma knihovnama ;)

These kids won't have to remember passwords or obsess about security because these kids will grow up with Windows 10!
Dreit avatar 17.1.2013 12:16 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
Rozbalit Rozbalit vše Re: Jak si chrochtat v chrootu

Včera jsem to probíral s partou linuxáků na IRC a během chvíle se u mě nahromadily screenshoty funkčního Eagle snad na všech možných distribucích :-D Že Eagle nefungoval před rokem samozřejmě neznamená, že nejde teď - chtěl jsem si ale vyzkoušet něco nového a Eagle byla perfektní záminka :-) Navíc teď není problém Eagle rychle uklidit :-D

Nope
coder avatar 17.1.2013 12:48 coder | skóre: 4 | blog: lINUKS
Rozbalit Rozbalit vše Re: Jak si chrochtat v chrootu
:-D

Jinak fakt peknej a citelnej blogpost, klidne to nekdy zopakuj ;-)

Dreit avatar 17.1.2013 15:32 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
Rozbalit Rozbalit vše Re: Jak si chrochtat v chrootu

Doufám, že to nebylo myšleno ironicky :-) Měl jsem v plánu další díl o RaspberryPi, ale nefunkčnost scanneru mě opravdu trápí a mám sto chutí nahradit RaspberryPi původním x86 serverem :-( Ale jestli se k tomu dokopu, tak ten návod dopíšu (včetně skriptů co jsou k tomu potřeba) a na konci se zeptám, jestli někdo neví co by šlo dělat s tím scannerem. Když na skle nic není, tak občas skenuje, jinak popojede do čtvrtiny a tam se zasekne s chybovou hláškou (normálně dojede do čtvrtiny, o kousek se vrátí a tak po čtvrtinách až do konce).

Nope
coder avatar 17.1.2013 16:53 coder | skóre: 4 | blog: lINUKS
Rozbalit Rozbalit vše Re: Jak si chrochtat v chrootu
Myslel jsem to zcela upřímně, fakt se to dobře četlo :-) Problém se scanerem ti nezávidím ale neporadím, nato fakt nejsem odborník.
Dreit avatar 17.1.2013 20:21 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
Rozbalit Rozbalit vše Re: Jak si chrochtat v chrootu

Tak to mě opravdu těší, děkuji :-) Trochu jsem se bál, co z toho vyleze, protože jsem to psal navečer a v půlce jsem se úplně ztratil :-D

Nope
17.1.2013 12:27 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: Jak si chrochtat v chrootu
Odpovědět | Sbalit | Link | Blokovat | Admin
Musím potvrdit, je to skvělá věc - používám pro provozování Lotus Notes.
17.1.2013 16:58 pojidac
Rozbalit Rozbalit vše Re: Jak si chrochtat v chrootu
Odpovědět | Sbalit | Link | Blokovat | Admin
v tomhle se spoleham na SELinux sandbox:
$ sandbox -t sandbox_web_t -H sandbox/home/ -T sandbox/tmp/ -W /usr/bin/startkde -X firefox

jaky vyhoda a zaroven i nevyhoda je to, ze se to pak nedostane ani X bufferu.
Bedňa avatar 18.1.2013 23:17 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Jak si chrochtat v chrootu
Odpovědět | Sbalit | Link | Blokovat | Admin
Len ma udivuje že si nedostal tučňáka, kua prečo DOLI?
KERNEL ULTRAS video channel >>>
Dreit avatar 19.1.2013 11:32 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
Rozbalit Rozbalit vše Re: Jak si chrochtat v chrootu

Myslim, že to ještě nemá tu úroveň, kterou by to muselo mít. Ostatně jsem popsal to, co jsem dělal cca hodinu podle návodu. Jestli se vyvede další díl o RaspberryPi tak, jak mám v plánu, to to bude ještě o tak 20% lepší :-)

Nope
Bedňa avatar 19.1.2013 11:48 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Jak si chrochtat v chrootu
Ja nehodnotím kvalitu blogového zápisku, ale snahu stať sa hackerom. Nikto nemal rank od narodenia, každý si tým musel prejsť.

Mám rád zápisky kde ľudia zdieľajú svoje objavy, len tak ďalej.
KERNEL ULTRAS video channel >>>
Dreit avatar 19.1.2013 12:45 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
Rozbalit Rozbalit vše Re: Jak si chrochtat v chrootu

V tom případě je to pro mě opravdová pocta, děkuji :-)

Nope
vencour avatar 23.1.2013 18:16 vencour | skóre: 56 | blog: Tady je Vencourovo | Praha+západní Čechy
Rozbalit Rozbalit vše Re: Jak si chrochtat v chrootu
Protože jsem se ke čtení tohodle dostal až teď ...
Ty nejhlubší objevy nečekají nutně za příští hvězdou. Jsou uvnitř nás utkány do vláken, která nás spojují, nás všechny.
Dreit avatar 24.1.2013 15:46 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
Rozbalit Rozbalit vše Re: Jak si chrochtat v chrootu

Děkuji mnohokrát :-)

Nope
vencour avatar 24.1.2013 18:06 vencour | skóre: 56 | blog: Tady je Vencourovo | Praha+západní Čechy
Rozbalit Rozbalit vše Re: Jak si chrochtat v chrootu
Nestíham číst vše. Pokud máte dojem, že má něco smysl, piště to do vzkazu adminům ... aneb to by mělo přijít dříve k očím ...
Ty nejhlubší objevy nečekají nutně za příští hvězdou. Jsou uvnitř nás utkány do vláken, která nás spojují, nás všechny.
Dreit avatar 24.1.2013 23:36 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
Rozbalit Rozbalit vše Re: Jak si chrochtat v chrootu

Dobře, jakmile se mi povede něco sepsat a bude to dávat trochu smysl, tak se ozvu :-)

Nope
vencour avatar 25.1.2013 12:30 vencour | skóre: 56 | blog: Tady je Vencourovo | Praha+západní Čechy
Rozbalit Rozbalit vše Re: Jak si chrochtat v chrootu
To je výzva pro všechny, jestli se vám něco nezdá, tak napište. Reagujeme snad jakž takž ok, ne? Až na ty zprávičky, jak jsem si občas všim ... a ty já nedělam.
Ty nejhlubší objevy nečekají nutně za příští hvězdou. Jsou uvnitř nás utkány do vláken, která nás spojují, nás všechny.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.