Simular chroot con unshare


13

Estoy tratando de escribir un bootstrapper para una distribución mínima de linux de origen.

Me gustaría construir en un entorno similar a chroot. Esto debería simplificar el embalaje. No me importa la seguridad en este momento. El programa de arranque no debe requerir ningún comando de terceros no estándar. Sería genial si no hay necesidad de ser root, tampoco.

Es por eso que fakechroot (1) fakeroot (1) chroot (1) no es exactamente lo que estoy buscando.

¿Es posible falsificar / usar unshare (1) y / bin / sh?


AFAICS, unshare(1)es una envoltura bastante delgada en torno a una colección de llamadas de sistema solo de raíz, y (al menos en Fedora 18) no es SUID, por lo que dudo mucho que eso funcione para usuarios no root.
vonbrand

Oh, eso es una vergüenza. Tenía la impresión de que unshare es setuid. Supongo que estoy bien con ser root.
Rooties

44
Con el lanzamiento del nuevo kernel de Linux 3.8, puede usar las funciones de espacio de nombres como no root. Pero esto es algo nuevo y brillante: primero necesita un espacio de nombre uid, y unshare aún no lo admite. Y tus acciones seguirán siendo limitadas.
BatchyX

Respuestas:


5

Si. Si su núcleo admite espacios de nombres de usuario (y están habilitados) , primero puede "simular el usuario raíz", que luego obtiene el derecho de invocar chroot(como un usuario raíz real). (Lo que anteriormente solo debía restringirse al usuario raíz debido a la posibilidad de que un usuario normal escale los privilegios (por ejemplo, a través de binarios set-UID-root y bibliotecas personalizadas en el directorio chroot)).

Puedes probar esto en tu shell:

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

opción no reconocida '--map-root-user'
Zibri 05 de

1
@Zibri Funciona para mí ahora, la unsharede util-linux-2.30.2-alt 1
imz - Ivan Zakharyaschev

1

Simplemente agrupa o instala fakeroot / fakechroot, ya que son perfectamente apropiados para esto. Mira cdebootstrap para inspirarte.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.