Eu apaguei o arquivo “/ etc / passwd” e não consigo entrar

22

Eu estava tentando alterar meu nome de usuário e também meu diretório pessoal ( /home/username) e meu sistema começou a falhar. Excluí o passwdarquivo, mas eu tinha um backup chamado passwd_bkp. Tentei renomear isso passwd_bkpcomo passwde não funcionou. Nenhum comando estava sendo executado ... Eu estava em uma janela de terminal.

Reiniciei meu sistema e agora não consigo efetuar login. O GRUB oferece duas opções: Linux e modo de recuperação.

Tentei abrir uma sessão como root, mas ele diz que o sistema de arquivos está corrompido. Não consigo acessar meus arquivos.

Perdi todos os meus arquivos?

joao rodrigo leao
fonte
1
Para sua pergunta de acompanhamento: Substitua sua senha, usando a técnica de recuperação. Veja: askubuntu.com/questions/24006/…
david6
1
@ david6 Quando um usuário não pode fazer o login porque não há /etc/passwdarquivo , também não é possível redefinir a senha. Você precisa restaurar (ou recriar) o passwdarquivo. E uma vez feito isso, geralmente não há necessidade de redefinir a senha.
Eliah Kagan
@Eliah Kagan: Concordo, mas eu estava respondendo à pergunta seguinte, depois que o / etc / passwd foi (supostamente) restaurado da cópia de backup.
David6 7/06
Você precisará ser mais específico sobre o erro.
Psusi 12/07/12

Respostas:

32

Não, dada sua descrição, você não perdeu nenhum dos seus arquivos (exceto os /etc/passwdque você excluiu, mas os quais fez backup).

Inicialize um CD / DVD ao vivo do Ubuntu ou uma unidade flash USB ao vivo. Selecione Try Ubuntu(não Install Ubuntu). Quando a área de trabalho for carregada, abra uma janela do Nautilus (navegador de arquivos). Você pode encontrar a partição para o seu sistema Ubuntu em Devices. Clique nele para montá-lo.

Agora você pode restaurar o backup. Você precisa fazer isso como root, no entanto. Aqui está uma maneira bastante fácil de fazer isso.

  1. Abra uma janela do Terminal ( Ctrl+ Alt+ T). No Terminal, digite cde digite a Spacetecla, mas não pressione Enterainda.

  2. No Nautilus, encontre o etcdiretório dentro do sistema Ubuntu instalado. (Não é o mesmo que o etcdiretório do CD ativo. O etcdiretório dentro do sistema Ubuntu instalado está na partição que você acabou de montar.)

  3. Arraste esse etcdiretório para o Terminal, que colará seu caminho completo no Terminal, concluindo o cd ...comando.

  4. Pressione Enterpara executar o comando. Agora você está no diretório que continha seu passwdarquivo. Estou assumindo que o seu arquivo de backup,, passwd_bkptambém está localizado aqui.

  5. Execute este comando:

    sudo cp passwd_bkp passwd
    

Isso restaura o passwdarquivo do seu backup, então agora você poderá reiniciar, remover a unidade flash CD / DVD ou USB e inicializar novamente no sistema Ubuntu instalado. Seu sistema Ubuntu instalado deve funcionar novamente.


Para o futuro, você deve estar ciente de que não é recomendado para editar manualmente /etc/passwd, /etc/group, /etc/shadow, ou /etc/gshadow. Em vez disso, você deve usar os utilitários fornecidos como parte do Ubuntu para fazer as alterações necessárias nos usuários e grupos no seu sistema. Você provavelmente está ciente de que pode editar isso nas Configurações do sistema ou com users-admin. Mas também existem utilitários de linha de comando muito poderosos para isso, que ainda são muito mais seguros e fáceis do que editar manualmente os arquivos de configuração. Aqui está a documentação dos utilitários mais relevantes no Ubuntu:

Você pode alterar seu nome de usuário com alguns desses utilitários. Esta resposta explica uma maneira em detalhes. No entanto, você deve estar ciente (como atualmente é comentado por um comentário) de que alguns aplicativos assumem que seu nome de usuário permanece o mesmo. Portanto, alterar seu nome de usuário pode causar alguns problemas.

Eliah Kagan
fonte
Muito obrigado. São quatro horas da manhã aqui no sul do Brasil ... Eu estava tão triste que não consegui dormir. Vou tentar que ...
João Rodrigo Leão
2
Se você não fez um backup, tente usar /etc/passwd-ou /var/backups/passwd.bak. Certifique-se de definir as permissões corretas. Exemplo:sudo install -m644 /etc/passwd- /etc/passwd
Lekensteyn
4

