Simule chroot com o compartilhamento


13

Estou tentando escrever um bootstrapper para uma distribuição linux mínima e de origem.

Eu gostaria de construir em um ambiente chroot. Isso deve simplificar a embalagem. Eu não me importo com segurança neste momento. O bootstrapper não deve exigir nenhum comando de terceiros não padrão. Seria ótimo se não houvesse necessidade de criar raiz também.

É por isso que fakechroot (1) fakeroot (1) chroot (1) não é exatamente o que estou procurando.

É possível falsificar / usar unshare (1) e / bin / sh?


O AFAICS, unshare(1)é um invólucro bastante fino em torno de uma coleção de chamadas de sistema somente para raiz e (pelo menos no Fedora 18) não é SUID, por isso duvido muito que isso funcione para usuários não-root.
22613 vonbrand

Que pena. Fiquei com a impressão de que o compartilhamento não está completo. Acho que estou bem por ser raiz.
Rooties

4
Com o lançamento do novo kernel Linux 3.8, você pode usar os recursos de namespace como não raiz. Mas isso é algo novo e brilhante: você precisa primeiro de um espaço de nome uid e o compartilhamento não suporta ainda. E suas ações ainda serão limitadas.
BatchyX

Respostas:


5

Sim. Se o seu kernel suportar user_namespaces (e eles estiverem ativados) , você poderá primeiro "simular o usuário root", o qual terá o direito de invocar chroot(como um usuário root real). (Que antes precisava ser restrito apenas ao usuário root devido à possibilidade de escalonamento de privilégios por um usuário normal (por exemplo, através de binários raiz set-UID e bibliotecas personalizadas no diretório chroot).)

Você pode tentar isso no seu shell:

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

opção não reconhecida '--map-root-user'
Zibri

1
@Zibri Ele trabalha para mim agora, com unsharea partir util-linux-2.30.2-alt1
IMZ - Ivan Zakharyaschev

1

Basta agrupar ou instalar o fakeroot / fakechroot, pois eles já são perfeitamente apropriados para isso. Veja cdebootstrap em busca de inspiração.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.