O que é o comando chroot usado para redefinir uma senha no RHEL / CentOS 7?

1

Estou tentando entender exatamente como os procedimentos de redefinição de senha funcionam no CentOS / RHEL 7 e estou perdendo algum conhecimento fundamental.

Em vários different exemplos Eu vejo que chroot /sysroot é necessário, mas não entendo por que ou o que esta etapa está especificamente fazendo. Exemplo de palavreado:

  • (Fonte A) "5 - Agora acesse o sistema com este comando."
  • (Fonte B) "BOOM. Você está no modo de usuário único. O prompt do shell! - tem a aparência de: / #
    digite chroot / sysroot "
  • (Source C) "então use o chroot para entrar em uma jaula chroot"

Basta dizer que esses procedimentos são um pouco escassos na explicação. :-( Alguém pode por favor elaborar um pouco mais?

    
por Mike B 30.12.2017 / 01:13

2 respostas

3

Você está falando sobre o procedimento para redefinir uma senha raiz perdida. Isso é necessário somente quando a senha do root é perdida e não há% de acesso root dosudo ou similar disponível.

Na inicialização, o carregador de inicialização (geralmente o GRUB) carrega 2 arquivos: o kernel e o arquivo initramfs (também conhecido como initrd). O arquivo initramfs contém um sistema de arquivos mínimo que inclui todas as ferramentas e módulos do kernel necessários para ativar o sistema de arquivos raiz real, seus controladores de disco e outros recursos necessários para ativá-lo (por exemplo, qualquer combinação de: LVM, criptografia de disco, multipathing e / ou software RAID).

A opção de inicialização rd.break informa à seqüência de inicialização para parar enquanto o sistema ainda está usando o initramfs, mas o sistema de arquivos raiz real já está montado em /sysroot . Normalmente, a próxima etapa seria uma operação pivot_root para alternar /sysroot em um sistema de arquivos raiz real, iniciar a execução de material de lá e, em seguida, remover o initramfs da memória.

Ao parar no initramfs, obtemos acesso ao shell de emergência. Mas o initramfs tem um número muito limitado de comandos disponíveis, e editar o arquivo /etc/passwd do initramfs não conseguiria nada, já que o initramfs inteiro é substituído pelo sistema de arquivos raiz real de qualquer maneira.

O sistema de arquivos raiz é inicialmente montado no modo somente leitura para permitir a verificação do sistema de arquivos. O primeiro passo é remontá-lo para leitura e gravação, para permitir que a mudança de senha seja mantida.

O comando chroot /sysroot significa: "inicie um novo shell de forma que, para esse shell, o diretório /sysroot apareça como / ." Dentro desse shell chrooted, /etc/passwd e /etc/shadow se referirão aos arquivos de senha reais no sistema de arquivos raiz real, e /bin/passwd será o mesmo comando que você usará quando o sistema estiver sendo executado normalmente. Como esse shell chrooted foi iniciado a partir do shell de emergência, você já tem acesso root completo, e você pode usar o comando passwd para definir uma nova senha para qualquer pessoa sem precisar primeiro do antigo - incluindo a configuração de uma nova senha root.

Quando o procedimento estiver completo, o primeiro comando exit sairá do shell chrooted e retornará ao shell de emergência inicial, que ainda vê o sistema de arquivos raiz real como /sysroot . O segundo comando exit retornará o controle para os scripts de inicialização, que geralmente acionam uma reinicialização sempre que o shell de emergência for usado.

Esse foi o tipo de explicação que você precisava?

    
por 30.12.2017 / 11:23
0

No modo de usuário único, o sistema de arquivos é montado em /sysroot , somente leitura (por padrão) ou no modo de leitura / gravação, se ro for substituído por rw init=/sysroot/bin/sh .

Agora, precisamos alterar o sistema de arquivos raiz para /sysroot usando chroot /sysroot antes de redefinir a senha do root.

Esta é documentação oficial do RedHAT sobre isso.

    
por 30.12.2017 / 01:25