chroot falha com --userspec quando o chroot é i686

6

Estou com um problema com chroot ...

Estou rodando no Arch Linux x86_64.

Eu tenho um chroot de 64 bits e um chroot de 32 bits. Eles são idênticos, exceto que um é de 32 bits e um é de 64 bits.

Eu posso inserir qualquer um deles usando chroot /path/to/chroot . Sem problemas.

Se eu quiser fazer isso como um usuário específico, o comando é:

chroot --userspec=user:group /path/to/chroot

Isso também funciona bem para o chroot de 64 bits. No entanto, ele falha para o chroot de 32 bits. Ele falha com status 125 e a mensagem chroot: invalid user

Além disso, fazer chroot --userspec=uid:gid /path/to/chroot funciona bem em chroots de 32 e 64 bits ( uid e gid são os IDs numéricos do usuário e grupo requeridos).

Não sei se estou fazendo algo errado. Existe alguém que tenha um chroot de 32 bits e possa ver se o acima pode ser reproduzido?

Todos os comandos são emitidos como root. O usuário e o grupo usado para o argumento userspec precisam ser definidos dentro do chroot.

Ou se eu estiver sentindo falta de algo, por favor, gostaria de saber onde estou indo errado.

Atualização: estou usando uma solução alternativa para esse problema. Supondo que $user tenha o user:group desejado (por exemplo, john:users ), eu faço isso:

u=$(echo $user | awk -F ":" '{print $1}')
g=$(echo $user | awk -F ":" '{print $2}')
uid=$(grep $u /opt/chroot32/etc/passwd | awk -F ":" '{print $3}')
gid=$(grep $g /opt/chroot32/etc/group  | awk -F ":" '{print $3}')
echo "Using $uid:$gid in place of $user"
chroot --userspec="$uid:$gid" /opt/chroot32

Isso funciona - ele procura o user:group desejado dentro dos arquivos passwd e group do chroot e então usa aqueles para o chroot. E a solução acima não é necessária ao acessar um chroot de 64 bits.

    
por starfry 01.05.2012 / 17:38

1 resposta

1

Você não pode inserir um chroot com um nome de usuário que não seja conhecido no ambiente chroot de destino. Copie todo o arquivo necessário para autenticação do usuário em cada chroot: /etc/passwd , /etc/shadow , /etc/nsswitch.conf e, eventualmente, todos os arquivos em /etc/pam.d/* . Eu

    
por 13.12.2012 / 11:47