Disclaimer: questa domanda non è quella di risolvere il problema di cambiare la password di root mentre SELinux è attivo perché ci sono molte guide per risolverlo già. Questo è più di come SELinux lo fa internamente.
Sono un recente utente di SELinux ma ultimamente sono stato più in contatto con esso. C'è stato un momento in cui qualcuno mi ha chiesto come posso ripristinare la password di root in caso di dimenticarla.
Così ho avviato il mio CentOS, modificato la voce grub in qualcosa del genere
linux16 <kernel_location> root=/dev/mapper/centos-root rw init=/bin/bash
Ho corso passwd
e in seguito ho eseguito e sync
riavviato forzatamente. Dopo il riavvio, l'accesso con la nuova password è stato rifiutato e ovviamente con quello precedente.
Riavviato di nuovo e passato al kernel il parametro per disabilitare SELinux ( selinux=0
). Ho provato ad accedere con la nuova password e ha funzionato. Successivamente ho forzato una rietichettatura automatica fs (tramite il file .autorelabel
) e con SELinux attivo era ora possibile accedere.
La mia domanda è: perché succede? Perché la rietichettatura influisce sul login quando si verificava semplicemente un cambio di password e non di utenti o oggetti?
Grazie per l'attenzione.
TL; DR: il normale ripristino della password di root non funziona in SELinux. Perché?
Modifica: questo è stato testato su una macchina virtuale che esegue CentOS7 con KVM come hypervisor.