Como alternativa à inicialização de um livecd, você pode pressionar eno menu grub para editar a entrada do modo de recuperação e adicionar init=/bin/shaos argumentos do kernel. Isso o levará diretamente para um shell raiz, onde você poderá copiar o arquivo de backup de volta ao original após remontar a leitura / gravação do sistema de arquivos mount -o remount,rw /.

psusi
fonte
1
Tem certeza de que isso funcionará? Sem /etc/passwd, não há usuário chamado root nem usuário com uid = 0 . Os utilitários necessários funcionarão necessariamente sob essas condições incomuns?
Eliah Kagan 13/07/12
1
@EliahKagan, sempre há um usuário com uid = 0, pois esse é o uid com o qual o kernel inicia o primeiro processo. cpou mvnão precisa de / etc / passwd.
Psusi 13/07/12
isso salvou minha bunda burra! i edição manual no / etc / shadow sobre o material do crontab. Eu não sabia que não se brinca com 'shadow' .... Pensei que estava f ** ckd, mas graças a Deus por @psusi .... Editei o menu grub para recuperação adicionado / bin / sh como ele disse , seguido sua montaria e apenas shawdow copiados de / var / backups mais de um corrupto em / etc ... bom como novo .. obrigado
rowntreerob
2

Você deve ler primeiro a resposta de Eliah Kagan, antes de continuar lendo esta resposta. Ele explica como lidar com a situação e por que geralmente não é necessário alterar / etc / passwd manualmente.

De qualquer forma, se você realmente sabe o que está fazendo e precisa editar /etc/passwdmanualmente , pode fazê-lo, mas ainda assim não deve simplesmente alterar os arquivos com o seu editor favorito. Em vez disso, há a ferramenta

vipw

Nas páginas do manual:

The vipw and vigr commands edits the files /etc/passwd and /etc/group,
respectively. With the -s flag, they will edit the shadow versions of those
files, /etc/shadow and /etc/gshadow, respectively. The programs will set
the appropriate locks to prevent file corruption.

Por exemplo, se você deseja alterar o UID de um usuário, tanto quanto eu sei, editar os arquivos manualmente, é a única maneira. Além disso, se você quiser alterar a senha de um usuário e voltar à sua anterior sem saber, não há como usermodou não. Mas se você salvar a senha com hash do arquivo de sombra, altere a senha do usuário e poderá adicionar a senha de hash novamente, editando novamente o arquivo de sombra vipw -s.

lumbric
fonte
1

Depois de seguir a resposta de @ EliahKagan, não consegui acessar lightdme minha conta não estava listada. Descobri que a permissão do passwdarquivo não estava configurada corretamente; o usuário lightdm não teve acesso a ele. Aqui está como eu consertei :.

Faça login em um tty Ctrl+ Alt+F1

mude para o /etcdiretório

cd /etc

Em seguida, altere as permissões para 644

sudo chmod 644 passwd

Então faça ls -la

a string de permissão deve ficar assim

-rw-r--r--
danidee
fonte
-1

Se você pode fazer login, basta abrir o terminal e tentar o seguinte:

sudo cp /etc/passwd- /etc/passwd
sudo chmod 644 /etc/passwd

Outro

Inicialize no modo de recuperação ou no Ubuntu live Cd. Em seguida, monte sua unidade antiga:

mkdir /olddrive
mount /dev/hda5 /olddrive
assuming that your old drive is on /dev/hda5.
then, cd to /olddrive/etc
type:
echo "root::0:0:Superuser:/:/bin/bash" > passwd

depois reinicie. Isso não definirá senha para raiz.

Em seguida, você pode fazer login, criar todas as suas contas novamente etc.

Você também pode usar o backup que é chamado (eu acho) /etc/passwd-

Edit : (outro método que eu não tentei antes, mas acho que deve funcionar também)

  • Inicie o GRUB na inicialização (pressione Escdurante a inicialização)
  • Pressione para ecima (modo de recuperação)
  • Pressione esobre a linha que começa com o kernel
  • Pressione Spacee entreinit=/bin/bash
  • pressione Enter
  • pressione b
  • No prompt de comando, digite: cp /etc/passwd- /etc/passwd
  • Reinicie no GRUB novamente
  • Pressione para ecima (modo de recuperação)
  • Pressione esobre a linha que começa com o kernel
  • Pressione Spacee entreinit=/bin/bash
  • pressione Enter
  • pressione b
  • No prompt de comando, digite mount -o remount,rw /
  • Tipo passwd YOURUSERNAMEHERE(se você não souber o tipo de nome de usuário ls /home(L minúsculo e S minúsculo) para uma lista de usuários)
  • Digite a nova senha quando solicitado
  • Reinicie a inicialização normal.

Fonte

Maythux
fonte