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í
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
včera 17:02 | Pozvánky

Přijďte si popovídat o open source obecně a openSUSE konkrétně s dalšími uživateli a vývojáři. Oslava nového vydání openSUSE Leap se uskuteční 16. prosince od 17:00 v nových prostorách firmy SUSE v Praze. K dispozici bude nějaké občerstvení a DVD pro ty, kdo je sbírají nebo ještě mají mechaniku. Po párty v kanceláři se bude pokračovat v některé z hospod v okolí.

Miška | Komentářů: 8
včera 14:55 | Zajímavý software

Byla vydána verze Alpha 1.0 otevřeného operačního systému pro chytré hodinky AsteroidOS. Podporovány jsou hodinky LG G Watch, LG G Watch Urbane, Asus ZenWatch 2 a Sony Smartwatch 3. Ukázka ovládání hodinek na YouTube. Jaroslav Řezník přednášel o AsteroidOS na chytrých hodinkách (videozáznam) na letošní konferenci OpenAlt.

Ladislav Hagara | Komentářů: 0
včera 13:30 | Zajímavý software

Byly uvolněny zdrojové kódy známé rogue-like hry DoomRL. Počátky hry jsou v roce 2002. Je napsána ve FreePascalu a zdrojový kód je nyní k dispozici na GitHubu pod licencí GNU GPL 2.0. Autor pracuje na nové hře Jupiter Hell, která je moderním nástupcem DoomRL a na jejíž vývoj shání peníze prostřednictvím Kickstarteru.

Blaazen | Komentářů: 0
včera 13:15 | Pozvánky

Přijďte s námi oslavit vydání Fedory 25. Na programu budou přednášky o novinkách, diskuse, neřízený networking atd. Release Party se bude konat 16. prosince v prostorách společnosti Etnetera. Na party budou volně k dispozici také propagační materiály, nová DVD s Fedorou 25 a samozřejmě občerstvení. Přednášky budou probíhat v češtině. Pro více informací se můžete podívat na web MojeFedora.cz. Jen připomínám, že tentokrát jsme zavedli

… více »
frantisekz | Komentářů: 0
9.12. 16:38 | Komunita

Byly zveřejněny videozáznamy přednášek a workshopů z letošní konference OpenAlt konané 5. a 6. listopadu v Brně. K videozáznamům lze přistupovat ze stránky na SuperLectures nebo přes program konference, detaily o vybrané přednášce nebo workshopu a dále kliknutím na ikonku filmového pásu. Celkově bylo zpracováno 65 hodin z 89 přednášek a workshopů.

Ladislav Hagara | Komentářů: 0
9.12. 11:30 | Komunita

Bylo oznámeno, že bude proveden bezpečnostní audit zdrojových kódů open source softwaru pro implementaci virtuálních privátních sítí OpenVPN. Audit provede Matthew D. Green (blog), uznávaný kryptolog a profesor na Univerzitě Johnse Hopkinse. Auditována bude verze 2.4 (aktuálně RC 1, stabilní verze je 2.3.14). Audit bude financován společností Private Internet Access [reddit].

Ladislav Hagara | Komentářů: 4
9.12. 06:00 | Komunita

Na YouTube byl publikován Blender Institute Reel 2016, ani ne dvouminutový sestřih z filmů, které vznikly za posledních 10 let díky Blender Institutu. V institutu aktuálně pracují na novém filmu Agent 327. Dění kolem filmu lze sledovat na Blender Cloudu. Videoukázka Agenta 327 z června letošního roku na YouTube.

Ladislav Hagara | Komentářů: 0
9.12. 01:02 | Zajímavý článek

Minulý týden byly vydány verze 1.2.3 a 1.1.7 webového poštovního klienta Roundcube. V oznámení o vydání bylo zmíněno řešení bezpečnostního problému nalezeného společností RIPS a souvisejícího s voláním funkce mail() v PHP. Tento týden byly zveřejněny podrobnosti. Útočník mohl pomocí speciálně připraveného emailu spustit na serveru libovolný příkaz. Stejně, jak je popsáno v článku Exploit PHP’s mail() to get remote code execution z roku 2014.

Ladislav Hagara | Komentářů: 1
8.12. 16:00 | Nová verze

Byla vydána verze 0.98 svobodného nelineárního video editoru Pitivi. Z novinek lze zmínit například přizpůsobitelné klávesové zkratky. Videoukázka práce s nejnovější verzí Pitivi na YouTube.

Ladislav Hagara | Komentářů: 1
8.12. 15:00 | Zajímavý software

