abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
včera 15:33 | Nová verze

Počítačová hra Factorio (Wikipedie) běžící také na Linuxu dospěla do verze 1.0. Oficiální oznámení v příspěvku na blogu. Ukázky na YouTube. Hra byla představena v roce 2013 na Indiegogo.

Ladislav Hagara | Komentářů: 10
včera 09:00 | Bezpečnostní upozornění

Národní bezpečnostní agentura (NSA) a Federální úřad pro vyšetřování (FBI) upozorňují na linuxový malware Drovorub. Odpovědi na nejčastěji kladené dotazy ve FAQ. Detaily v pětačtyřicetistránkové analýze.

Ladislav Hagara | Komentářů: 8
včera 08:00 | Nová verze

Interaktivní výpočetní prostředí Jupyter Notebook (zobecnění dřívějšího IPython Notebook) má také variantu Jupyter Book pro vytváření rozsáhlejších dokumentů. To je nově přepracované – používá systém pro správu obsahu (dokumentace) Sphinx se značkovacím jazykem MyST založeným na Markdownu a nový systém sestavení dokumentu namísto původního Jekyll.

Fluttershy, yay! | Komentářů: 5
včera 07:00 | Nová verze

Bylo vydáno Ubuntu 18.04.5 LTS, tj. páté opravné vydání Ubuntu 18.04 LTS s kódovým názvem Bionic Beaver (poznámky k vydání a přehled změn) a také Ubuntu 16.04.7 LTS, tj. sedmé opravné vydání Ubuntu 16.04 LTS s kódovým názvem Xenial Xerus (poznámky k vydání a přehled změn).

Ladislav Hagara | Komentářů: 7
včera 06:00 | Nová verze

Byla vydána nová verze 1.48 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání. Ve verzi 1.48 bude vydáno také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

Ladislav Hagara | Komentářů: 0
13.8. 19:11 | Zajímavý projekt

Neziskové technologické konsorcium Linux Foundation a společnosti Grillo a IBM společně představili projekt OpenEEW (GitHub) neboli open source systém včasného varování před zemětřeseními (earthquake early-warning).

Ladislav Hagara | Komentářů: 0
13.8. 16:33 | Nová verze

Byla vydána nová verze 5.1.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 235 vývojářů. Provedeno bylo více než 2 500 commitů. Přehled úprav a nových vlastností v seznamu změn.

Ladislav Hagara | Komentářů: 2
13.8. 16:11 | Nová verze

Byla vydána nová verze 20.08.0 KDE Aplikací (KDE Applications). Přehled novinek i s náhledy v oficiálním oznámení (sk), v kompletním seznamu změn a na stránce s dalšími informacemi.

Ladislav Hagara | Komentářů: 0
12.8. 13:55 | Komunita

Nadace The Document Foundation (TDF) zastřešující vývoj svobodného kancelářského balíku LibreOffice zveřejnila čtyřiapadesátistránkovou výroční zprávu za rok 2019. K dispozici je v nízkém (6,4 MB) i vysokém (53,2 MB) rozlišení. Nadace také publikovala statistiky související s LibreOffice 7.0. Před týdnem vydaná verze byla z oficiálních stránek stažena již 423 tisíckrát.

Ladislav Hagara | Komentářů: 0
12.8. 13:33 | Zajímavý článek

Když se řekne „jmenný prostor“ hodně lidí si představí xmlns v XML nebo balíčky v Javě odvozené od internetových domén. Jmenné prostory jsou ale obecný koncept se kterým se setkáme prakticky všude a odvozovat je můžeme i jinak. Článek Jména a jmenné prostory dává toto téma do souvislostí a ukazuje různé způsoby tvorby jmenných prostorů. Nahlédneme i do zajímavého světa RDF a ukážeme si, jak vytvářet URI, která budou globálně unikátní jednou provždy.

