Я потерял пароль root для гостевой системы.
Я смонтировал гостевую систему и перевел ее в однопользовательский режим. Затем я использовал virsh
консоль для доступа к гостевой системе, которая теперь была в однопользовательском режиме, и использовала команду echo "root":"123456" | chpasswd
сбросить пароль.
Однако после перезагрузки гостевой системы я не смог получить к ней доступ. Новый пароль был неверным (Login incorrect
). Однако, если я снова монтирую гостевую систему на хосте и вызываю chroot
, Я проверил, что новый пароль работает, переключившись на обычную учетную запись, а затем снова переключившись на root и ввел новый пароль.
И серверная, и гостевая версия ОС являются последней версией centos.
Вы опубликовали опровержение SELinux, в котором login
отказано в доступе для чтения /etc/passwd
. Глядя на запись журнала, я вижу, что у нее недопустимый контекст безопасности (это должно быть passwd_file_t
не file_t
; вы вручную редактировали этот файл?).
Я рекомендую вам исправить контекст безопасности на /etc/passwd
(и остальная часть системы на всякий случай).
Чтобы исправить недопустимые контексты безопасности, chroot
обратно в файловую систему, а затем запустите:
restorecon -r -v /
Если это не удается (например, потому что SELinux не работает в вашем chroot), тогда
touch /.autorelabel
и перезагрузите виртуальную машину, чтобы пометить ее при следующей перезагрузке.