systemd-nspawn O contêiner do sistema operacional está inutilizável porque não consigo definir a senha raiz

3

Combinei as instruções detalhadas da postagem no blog original, e quanto mais para datar as instruções da página man (usando dnf em vez de yum).

# sudo dnf -y --releasever=24 --installroot=$HOME/fedora-24 --disablerepo='*' --enablerepo=fedora --enablerepo=updates install systemd passwd dnf fedora-release vim-minimal

# sudo systemd-nspawn -D fedora-24
Spawning container fedora-24 on /home/alan-sysop/fedora-24
Press ^] three times within 1s to kill container.
-bash-4.3# passwd
Changing password for user root.
New password:
Retype new password:

Resultado:

passwd: Authentication token manipulation error

e um popup AVC, ou seja, erro SELinux. Ele diz que passwd não tem permissão para desvincular (substituir) /etc/passwd . Uma das sugestões do botão "Solucionar problemas" é que eu poderia atribuir o rótulo passwd_file_t a /etc/passwd .

O que há de errado, como posso corrigir isso?

    
por sourcejedi 08.09.2016 / 17:34

1 resposta

5

Por alguma razão, o dnf não configurou o rótulo "direito" do SELinux em / etc / passwd. Mas ele definiu um rótulo em / bin / passwd. Essa incompatibilidade é o que causa o problema. Mais explicações bem-vindas:).

$ ls -Z fedora-24/etc/passwd
unconfined_u:object_r:etc_t:s0 fedora-24/etc/passwd
$ ls -Z /etc/passwd
system_u:object_r:passwd_file_t:s0 /etc/passwd

$ ls -Z fedora-24/bin/passwd
system_u:object_r:passwd_exec_t:s0 fedora-24/bin/passwd
$ ls -Z /usr/bin/passwd
system_u:object_r:passwd_exec_t:s0 /usr/bin/passwd

A tentativa de executar restorecon -Rv / dentro do contêiner não faz nada. O libselinux IIRC detecta quando é executado em um contêiner e não fará nada.

Solução

Precisamos sair de fora do contêiner:

restorecon -Rv fedora-24/

Assegura que todos os rótulos do SELinux sejam redefinidos. (Para o valor esperado pelo host do contêiner, isto é, sem marcação). Então podemos definir a senha do root com sucesso.

    
por 08.09.2016 / 17:34