xkucf03 | Komentářů: 10
Dokážete si představit, že by váš hlavní počítač (desktop, notebook) byl v současné době založen na architektuře jiné než x86 (x86_64)? Například ARM, POWER, RISC-V,…
 (13%)
 (12%)
 (56%)
 (14%)
 (5%)
Celkem 260 hlasů
 Komentářů: 16, poslední včera 04:55
Rozcestník

Chroot prostředí - II

29. 12. 2003 | Martin Pavlíček | Bezpečnost | 16174×

Praktické využití a představení programu Jail, který zjednodušuje vytvoření chroot prostředí.

Úvod

V tomto článku, který volně navazuje na spíše obecný popis chroot prostředí v Linuxu, bych vám rád přestavil program Jail (Jail Chroot Project), který dokáže velice usnadnit vytváření a provozování chrootovaných aplikací a uživatelů.

Program je šířen pod licencí GNU a byl napsán v jazyku C. Základní skripty byly vytvořeny s pomocí bashe a perlu. Jail byl otestován na systémech Linux, Solaris, IRIX a FreeBSD (podle autora bude nejspíše fungovat v jakémkoliv unixovém systému). Napsal jej španělský "computer engineer" Juan Manuel Casillas. Odkazy na domovské stránky projektu jsou uvedeny níže. Na nich též najdete originální dokumentaci, ze které jsem čerpal pro tento článek.

V dalším textu budu předpokládat, že máte alespoň matnou přestavu o tom, co to chroot prostředí v Linuxu je, pokud ne, pak se podívejte na článek, ve kterém jsem o tom něco málo sepsal.

Pojďme se již konečně podívat, k čemu je vlastně program Jail dobrý a proč ho používat. Pokud to vezmeme trošinku oklikou, pak lze říci, že při chrootování nějakého programu je zřejmě nejtěžší správně určit všechny knihovny a soubory, které tento program potřebuje. A právě tu nastupuje program Jail, který dokáže automaticky "vybrat" všechno, co je potřeba a zkopírovat to na určené místo. Samozřejmě musím podotknout, že vše, co program Jail umí, lze provádět i "ručně", ale to v mnoha případech není vůbec jednoduché, takže proč si to neulehčit, že?

Instalace a první použití

Instalace je velice rychlá a jednoduchá, stáhnete si klasický tarball se samotným programem, který má pouhých asi 30 KiB, rozbalíte jej a přepnete se do něj:

tar xfz jail_1.9.tar.gz
cd jail_1-9_stable

Pak můžete v adresáři src editovat soubor Makefile, ve kterém, mimo jiné, jde nastavit pro jaký "Unix" bude program kompilován (viz výše, např. Linux, Solaris ...), dále adresář, do kterého se program nainstaluje atd. Až budete spokojeni, pak obvyklým příkazem (stále v adresáři src)

make

program zkompilujete a příkaz

make install

zajistí instalaci, která se standardně provede do adresáře /usr/local.

Jelikož doufám, že vše proběhlo v pořádku, můžeme si ukázat, jak se s Jailem pracuje (jistě netřeba dodávat, že vše provádíme jako root). Pro uživatelskou práci slouží několik v Perlu napsaných skriptů (jsou tři a všechny si předvedeme v akci).

Prvním (možná spíš nultým) krokem je vytvoření adresáře, ve kterém budeme chroot prostředí provozovat (a který bude "novým kořenem"). Tento adresář může být v podstatě kdekoliv, takže např.:

mkdir /chroot

Dalším krokem je vytvoření tzv. základního prostředí s několika speciálními soubory (např. etc/passwd, dev/null, atd.). K tomuto slouží příkaz mkjailenv, takže např.:

/usr/local/bin/mkjailenv /chroot

Výstup příkazu vypadá takto:

mkjailenv
A component of Jail (version 1.9 for linux)
http://www.gsyc.inf.uc3m.es/~assman/jail/
Juan M. Casillas

Making chrooted environment into /chroot
    Doing preinstall()
    Doing special_devices()
    Doing gen_template_password()
    Doing postinstall()
Done.

