Eskejpovani pro su
Pavel Kankovsky
peak na argo.troja.mff.cuni.cz
Pátek Říjen 19 09:29:35 CEST 2012
On Wed, 17 Oct 2012, Ladislav Vaiz wrote:
>> [...] každý stroj stahuje zvlášť po jednom sdíleném pomalém spojení?
> Ano. Jde to udělat rozumněji, když tam mohou být různě staré debiany a
> ubunt- sakryš jak zní množné číslo? :-)
A co stahují? Jen ten Váš program nebo rovnou aktualizují celé distro?
V prvním případě pravděpodobně není potřeba mít na každou verzi
distribuce úplně jiný program. V druhém případě... no, to bych se na Vašem
místě asi zamyslel, zda je tam úplně nezbytné udržovat takovou
kybernetickou diverzitu.
>> > > 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"
>> [...]
> Potřebuju ho dostat jako argument dpkg -i, nebyl mi jasný ten poslední
> parametr příkazu su.
Pokud je to stále nejasné: příkaz su -c COMMAND ARG0 ARG1 ARG2...
způsobí, že se pod cílovým uživatelem (v daném případě root) spustí
SHELL -c COMMAND ARG0 ARG1 ARG2..., kde SHELL je login shell cílového
uživatele. V COMMAND se lze tedy na ARGn odkazovat pomocí $n.
V sudo se to trochu liší, tam je obvyklý modus operandi ten, že se přímo
spustí požadovaný program. Ale v principu lze udělat také sudo sh -c ...
a získat stejný výsledek.
> Trochu jsem se nad tím zamyslel a hezkou útočnou proměnnou může být
> třeba $PATH nebo $LD_*, pokud se su/sudo zavolá nešikovně.
A to je pohříchu obvykle jen začátek velmi dlouhého seznamu.
> Proti čemu se vlastně bráníme?
To musíte vědět hlavně Vy sám, když jste s tím začal. :)
Výchozí problém byla, jak předat nějaký údaj dovnitř su, aniž by mohl být
nežádoucím způsobem interpretován. V tom případě je potenciální nepřítel
každý, kdo měl (nebo mohl mít) ten údaj v rukou. Pokud jsou to všechno
výhradně důvěryhodné subjekty, tak řešíme ne-problém.
--
Pavel Kankovsky aka Peak / Jeremiah 9:21 \
"For death is come up into our MS Windows(tm)..." \ 21st century edition /
Další informace o konferenci Linux