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?
chroot
not-root-user
namespace
unshare
Rooties
fonte
fonte
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.Respostas:
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:
fonte
unshare
a partir util-linux-2.30.2-alt1Basta agrupar ou instalar o fakeroot / fakechroot, pois eles já são perfeitamente apropriados para isso. Veja cdebootstrap em busca de inspiração.
fonte