Re: root shell al boot
Alle 00:16, venerdì 26 settembre 2003, Leonardo Canducci ha scritto:
> non ricordo più come si faceva ad ottenere una root shell al boot. mi
> pare che in alcuni kernel venga richiesto all'avvio dopo lilo/grub.
> se ne era parlato per questioni di sicurezza, quando si riesce ad
> accedere fisicamente ad un server, ma non ho ritrovato la discussione
> negli archivi.
Il kernel avvia per default, come primo processo e con permessi di
root, /sbin/init, che poi leggendo /etc/inittab fa partire tutti i
processi di avvio.
Questo nome di file è "hardcoded" nel kernel, ma si può cambiare con la
linea di comando del kernel, col parametro init=nomefile. Esempio se
vuoi dimostrare al mondo che emacs è necessario e sufficiente fai
"init=/usr/bin/emacs" ;) Anche se fa casino col terminale all'uscita...
Per avere la sh basta quindi dare al kernel
init=/bin/sh
Su lilo devi usare la label che usi per il boot:
linux init=/bin/sh
al prompt.
Se usi grub devi editare la riga con "e" ed appendere init=/bin/sh, poi
fare "b".
Questa cosa funziona anche su altre architetture, non solo su x86, ma si
può evitare proteggendo il bootloader con una password. In quel caso,
se il bios non è protetto da password, si può ancora bootare da
dischetto o da cd ed essere root. Se il bios è protetto, si può sempre
sproteggerlo cancellando la memoria, dopo aver aperto il case. Ecco il
significato di "se posso accedere fisicamente alla macchina posso
essere root".
Se usi questa "feature", la partizione "/" è montata read-only, per
averla read-write la rimonti, ma poi devi ricordarti di rimontarla
read-only prima di spegnere. Per spegnere mi sa che fare halt non serve
a niente perchè non c'è apmd (potrei sbagliare), quindi remount
read-only e premi il grande tasto rosso ;)
Credo di averti detto tutto! Notte...
V.
--
Ho dato al mio dolore la forma di parole abusate
che mi prometto di non pronunciare mai più
[CSI]
Reply to: