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.