O Raspbian por padrão está configurado para que a conta raiz não possa ser conectada usando uma senha. Isso é feito começando com uma entrada na /etc/password
qual começa:
root:x:0:0:
Os campos são separados por dois pontos e explicados em man 5 passwd
(observe que 5
, uma vez man passwd
que você fornecerá a página de manual do comando passwd
; a seção 5 é para arquivos de configuração e, nesse caso, eles têm o mesmo nome). Aqui o primeiro é o nome ( root
), o terceiro e o quarto são os uid e gid numéricos (ambos 0
), e o segundo é para a senha. Para a maioria das entradas, isso x
indica que a senha real está em outro arquivo /etc/shadow
,.
Observe que "a senha real" não é realmente armazenada em nenhum lugar. O que está armazenado shadow
é um hash unidirecional da senha real. Um hash unidirecional é o resultado de um processo que sempre produzirá a mesma coisa (permitindo que sua senha seja verificada), mas é irreversível. Em outras palavras, se alguém shadow
colocar as mãos em prática , não há como deduzir a senha do hash. No entanto, se eles podem modificar shadow
, obviamente eles podem desativar ou alterar o que funcionará como uma senha. Mas eles nunca serão capazes de descobrir suas senhas. É por isso que nem mesmo é root
possível fazer isso (embora o root sempre possa alterá-los para outra coisa sem precisar do original).
No caso do root, a entrada in shadow
começa assim, assim como na maioria das outras contas do sistema:
root:*:
O *
indica que atualmente não existe uma senha possível que possa ser usada para esta conta.
O usuário root pode alterar isso, no entanto, usando o passwd
comando para definir uma nova senha, que substituirá a *
pelo hash mencionado anteriormente (eles sempre começam $n$
onde n
há algum valor aleatório usado como "salt" para o hash, mas você não precisa entender isso).
De qualquer forma, quando eu configuro um cartão a partir de uma imagem nova, a primeira coisa que faço é entrar /etc/passwd
e remover a x
entrada do root, então começa:
root::0:0
Observe que agora não há segundo campo. Isso significa que não há senha e tudo que você precisa fazer é digitar root
em um prompt de login e você está logado como root
. Você pode usar passwd
para definir um.
Portanto, você tem duas opções aqui, mas ambas exigem que você retire o cartão do pi e acesse a segunda partição de outro sistema (que pode ler / gravar partições ext4).
Restaurar sudoers
. Se você tem uma imagem de referência, é fácil, basta recolocá-la do jeito que estava, substituindo-a. Caso contrário, é a opção mais complicada, pois você deve saber o que está fazendo (e seu histórico sudoers
não é tão bom ...).
Edite /etc/passwd
e remova-o x
conforme descrito acima, coloque o cartão novamente, efetue login como root
, crie uma senha. Obviamente, você ainda precisará corrigir sudoers
, mas a tentativa e o erro serão facilitados, pois, se você for realmente root
, sempre poderá acessá-lo.
Se você não possui um sistema que pode acessar sistemas de arquivos ext4 (um "CD ao vivo" do Debian é uma boa opção aqui), então você está preso. Você precisará atualizar novamente o cartão e começar de novo.