OP e eu trabalhei com isso; veja comentários & chat para detalhes. Primeiro, para encontrar o processo e localização do problema, esta linha em /etc/init/mountall-shell.conf
/sbin/sulogin
foi alterado para
/usr/bin/ltrace -S -f -o /root/sulogin-ltrace.log /bin/sulogin
Trecho do log:
837 crypt("password", "x") = nil
837 strcmp(nil, "x" <no return ...>
837 --- SIGSEGV (Segmentation fault)
O log indica que o segfault ocorre no seguinte código em sulogin
, onde crypt
está retornando NULL.
if ((p = getpasswd(pwd->pw_passwd)) == NULL) break;
if (pwd->pw_passwd[0] == 0 ||
strcmp(crypt(p, pwd->pw_passwd), pwd->pw_passwd) == 0)
sushell(pwd);
A próxima pergunta é: o que está causando o crypt retornar NULL?
OP confirmou que a senha criptografada realmente era x
; a entrada de sombra para root foi root:x:16273:0:99999:7:::
. Em um arquivo Ubuntu 14.04, a senha criptografada do root é !
; OP mudou para x
há pouco e esta é a primeira vez desde então que ele teve que usar o modo single-user.
sulogin
tem sua própria interpretação de senhas criptografadas especiais. Se ele vir *
ou !
, ele permitirá que o usuário entre sem senha. Qualquer outra coisa, ele faz alguma verificação de validade, mas x
navega, mas crypt
não gosta (sal não é o suficiente?) E retorna NULL.
O OP enviará um relatório de bug para sysvinit-utils
; sulogin
deve manipular um retorno NULL de crypt
mais graciosamente.