Je taková užitečná legrácka, co jsem teď "vyvinul" pro naše klienty. Pro vserver totéž bylo triviální - u Xenu ovšem byla finta v tom, že po vykillování a reinicializaci právě bylo nutné ještě přesměrovat konzoli na stdout, aniž by člověk použil něco volání system():
http://teckacz.arachne.cz/xchaos/files/xen-reboot.c
Minimálně si z toho uděláte přesdstavu, jak asi vypadá implementace části funkčnosti shellu "uvnitř" (ostatně - shell je přece taky napsaný v Céčku :-)
Proč je to v Céčku? Inu.... (cituji z /etc/passwd):
servername-reboot:x:0:0:Reboot virtualu servername,,,:/home/servername-reboot:/home/servername-reboot/servername-reboot
...prostě chci mít lepší kontrolu nad bezpečností pokud někoho nechávám přihlásit s uid 0 (resp. chci mít jistotu, že se nedostane do shellu).
Pokud mi v tom někde najdete nějakou bezpečnostní díru, budu jedině rád. Jinak pochopitelně v kombinaci s těmi ncurses - pochopitelně, taky přímo v céčku - z toho chci udělat plnou ovládací konzoli (min. 4 možnosti - shutdown, restart, konzole i tvrdý restart - a klienti se dožadují i možnosti mountování iso image a reinstalace systému z něj... což bude tedy asi oříšek, ale skripty pro XEN toto zahrnují tak jako tak...)
Z toho vyplývá logický dotaz: jsou ncurses tak bezpečné, aby je v tomto režimu (kdy z nich nejde vyskočit do shellu, který danný uživatel ani nemá povolené) bylo možné pustit pro kohokoliv s uid 0 ? a napadá vás jiný způsob, jak toto řešit?
(tady vidíte, že
občas přeci jen řeším v C praktické otázky, např. otázk bezpečnosti pod Linuxem - a nepoužívám ho jen pro samoúčelná intelektuální cvičení...)
Vzhledem k tomu, jak nebetyčně chytří je určitá část účastníků tohohle klubu, tak očekávám nějaký geniální nápad, jak se tomuto vyhnout (třeba koupit si hotové komerční řešení nebo doinstalovat balíček, který toto umí a je pro XEN už hotový, apod. :-)