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