Eskejpovani pro su

Ladislav Vaiz spam na nagano.cz
Středa Říjen 17 09:36:40 CEST 2012


Zdravím,
důvody jsou dva. Jednak už před lety jsem řešil, jak spouštět program v 
chrootu pod jiným uživatelem z inittab. Zamotal jsem se do toho a použil 
samostatné skripty pro každou úroveň.

Teď dělám pokus s aktualizací programu. Program běží na síti, která se 
několikrát ročně vytvoří ze strojů, kde mezitím linux neběží. Program je 
po sestavení sítě potřeba aktualizovat kvůli novým funkcím. Na internetu 
mám repozitář. Problém ale je pomalé GPRS připojení, takže třeba 10 
minut  * počet strojů čekám na apt-get update.

Chci udělat vlastní nadstavbu pro dpkg. Program pošle serveru svou 
verzi, dostane aktuální a odkaz na balíčky (jsou potřeba dva). Program 
si je stáhne a pak spustí skript, který se je pokusí nainstalovat přes 
sudo a když selže (ne všude je nastavené), tak přes su.

Bezpečnost není úplná priorita, všichni z přítomných mají zájem na tom, 
aby program bez problémů fungoval. Šlo mi také o poučení do budoucna, 
viz začátek mailu.

Aktuálně jsem to provedl tak, že program má předlohu skriptu, v něm 
nahradí $1 a $2 staženými soubory, skript uloží do ~/tmp a spustí bez 
parametrů.


Pavel Kankovsky napsal(a):
> Samotné předání parametru by zase až tak složité být nemělo, mělo by 
> stačit něco jako:   su -c 'dpkg -i "$0"' root "$1"

Nechápu tam $1.

>
> V první řadě je to otázka za tomu, kdo to su spouští (root to asi není,
> to by to su bylo celkem zbytečné), můžete věřit, že tam pošle 
> očekávaný příkaz a nepřidá si k tomu dpkg něco vlastního.

V aktuální verzi by musel modifikovat skript mezi uložením a spuštěním 
(předpokládám, že za běhu už to nemá vliv) a dovnitř sudo/su něco 
přidat. To snad nehrozí.

> Druhá otázka je, do jaké míry lze věřit samotnému dpkg, že se 
> nezachová nějakým nepěkným způsobem, když mu někdo předhodí nějaký 
> opravdu ošklivý parametr. Nebo nějaká ošklivá environmentová proměnná.

To je na zodpovědnosti dpkg, s tím si musí poradit samo.

> A konečně třetí, nejobecnější, otázka zní, zda lze instalaci balíku 
> považovat za bezpečnou operaci. Ten, kdo by mohl chtít do cesty k 
> balíku strkat shellové příkazy, by tam stejně dobře mohl zkusit dát 
> balík, jehož instalací se vyrobí nějaká (nová) bezpečnostní díra.

To je pravda, na podstrčení balíčku je dost času třeba během stahování 
druhého.


Děkuji všem za náměty, nějak se s tím poperu.

Láďa


Další informace o konferenci Linux