V této chvíli máme připraveno prostředí, které je ale zatím celkem k ničemu, protože v něm ještě není žádný software. Přidání základního balíku programů a k nim závislých knihoven a speciálních souborů provedeme příkazem addjailsw zadaným bez parametrů.

/usr/local/bin/addjailsw /chroot

Pro ukázku přikládám zkrácený výpis z mého počítače:

addjailsw
A component of Jail (version 1.9 for linux)
http://www.gsyc.inf.uc3m.es/~assman/jail/
Juan M. Casillas

Guessing head args()
Guessing cat args()
Guessing pwd args()
Guessing ln args()
Guessing mkdir args()
Guessing rmdir args()
Guessing ls args()
Guessing sh args()
Guessing mv args()
Guessing rm args()
Guessing more args()
Guessing grep args()
Guessing vi args(-c q)
Guessing id args()
Guessing cp args()
Guessing tail args()
Guessing touch args()
Warning: not allowed to overwrite chroot/etc/passwd
Warning: not allowed to overwrite chroot/etc/group

...

Done.

V této chvíli by již mělo být chroot prostředí plně funkční, můžeme to hned otestovat:

chroot /chroot

Pozn.: Můj první pokus skončil na hlášce "chroot: /bin/bash nelze provést: není souborem ani adresářem". V takovém případě ručně napravíme, co se programu zřejmě nepodařilo:

cp /bin/bash /chroot/bin

Potom by již mělo být vše v pořádku.

Uzavírání dalších programů do klece

Protože nyní máme vytvořeno základní prostředí, tak si ukážeme (a vyzkoušíme) přidávání dalších programů, které je velmi snadné (narozdíl od chrootování, které se dělá "ručně"). K této činnosti opět slouží příkaz addjailsw, kterému, ale zadáme parametr -P a název programu, který má být do chroot prostředí převeden. Pokud se např. rozhodneme chrootnout interpret jazyka Perl, příkaz bude vypadat takto:

/usr/local/bin/addjailsw /chroot -P perl

Myslím, že netřeba přidávát výpis, ale každopádně se nelekněte případných hlášek o přepisování souborů, které tam již vytvořily předchozí příkazy a po projetí prográmku si vyzkoušejte jestli vše funguje:

chroot /chroot
bash-2.05a# perl -v

This is perl, v5.6.1 built for i386-linux
Copyright 1987-2001, Larry Wall
...

Chrootování uživatelů

Další užití programu Jail je chrootování uživatelů. Jail v tomto případě slouží jako logovací nástroj a pracuje jako "wrapper" na uživatelský shell. Takže pokud se dotyčný uživatel přihlásí, je Jail spušten a chroot prostředí je aktivováno.

Nejdříve je třeba založit uživatele v normálním (tzn. ne chroot) systému. Můžeme to udělat ručně, editací souboru /etc/passwd nebo použít příkaz adduser (useradd).

Následně spustíme příkaz addjailuser, který edituje chrootovaný /etc/passwd a také vytváří chrootovaný domovský adresář. Např.:

/usr/local/bin/addjailuser /chroot /home/pepa /bin/bash pepa

Parametry jsou následující:

  1. absolutní cesta k adresáři, pod kterým vytváříme chroot prostředí (musí být nastaven jako domovský pro chrootovaného uživatele, viz. níže),
  2. domovský adresář uživatele v chroot prostředí,
  3. cesta k shellu, který bude uživatel používat (tento samozřejmě musí být v chroot prostředí dostupný),
  4. jméno uživatele, kterého chrootujeme.

Náš ukázkový výstup by měl vypadat takto:

addjailuser
A component of Jail (version 1.9 for linux)
http://www.gsyc.inf.uc3m.es/~assman/jail/
Juan M. Casillas

Adding user pepa in chrooted environment /chroot
Done.

To ale není vše. Aby to fungovalo tak, jak si přejeme, je třeba ručně upravit ne-chrootovaný /etc/passwd. Původní záznam, který vypadá nějak takto:

