Adicionando usuário ao ambiente chroot

4

Eu criei um sistema chroot no meu Ubuntu usando o schroot e o debrootstrap, baseado no ubuntu mínimo. No entanto, sempre que não consigo adicionar um novo usuário neste ambiente chroot. Aqui está o que acontece.

  1. Eu entro no schroot como root e adiciono um novo usuário. (Tentei os comandos adduser e useradd)
  2. O nome de usuário é listado no arquivo / etc / passwd e eu posso 'su' no novo usuário. Até aí tudo bem.
  3. Quando eu saio do schroot e re-enter schroot, o usuário que eu criei desapareceu !! Não há menção a esse usuário em / etc / passwd.

Como posso tornar o novo usuário permanente?

    
por Neo 30.01.2011 / 12:54

2 respostas

4

Oh, eu descobri isso sozinho. O Schroot tem um recurso chamado "sessões", onde o ambiente atual pode ser preservado. Toda vez que alguém efetua logout sem criar uma "sessão", o schroot traz tudo para o estado limpo e, portanto, exclui o usuário também. Pode-se iniciar uma sessão usando

schroot -c mychroot -b 
    
por 01.02.2011 / 15:23
2

Na verdade, há uma solução melhor, que eu achei FAQ do schroot , na seção Por que o schroot sobrescreve os arquivos de configuração no chroot?

By default, schroot copies over the system NSS databases ('passwd', 'shadow', 'group', 'gshadow', 'services', 'protocols', 'networks', and 'hosts', etc.) into the chroot. The reason for this is that the chroot environment is not a completely separate system, and it copying them over keeps them synchronised. However, this is not always desirable, particularly if installing a package in the chroot creates system users and groups which are not present on the host, since these will disappear next time the databases are copied over.

Resumindo: toda vez que você inicia uma nova sessão schroot, ou após a reinicialização do sistema host, o schroot pega /etc/passwd e alguns outros arquivos do sistema real e copia-os para o chroot, perdendo todos novos usuários a partir dele. A solução sugerida é descrita neste FAQ: você pode desativar a cópia destes arquivos:

  1. Abra /etc/schroot/default/nssdatabases (no seu sistema real, claro)
  2. Você verá as listas dos chamados bancos de dados NSS , que são copiados do sistema real.
  3. Linhas de comentário passwd , group e shadow , para que o arquivo tenha esta aparência:

/ etc / schroot / default / nssdatabases

# System databases to copy into the chroot from the host system.
#
# <database name>
#passwd
#shadow
#group
services
protocols
networks
hosts

Agora, se você voltar ao seu chroot e criar alguns usuários, ou instalar algum postgresql, os novos usuários não serão perdidos. Mesmo depois de reiniciar!

    
por 09.04.2013 / 09:31