Simula chroot con unshare


13

Sto cercando di scrivere un bootstrapper per una distribuzione linux minimale, da sorgente.

Mi piacerebbe costruire in un ambiente chroot-like. Ciò dovrebbe semplificare l'imballaggio. A questo punto non mi interessa la sicurezza. Il bootstrapper non dovrebbe richiedere alcun comando di terze parti non standard. Sarebbe bello se non ci fosse bisogno di essere root.

Ecco perché fakechroot (1) fakeroot (1) chroot (1) non è esattamente quello che sto cercando.

È possibile falsificare / utilizzare unshare (1) e / bin / sh?


AFAICS, unshare(1)è un wrapper piuttosto sottile attorno a una raccolta di chiamate di sistema solo root e (almeno su Fedora 18) non è SUID, quindi dubito molto che funzionerà per utenti non root.
vonbrand,

Oh, questo è un vero peccato. Avevo l'impressione che unshare sia setuid. Immagino di stare bene con l'essere root.
Rooties,

4
Con il rilascio del nuovo kernel Linux 3.8, è possibile utilizzare le funzionalità dello spazio dei nomi come non root. Ma questa è roba nuova e brillante: devi prima avere uno spazio dei nomi uid e unshare non lo supporta ancora. E le tue azioni saranno ancora limitate.
BatchyX,

Risposte:


5

Sì. Se il tuo kernel supporta user_namespaces (e sono abilitati) , puoi prima "simulare l'utente root", che poi ottiene il diritto di invocare chroot(come un vero utente root). (Che in precedenza aveva bisogno di essere limitato solo all'utente root a causa della possibilità di escalation di privilegi da parte di un utente normale (ad esempio, tramite i binari set-UID-root e le librerie personalizzate nella directory chroot).)

Puoi provare questo nella tua shell:

unshare --user --map-root-user --mount-proc --pid --fork
/sbin/chroot ......
su - user1

opzione non riconosciuta '--map-root-user'
Zibri

1
@Zibri Funziona per me adesso, con unshareda util-linux-2.30.2-alt1
imz - Ivan Zakharyaschev,

1

Basta raggruppare o installare fakeroot / fakechroot, poiché sono già perfettamente appropriati per questo. Guarda cdebootstrap per l'ispirazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.