pepa:x:507:507::/home/pepa:/bin/bash

upravíme tak, že změníme domovský adresář na adresář, který bude kořenem pro uživatele v chroot prostředí a výchozí shell, kde nastavíme program jail:

pepa:x:507:507::/chroot:/usr/local/bin/jail

Tak a teď už je konečně uživatel pepa chrootovaný (pro jistotu si to ověřte :-)).

Závěr

Podle mých zkušeností program Jail funguje spolehlivě a jeho používání je velmi jednoduché. Pokud ale přeto narazíte na problém, zkuste se podívat na na tuto stránku, na které najdete diskuzní fórum, ve kterém vám poradí buď ostatní uživatelé nebo přímo Juan (autor programu).

Závěrem nezbývá než dodat, že program Jail dokáže velice zjednodušit vytváření chroot prostředí a přidávání do něj jak uživatelů tak aplikací. Dalo by se skoro říci, že s jeho pomocí je chrootnutí nějakého programu či uživatele v podstatě triviální záležitost (na rozdíl od ručního chrootování). Doufám, že vás článek alespoň trošku zaujal a případně vám bude užitečný v praxi. Máte-li připomínky či nápady neváhejte a svěřujte se v diskuzi.

       

Hodnocení: 38 %

        špatnédobré        

Nástroje: Tisk bez diskuse

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

Komentáře

Vložit další komentář

29.12.2003 08:33 IW
Rozbalit Rozbalit vše Proc zas musim reagovat?
Opet, opet prvni, ach jo.... BASH je program jako kazdy jiny, takze by se mel pouzit addjailsw. Shodou okolnosti jsou (tusim) vsechny potrebne knihovny jiz v chrootu nainstalovany jailem, nicmene to nemeni nic na faktu, ze tento postup zavani stylem, Windows (nejede to, zkopiruj knihovnu/soubor jinam a mozna to pojede). Jinak jeste jedna vec, to zjistovani demendencies a tak v Jailu dela program "strace". Autor me nakopl k hrani s chrootem a na mem LinuxuFromScratch jsem se v tom musel trochu vrtat, nez jsem to rozjel. Pro Autora: Neminim to ve zlem, jen ty chyby v clancich by udelal jen naprosty linuxovy zacatecnik, takze primo biji do oci. To ovsem muze byt i pozitivni zalezitost, kdyby vse fungovalo presne dle clanku, nehral bych si s tim a vedel o dost mene. Takze shrnuto podtrzeno drzim palce v editorske cinost, jen mozna pred vydanim nechat clanek projet nekym kompetentnim.
29.12.2003 15:49 Martin Pavlíček
Rozbalit Rozbalit vše Proc zas musim reagovat?
Co se BASHe tyce tak mate pravdu, ale bohuzel pri testovani se mi stalo, ze "addjailsw" proste na binarku BASHe "zapomel" (jenom na ni, vsechno ostatni tam bylo). Proto mi neprijde az tak divne, kdyz jsem ji tam prikopiroval "rucne".
5.1.2004 10:20 BoodOk
Rozbalit Rozbalit vše Proc zas musim reagovat?
Asi myslel
/usr/local/bin/addjailsw /chroot -P bash
4.9.2005 01:47 Tofu
Rozbalit Rozbalit vše RPMDIG
Ahojte,

pred nejakym casom som sa pokusal strcit ssh pod chroot. Zistil som ze to nie je vobec lahka uloha.

Tiez som nasiel zopar programov ktore na zaklade strace hladali subor a kniznice, ale vela projektov bolo mrtvych alebo nefungovali ako mali.

Kedze pouzivam Fedoru, povedal som si - naco mam rpm databazu a v nej zoznam vsetkych nainstalovanych suborov ak ju neviem vyuzit a vypisat vsetky subory a kniznice ktore pouziva ssh?

No ako som skusal, tak som skusal, nevedel som...

Preto som napisal maly skritp RPMDIG. Ako nazov zadate meno nainstalovane balicka a on rekurzivne vypise vsetky subory, kniznice a balicky ktore tento balicek pouziva. Mozete si ho stiahnut z http://freshmeat.net/projects/rpmdig Help zobrazite pomocou rpmdig --help Skript bol testovany pod RH7.3 aj pod FC3, no mal by bezat aj pod ostatnymi RPM systemami.

Bohuzial nemal som cas dokoncit moj pokus s ssh + chroot, tak ak to niekto dokonci, dajte mi vediet.

Inak z chrootu v linuxe sa varj da dost lahko uniknut, hlavne ak mate prava roota - hladajte na googli chroot escape, navod ako na to je strucne popisany aj tu: http://linux.about.com/library/cmd/blcmdl2_chroot.htm

Som zvedavy na vase reakcie.

tofu na pobox bodka sk
29.12.2003 21:57 Tonda
Rozbalit Rozbalit vše Updaty
Zajimalo by me, jak to resi updaty. coz je docela podstatne, protoze kdyz uz to pracuje skoro automaticky, tak by to nejak mohlo resit i updatovani sw. Take by o tom mohla byt v clanku aspon zminka.
30.12.2003 13:07 alekibango
Rozbalit Rozbalit vše Vservery
Pro ty z vas, kterym jailovani prijde ponekud omezene, bych doporucil http://www.linux-vserver.org/ Umoznuje to spustit cele virtualni servery, s omezenim internetu, CPU, pameti a disku a skupinky CAPS. Takze je mozne pomoci teto techniky a par Giga na disku udelat celou virtualni sit plnou pocitacu, bezne kolem 500, a to bez znatelneho zpomaleni (jak je tomu v pripade pouziti emulatoru pc). Prave se dokoncuje prvni verze distribuce Linuxu, zalozena prave na virtualnich serverech. Poskytuje tak modularni reseni s nizsimi naklady na spravu. Vyvoj probiha v ramci projektu edunix.cz. Kdyby nekdo mel zajem (predevsim lide ze skolstvi), prijdte na irc kanal #edunix-cz na irc.freenode.net.
30.12.2003 21:03 Petr Mach
Rozbalit Rozbalit vše jeste doplnek
Ja bych vytknul jeste jeden nedostatek. Lepsi nez make install je pouzit (na systemech s balickkovym systemem rpm, deb nebo slackavare kompatibilnim, tedy prakticky vsech) checkinstall. Nejsou tak naruseny zavislosti, v systemu zustava zachovan prehled kde je co nainstalovano a co k cemu patri a take to lze pak snadno odinstalovat.
8.2.2010 12:23 LuděkS | skóre: 30 | blog: publish | Liberec
Rozbalit Rozbalit vše Re: jeste doplnek
Souhlasím. Např. u CentOSu lze použít balíček jmenuje jailkit příkaz pro použití jk_init -j. Je to pak tedy trochu jinak než je výše popisováno v návodu. Přesto jako "námět" se mi článek líbí.
theo avatar 3.1.2004 20:05 theo | skóre: 15 | Rožnov ... hádej který?
Rozbalit Rozbalit vše poznamka k bezpecnosti
chroot je sice prima vec, ale jinak celkem k nicemu. paklize je znamo x ruznych metod jak se z nej vybrejkovat a v kernelu to neni (dostatecne) osetrene, je lepsi pouzit plnokrevny jail na fbsd. pro stouraly a hracicky viz. www.grsecurity.net -- najde tam docela slusne mnozstvi materialu a taky patch grsecurity.
Sine ira et studio
29.6.2004 01:31 llook | skóre: 8 | blog: l'blog | Prágl
Rozbalit Rozbalit vše Re: poznamka k bezpecnosti
Jasně, kdybych to potřeboval na serveru, naučil bych se FreeBSD. Ale i tak se pro to dá najít využití. Zrovna si trochu hraju se Slaxem a tohle je pro mě skvělý nástroj, jak do jednoho adresáře shromáždit vše potřebné pro budoucí root.
10 REM Dej si pauzu... 20 FOR DELAY=1 TO 5000 : NEXT DELAY
1.11.2004 22:16 Yusho
Rozbalit Rozbalit vše chyba pri LOGIN
zdravim a zaroven vas prosim o radu mam slackware 9.1 a naistalovany jail 1.9 postupoval som presne podla navodu a pri nalogovavani usera mi napise hlasku:

