Portál AbcLinuxu, 26. dubna 2024 06:50


Dotaz: Jak uživateli zakázat provádění konkrétního příkazu

31.5.2012 13:43 Müller
Jak uživateli zakázat provádění konkrétního příkazu
Přečteno: 433×
Odpovědět | Admin
Lze nějakým způsobem uživateli, který má přístup do promtu, zakázat provedení určitého příkazu s určitou definicí? Např. zakázat naplnění určité proměnné určitou hodnotou. Př. "export WAYNAME=abcd" . Děkuji.

Řešení dotazu:


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

Odpovědi

31.5.2012 14:05 Kit
Rozbalit Rozbalit vše Re: Jak uživateli zakázat provádění konkrétního příkazu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nezakazovat příkaz, ale prostředky, které ten příkaz používá (viz fdisk).

V daném případě by mohlo být řešením unset WAYNAME nebo nastavení na jinou hodnotu před spuštěním příkazu.

Ten požadavek se mi jeví jako dost podivný. Proč by si uživatel nemohl nastavit prostředí podle potřeby? Má to nějaký praktický smysl? Pokud nesmí změnit jméno nějaké cesty, tak mu znepřístupním adresář.
31.5.2012 14:46 Müller
Rozbalit Rozbalit vše Re: Jak uživateli zakázat provádění konkrétního příkazu
Rád bych zabránil tomu, aby jistá proměnná získala určitou hodnotu. Tato proměnná může nabývat i jiných hodnot. Jde o to, zabránit uživateli, aby si určitou proměnnou nějak nastavil. Má to praktický smysl.
Jendа avatar 31.5.2012 15:01 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Jak uživateli zakázat provádění konkrétního příkazu
Pak patchni Bash. Dej do něj podmínku, že když daná proměnná prostředí nabude nějaké hodnoty, nenastaví se.

Popsaný problém to řeší dokonale. Že si uživatel může spustit vlastní bash, nebo rovnou patchne binárku, aby na prostředí nebrala ohledy? To nás přece nezajímá, šlo nám o to, aby se nedala nastavit proměnná prostředí. DEKA="VIDLICKOVA" je totiž strašně nebezpečný příkaz.
31.5.2012 15:09 l4m4
Rozbalit Rozbalit vše Re: Jak uživateli zakázat provádění konkrétního příkazu
+1
31.5.2012 15:15 l4m4
Rozbalit Rozbalit vše Re: Jak uživateli zakázat provádění konkrétního příkazu
Uživatel nemusí ani chodit tak daleko. Prostě spustí interpret libovolného interpretovaného jazyka a v něm použije odpovídající execve(). Ale hlavně, že jsme zabránili tomu hroznému nastavení proměnné v shellu.
31.5.2012 15:22 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak uživateli zakázat provádění konkrétního příkazu
Když se vás ptali na praktický smysl, ptali se na cíl, proč tu proměnnou nastavujete nebo nenastavujete. Např. proměnná LOCALE se může nastavit na hodnotu cs, aby program psal česky. Cílem je tedy to, aby program psal česky, ne nastavení LOCALE na nějakou hodnotu. Pokud by cílem uživatele bylo opravdu jen nastavit nějakou proměnnou na nějakou hodnotu, a administrátor by se mu v tom snažil zabránit, pak je řešením odeslat oba dva do blázince. Předpokládám, že vy tedy neřešíte nastavení proměnné, ale nastavení proměnné, aby něco. A to něco nás zajímá, protože toho jde nejspíš dosáhnout mnoha různými způsoby (takže zákaz proměnné prostředí by ničemu nepomohl), a zároveň to možná jde nějak rozumně zakázat.
31.5.2012 14:10 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: Jak uživateli zakázat provádění konkrétního příkazu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jediný způsob, který znám, pro zakázání příkazu uživateli, který má prompt, je práce z přístupovými právy. Tedy např. pokud bych chtěl aby příkaz ls nemohli používat "neprověření" uživatelé, tak souboru /bin/ls seberu mod na 750 a přiřadím mu skupinu "provereni" a do skupiny "provereni" naskládám všechny prověřené uživatele. Na druhou stranu, vzhledem k tomu, že interní závislosti a vazby neznám do hloubky, může se lehce stát, že tímhle postupem bych něco hodně zvoral a nějaká funkčnost by vypadla. A navíc tím nejsem schopen zablokovat příkazy, které se provedou uvnitř shellu, jako je právě uvedený export. Těmto příkazům se podle mne zabránit nedá.
31.5.2012 14:30 l4m4
Rozbalit Rozbalit vše Re: Jak uživateli zakázat provádění konkrétního příkazu
Sebrání práv má smysl u privilegovaných (setuid, ...) binárek, které si uživatel nespustí odjinud. Spuštění vlastního kódu -- jak binárky, tak interpretovaného -- sice zabránit lze (restricted shell a likvidace všeho v cestě, co může sloužit jako interpret, nebo lze využít i SELinux), ale to už je velmi brutální omezení.
31.5.2012 14:22 l4m4
Rozbalit Rozbalit vše Re: Jak uživateli zakázat provádění konkrétního příkazu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Řešíš nesmyslný problém. Řeš, čeho chceš dosáhnout skutečně -- a to je těžko zabránění nastavení nějaké proměnné, spíš zabránění nějakému běžnému důsledku takového nastavení.
31.5.2012 14:47 Müller
Rozbalit Rozbalit vše Re: Jak uživateli zakázat provádění konkrétního příkazu
Momentálně to nesmyslný problém není.
Řešení 2× (cezz, Ragzid)
31.5.2012 15:09 l4m4
Rozbalit Rozbalit vše Re: Jak uživateli zakázat provádění konkrétního příkazu
OK, chceš-li odpověď na nesmyslnou otázku, tak pozměň shell, aby tu konkrétní proměnnou nenastavoval. Easy. A až zjistíš, co potřebuješ vyřešit doopravdy, tak se zeptej na to...
1.6.2012 09:18 Jooky (inactive) | skóre: 39 | blog: Jooky | Bratislava
Rozbalit Rozbalit vše Re: Jak uživateli zakázat provádění konkrétního příkazu
Na zaklade dotazu a odpovedi musim potvrdit, ze ide o riesenie nezmyslu. Ak sa za nastavovanim enviromentu schovava nieco zlozitejsie, tak nam to skuste objastnit vo vsetkych suvislostiach. Samotne premene prostredia sa daju nastavovat roznymi spobmi a ani jeden nepovazujem za nebezpecny. Zrejme sa snazite vyriesit nejaky konkretny problem, ale z uplne zlej strany ... bez poriadneho popisu vam malo kto vie pomoct ...
31.5.2012 17:45 benn | skóre: 18
Rozbalit Rozbalit vše Re: Jak uživateli zakázat provádění konkrétního příkazu
Odpovědět | | Sbalit | Link | Blokovat | Admin
V bashi lze vytvořenou proměnou přepnout na read-only pomocí příkazu:
export PROMENNA=hodnota
declare -r PROMENNA
Pak s ním už samozřejmě nejde hnout, ani oddefinovat...
31.5.2012 21:53 l4m4
Rozbalit Rozbalit vše Re: Jak uživateli zakázat provádění konkrétního příkazu
To má určitý smysl pro proměnné řídící sám shell (spíš jako pojistka proti blbostem než bezpečností opatření), jinak totiž:
env PROMENNA=jina-hodnota příkaz...

Založit nové vláknoNahoru

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

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