Stop motion je technika animace, při níž je reálný objekt mezi jednotlivými snímky ručně upravován a posouván o malé úseky, tak aby po spojení vyvolala animace dojem spojitosti. Jaký software lze pro stop motion použít na Linuxu? Článek na OMG! Ubuntu! představuje Heron Animation. Ten bohužel podporuje pouze webové kamery. Podpora digitálních zrcadlovek je začleněna například v programu qStopMotion.

Ladislav Hagara | Komentářů: 5
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (23%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 810 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: Spousteni BASH skriptu jako ROOT

19.2.2010 08:07 Carth_Onasi
Spousteni BASH skriptu jako ROOT
Přečteno: 1183×

Zdravim

Je mozne, aby spustitelny BASH skript byl spustitelny pod obycejnym uzivatelem, ale aby tento skript mohl pouzivat rootovske prikazy (nastaveni firewallu) bez pouziti sudo nebo root-hesla?

Diky.

Odpovědi

19.2.2010 08:32 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Spousteni BASH skriptu jako ROOT
U normálních binárek se toho dá docílit suid bitem, kterým způsobí, že se program spustí s právy vlastníka souboru. U skriptů tohle ale pod linuxem povolené není. Samozřejmě vám nikdo nezabrání udělat si Céčkový wrapper, který ten suid bit nastaven mít bude a uvnitř spustí ten váš skript – a nejspíš už něco takového dávno existuje. Problém ale je, že se vám nejspíš nepodaří ten skript napsat bezpečně, aby nebylo možné jej třeba manipulací s proměnnými prostředí donutit s právy roota vykonat jakýkoli program. Pokud potřebujete uživatelům jenom umožnit změny firewallu, a to ještě jenom nějaké povolené změny, bylo by lepší napsat si na to nějaký jednoúčelový program v jazyce, jehož chování můžete opravdu kontrolovat.

Jinak když budete hledat „suid skript“ (případně setuid či bash), najdete toho spoustu.
21.2.2010 22:42 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Spousteni BASH skriptu jako ROOT
Samozřejmě vám nikdo nezabrání udělat si Céčkový wrapper, který ten suid bit nastaven mít bude a uvnitř spustí ten váš skript – a nejspíš už něco takového dávno existuje.
Ano, sudo.

Původnímu tazateli doporučuju se chvíli věnovat nastavení sudo a pak ho ve skriptu použít. Všechny ostatní metody pravděpodobně skončí hůř.
In Ada the typical infinite loop would normally be terminated by detonation.
19.2.2010 08:36 Miklik | skóre: 27 | Krnov
Rozbalit Rozbalit vše Re: Spousteni BASH skriptu jako ROOT
Dle mě bude třeba použít sudo bez hesla na příkazy ve skriptu, které vyžadují root práva.
Nebo možná u těch příkazu nastavit sticky bit. Pak se budou spouštět s právy vlastníka souboru.
Netvrdím to, ale možná je to pravda.
19.2.2010 10:40 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Spousteni BASH skriptu jako ROOT
sudo nebo suid bit ale umožní ty příkazy s právy roota spouštět komukoli (suid) nebo uživatelům povoleným pro sudo. Pokud to chce tazatel povolit, pak to není problém – ale pokud chtěl povolit jen omezenou množinu příkazů, pak tohle použít nemůže – např. pokud tazatel chtěl skriptem povolit upravovat jeden řetězec v iptabels, když nastaví suid bit nebo povolí sudo na iptables, umožní dotyčnému třeba kompletně smazat všechna pravidla firewallu.
19.2.2010 15:05 miro
Rozbalit Rozbalit vše Re: Spousteni BASH skriptu jako ROOT
Ale IMHO lze uživateli dát sudo na skript, který umožňuje měnit iptables striktně definovaným způsobem a odebrat uživateli právo zápisu. Nebo v tom vidíte nějaký bezpečnostní problém?
19.2.2010 15:38 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Spousteni BASH skriptu jako ROOT
Problém je, že ten skript se těžko zabezpečí, aby se nedal zneužít. Třeba když v tom skriptu použijete iptables (bez celé cesty), tak si uživatel může změnit cestu tak, aby na začátku měl nějaký vlastní program jménem iptables – a ten se spustí s právy roota. Shell není dělaný na to, aby se spouštěl s právy roota a pomocí skriptu se omezilo, co přesně může uživatel dělat. Naopak shelly mají normálně spoustu možností,jak spouštět další programy atd. Možná někdo, kdo zná třeba Bash opravdu dobře, by dokázal napsat skript a říci, že je bezpečné spouštět jej pod jiným uživatelem s právy roota. Já akorát vím, že Bash neznám tak dobře, abych to o jakémkoli skriptu dokázal říci.
19.2.2010 17:58 miro
Rozbalit Rozbalit vše Re: Spousteni BASH skriptu jako ROOT
Já akorát vím, že Bash neznám tak dobře, abych to o jakémkoli skriptu dokázal říci.

Tak to zní trochu depresivně pro člověka, který si je vědom toho, že zná bash ještě podstatně míň než vy. Ale jak jsem tak letmo nakouknul do man sudoers, tak problémy, které naznačujete, zřejmě budou řešitelné. Ale neodvažuju se o tom kohokoli jakkoli poučovat.

19.2.2010 18:46 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Spousteni BASH skriptu jako ROOT
Já Bash skoro neznám, nemám moc důvod v shellu nějak moc dělat – akorát občas potřebuji udělat nějakou akci nad určitou množinou souborů, sem tam si napíšu nějaký skriptík tak do deseti řádků. Ale vzhledem k tomu, že je shell určen k tomu, aby se neustále pokoušel něco interpretovat a na základě toho spouštět nějaké další programy, bych se opravdu bál, že na něco zapomenu nebo že nějakou vlastnost, kterou půjde zneužít, vůbec neznám.
21.2.2010 22:53 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Spousteni BASH skriptu jako ROOT
Myslím, že to trochu zveličujete.

Sudo většinu problémů řeší za Vás. Například uvedený útok s PATH nefunguje, neboť sudo zlikviduje většinu nastavení prostředí. Proto taky doporučuji použít sudo a nebastlit si vlastní "suid wrapper" - tvůrci suda už si tím vším prošli.

Odstraněním proměnných prostředí se odfiltruje jediný možný vektor útoku z předchozího shellu. Pak už to je jen o tom, jak napíšete skript - návody jsou na netu. Samozřejmě čím jednodušší ten skript bude, tím lépe.

Případně lze v sudo natvrdo naspecifikovat, že ten uživatel smí spustit iptables s takovými a takovými parametry. Pak se skriptu vyhnete úplně. Možnosti jsou v tomto dost široké.

In Ada the typical infinite loop would normally be terminated by detonation.
22.2.2010 11:45 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Spousteni BASH skriptu jako ROOT
Proto taky doporučuji použít sudo a nebastlit si vlastní "suid wrapper" - tvůrci suda už si tím vším prošli.
Jak složitou gramatiku pro popis přípustných kombinací parametrů umí nadefinovat sudo? Účelem toho mnou zmíněného wrapperu by byla právě kontrola parametrů. Třeba jestli IP adresa zadaná jako parametr je uvedená v databázi u příslušného uživatele – to mi asi sudo nezkontroluje.
Odstraněním proměnných prostředí se odfiltruje jediný možný vektor útoku z předchozího shellu.
To těžko. Když budete mít ve skriptu TEST=`$1`, pořád může uživatel snadno spustit cokoli s právy roota.
22.2.2010 12:48 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Spousteni BASH skriptu jako ROOT
Účelem toho mnou zmíněného wrapperu by byla právě kontrola parametrů. Třeba jestli IP adresa zadaná jako parametr je uvedená v databázi u příslušného uživatele – to mi asi sudo nezkontroluje.

Asi by to chtělo konkrétní příklad, co a jak chcete kontrolovat? Obvykle se složitější kontroly provedou ještě před sudo, aby kód pod rootem byl co nejmenší. Pokud to je nezbytně nutné, můžete kontrolovat po sudo, ale zbytečně zesložiťujete privilegovaný kód. Nicméně psát z gruntu vlastní wrapper Vám dá to horší z obou: kontroly poběží pod rootem a navíc můžete udělat nějakou jinou chybku, kterou už sudo řeší samo o sobě.
To těžko. Když budete mít ve skriptu TEST=`$1`, pořád může uživatel snadno spustit cokoli s právy roota.

To je věc kontroly vstupu Vašeho skriptu. Zrovna tak, pokud skript explicitně používá nějakou proměnnou, soubor, bere vstup z stdin, a kdoví co.

Já jsem mluvil o ovlivnění funkce Vašeho interpretu, tj. shellu. Ta se dá ovlivnit jen proměnnou prostředí, protože jiný vstup nebere.
In Ada the typical infinite loop would normally be terminated by detonation.
22.2.2010 15:51 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Spousteni BASH skriptu jako ROOT
Asi by to chtělo konkrétní příklad, co a jak chcete kontrolovat?
To, že uživatel má právo provést danou akci. Třeba přidělím uživatelům rozsahy portů s tím, že každý si na svém rozsahu může dělat DNAT, jaký chce. S pevnými rozsahy portů by to do sudoers ještě šlo nacpat, ale pokud budu chtít rozsahy mít třeba v databázi, sudoers už mi nepomůže a musím to kontrolovat programově.
Obvykle se složitější kontroly provedou ještě před sudo
Jenže to pak nikomu nezabrání spustit tu aplikaci (třeba iptables) přes sudo bez složitějších kontrol.
To je věc kontroly vstupu Vašeho skriptu. Zrovna tak, pokud skript explicitně používá nějakou proměnnou, soubor, bere vstup z stdin, a kdoví co.
Jenže udělat tyhle kontroly v shellu není nic jednoduchého, protože shell je určen k tomu, aby neustále něco interpretoval – a vy najednou chcete docílit toho, aby neinterpretoval skoro nic.
22.2.2010 17:00 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Spousteni BASH skriptu jako ROOT
Třeba přidělím uživatelům rozsahy portů s tím, že každý si na svém rozsahu může dělat DNAT, jaký chce.
Tohle by asi šlo řešit dost jednoduše tak, že každej dostane svůj chain, kde si může dělat třeba suchý z vrby a do toho chainu se pošlou pakety z toho rozsahu. S trochou práce by to asi šlo naroubovat i na tu databázi. Sudo pak nastavíte tak, že povoluje něco jako "iptables -[AIDF] mujchain *".
Jenže to pak nikomu nezabrání spustit tu aplikaci (třeba iptables) přes sudo bez složitějších kontrol.
Sudo nastavíte samozřejmě tak, že se smí daná operace volat pouze z toho skriptu. Pokud někdo nabourá ten skript tak získá možnost si nastavit firewall (resp. DNAT) jak chce, ale už nezíská o moc víc (cf. kdyby celý skript běžel pod rootem).
Jenže udělat tyhle kontroly v shellu není nic jednoduchého, protože shell je určen k tomu, aby neustále něco interpretoval – a vy najednou chcete docílit toho, aby neinterpretoval skoro nic.
Tak to zase pr. Shell je pouze interpretovaný jazyk a většina normálních interpretovaných jazyků má prostředky k tomu aby nějaký řetězec interpretovala, nebo taky ne, podle toho, jak chce programátor. V bashi jsou na to uvozovky. Perl má navíc taint operátor, který kontrolu toho co kam strkáte dělá za Vás.
In Ada the typical infinite loop would normally be terminated by detonation.
22.2.2010 18:47 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Spousteni BASH skriptu jako ROOT
Tohle by asi šlo řešit dost jednoduše tak…
Tohle konkrétně ano, protože můžete použít jinou funkcionalitu iptables. Ale mohou existovat programy, které takové možnosti nemají.
Sudo nastavíte samozřejmě tak, že se smí daná operace volat pouze z toho skriptu.
To se nastaví jak?
22.2.2010 20:12 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Spousteni BASH skriptu jako ROOT
Tohle konkrétně ano, protože můžete použít jinou funkcionalitu iptables. Ale mohou existovat programy, které takové možnosti nemají.

Pointa je, že stojíte vždy před konkrétním problémem a obvykle si vyberete to "lehčí" řešení.
Sudo nastavíte samozřejmě tak, že se smí daná operace volat pouze z toho skriptu.
To se nastaví jak?
Nejjednodušší je pro skript rezervovat uid, uživatelům povolit sudo na skript pod tím uid, a teprve tomu uid povolit sudo iptables pod rootem.
In Ada the typical infinite loop would normally be terminated by detonation.
21.2.2010 08:51 Miklik | skóre: 27 | Krnov
Rozbalit Rozbalit vše Re: Spousteni BASH skriptu jako ROOT
Myslím, že v sudoers se dá nastavit příkaz s cestou i s parametry, a pak jen tak, ho bude možno spouštět.
Netvrdím to, ale možná je to pravda.
21.2.2010 09:27 Filip Jirsák | skóre: 66 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Spousteni BASH skriptu jako ROOT
Jenže v tomto případě je nejspíš potřeba ty parametry měnit.
21.2.2010 20:19 Miklik | skóre: 27 | Krnov
Rozbalit Rozbalit vše Re: Spousteni BASH skriptu jako ROOT
Jdou použít i zástupné znaky.
Netvrdím to, ale možná je to pravda.
19.2.2010 09:57 Zaphod | skóre: 36
Rozbalit Rozbalit vše Re: Spousteni BASH skriptu jako ROOT
Treba povoliť cez visudo použiť root príkazy pre užívateľa bez hesla. Potom sa dá v scripte použiť "sudo príkaz".

Bez sudo sa dá použit policy kit alebo PAM. Neskúšal som - vyhovuje mi sudo.

Založit nové vláknoNahoru

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

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