Oświadczenie: To pytanie nie ma na celu rozwiązania problemu zmiany hasła roota, gdy SELinux jest aktywny, ponieważ istnieje wiele przewodników, aby to rozwiązać. Jest to bardziej sposób, w jaki SELinux robi to wewnętrznie.
Jestem niedawnym użytkownikiem SELinuksa, ale ostatnio miałem z nim więcej kontaktu. Był moment, kiedy ktoś zapytał mnie, jak mogę zresetować hasło roota w przypadku jego zapomnienia.
Uruchomiłem więc CentOS, zredagowałem wpis gruba do czegoś takiego
linux16 <kernel_location> root=/dev/mapper/centos-root rw init=/bin/bash
Pobiegłem, passwd
a potem pobiegłem sync
i wymusiłem ponowne uruchomienie. Po ponownym uruchomieniu logowanie przy użyciu nowego hasła zostało odrzucone, a także przy użyciu starego, oczywiście.
Zrestartowano ponownie i przekazano jądro parametr do wyłączenia SELinux ( selinux=0
). Próbowałem zalogować się przy użyciu nowego hasła i zadziałało. Następnie wymusiłem automatyczne ponowne etykietowanie fs (przez plik .autorelabel
), a przy aktywnym SELinux można było się zalogować.
Moje pytanie brzmi: dlaczego tak się dzieje? Dlaczego ponowne etykietowanie wpływa na logowanie, gdy nastąpiła jedynie zmiana hasła, a nie użytkowników lub obiektów?
Dziękuję za uwagę.
TL; DR: Zwykłe resetowanie hasła roota nie działa w SELinux. Dlaczego?
Edycja: Zostało to przetestowane na maszynie wirtualnej z systemem CentOS7 z KVM jako hypervisor.