Simuler chroot avec unshare

13

J'essaie d'écrire un programme d'amorçage pour une distribution Linux minimale à partir de la source.

Je voudrais construire dans un environnement de type chroot. Cela devrait simplifier l'emballage. Je ne me soucie pas de la sécurité à ce stade. Le programme d'amorçage ne doit nécessiter aucune commande tierce non standard. Ce serait formidable s'il n'était pas nécessaire d'être root non plus.

C'est pourquoi fakechroot (1) fakeroot (1) chroot (1) n'est pas exactement ce que je recherche.

Est-il possible de truquer / utiliser unshare (1) et / bin / sh?

Rooties
la source
AFAICS, unshare(1)est un wrapper plutôt mince autour d'une collection d'appels système root uniquement, et (au moins sur Fedora 18) ce n'est pas SUID, donc je doute fort que cela fonctionne pour les utilisateurs non root.
vonbrand
Oh quel dommage. J'avais l'impression que l'unshare est setuid. Je suppose que je suis bien d'être root.
Rooties
4
Avec la sortie du nouveau noyau Linux 3.8, vous pouvez utiliser les fonctionnalités d'espace de noms en tant que non root. Mais ce sont de nouvelles choses brillantes: vous avez d'abord besoin d'un espace de noms uid, et unshare ne le prend pas encore en charge. Et vos actions seront toujours limitées.
BatchyX

Réponses:

5

Oui. Si votre noyau prend en charge user_namespaces (et qu'ils sont activés) , vous pouvez d'abord "simuler l'utilisateur root", qui obtient ensuite le droit d'invoquer chroot(en tant que véritable utilisateur root). (Ce qui auparavant devait être limité uniquement à l'utilisateur root en raison d' une possibilité d'escalade de privilèges par un utilisateur normal (par exemple, via des binaires set-UID-root et des bibliothèques personnalisées dans le répertoire chroot).)

Vous pouvez essayer ceci dans votre shell:

unshare --user --map-root-user --mount-proc --pid --fork
/sbin/chroot ......
su - user1
imz - Ivan Zakharyaschev
la source
option non reconnue '--map-root-user'
Zibri
1
@Zibri Cela fonctionne pour moi maintenant, avec unsharede util-linux-2.30.2-alt1
imz - Ivan Zakharyaschev
1

Il suffit de regrouper ou d'installer fakeroot / fakechroot, car ils sont déjà parfaitement adaptés à cela. Regardez cdebootstrap pour l'inspiration.

Tobu
la source