jail: execve() : No such file or directory

vcom moze byt chyba???

dakujem
9.7.2005 21:10 sonic
Rozbalit Rozbalit vše Re: chyba pri LOGIN
V gentoo linux, Jail (version 1.9 for linux) mam naprosto stejny problem =[

jail: execve() : No such file or directory

Nevite nekdo prosim radu?

sonic@czechcore.cz

diky.
22.7.2005 13:13 Vlado
Rozbalit Rozbalit vše Spustenie bash v jail
Dobry den, postupoval som podla clanku az do okamihu ked som zadal chroot /chroot dostal som hlasku cannot run command /bin/bash: No such file or directory. skusal som aj /usr/local/bin/addjailsw -P bash aj rucne prekopirovanie cp /bin/bash /chroot/bin

ale nepomohlo Dik za radu
31.8.2005 01:05 jm
Rozbalit Rozbalit vše Re: Spustenie bash v jail
Ale jo, vime. V chrootu chybi /lib/ld-linux.so.2, no holt ten jail moc inteligentni neni, kdyz neumi ani korektne pouzit ldd...
4.9.2005 01:49 tofu
Rozbalit Rozbalit vše RPMDIG
Ahojte, pred nejakym casom som sa pokusal strcit ssh pod chroot. Zistil som ze to nie je vobec lahka uloha.

Tiez som nasiel zopar programov ktore na zaklade strace hladali subor a kniznice, ale vela projektov bolo mrtvych alebo nefungovali ako mali.

Kedze pouzivam Fedoru, povedal som si - naco mam rpm databazu a v nej zoznam vsetkych nainstalovanych suborov ak ju neviem vyuzit a vypisat vsetky subory a kniznice ktore pouziva ssh?

No ako som skusal, tak som skusal, nevedel som...

Preto som napisal maly skritp RPMDIG. Ako nazov zadate meno nainstalovane balicka a on rekurzivne vypise vsetky subory, kniznice a balicky ktore tento balicek pouziva. Mozete si ho stiahnut z http://freshmeat.net/projects/rpmdig Help zobrazite pomocou rpmdig --help Skript bol testovany pod RH7.3 aj pod FC3, no mal by bezat aj pod ostatnymi RPM systemami.

Bohuzial nemal som cas dokoncit moj pokus s ssh + chroot, tak ak to niekto dokonci, dajte mi vediet.

Inak z chrootu v linuxe sa vraj da dost lahko uniknut, hlavne ak mate prava roota - hladajte na googli chroot escape, navod ako na to je strucne popisany aj tu: http://linux.about.com/library/cmd/blcmdl2_chroot.htm

Som zvedavy na vase reakcie.

tofu na pobox bodka sk
9.2.2010 11:31 LuděkS | skóre: 30 | blog: publish | Liberec
Rozbalit Rozbalit vše Re: RPMDIG
Já jsem se s tím docela trápil, ale nakonec se mi to nepodařilo. Je ale fakt, jestli není lepší pro takové případy použít treba OpenVPN. Ptal jsem se na to tady.
26.9.2008 22:47 aaa
Rozbalit Rozbalit vše Re: Chroot prostředí - II
pěkný články, jen tady asi nikdo nepochopil že to není řešení pro interaktivní přihlášení na bash anóbrž na jednotlivé instance programů jako bind atd.
8.2.2010 12:26 LuděkS | skóre: 30 | blog: publish | Liberec
Rozbalit Rozbalit vše Re: Chroot prostředí - II
man jailkit: jailkit - utilities for jailing a user or process

Založit nové vláknoNahoru

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.