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

20

Eu estava tentando mudar meu nome de usuário e também meu diretório pessoal ( /home/username ) e meu sistema começou a travar. Eu deletei o arquivo passwd , mas tive um backup chamado passwd_bkp . Tentei renomear este passwd_bkp como passwd e ele não funcionou. Nenhum comando estava sendo executado ... Eu estava em uma janela de terminal.

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

Eu tentei abrir uma sessão como root, mas ela diz que o sistema de arquivos está corrompido. Eu não posso acessar meus arquivos.

Eu perdi todos os meus arquivos?

    
por joao rodrigo leao 07.06.2012 / 07:52

5 respostas

32

Não, dada a sua descrição, você não perdeu nenhum dos seus arquivos (exceto /etc/passwd , que você excluiu, mas que você 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ê tem que fazer isso como root, no entanto. Aqui está uma maneira bem fácil de fazer isso.

  1. Abra uma janela de terminal ( Ctrl + Alt + T ). No Terminal, digite cd e digite a tecla Espaço , mas não pressione Enter ainda.

  2. No Nautilus, localize o diretório etc dentro do sistema Ubuntu instalado. (Este não é o mesmo que o diretório etc para o live CD. O diretório etc dentro do sistema Ubuntu instalado está na partição que você acabou de montar.)

  3. Arraste este diretório etc para o Terminal, que colará seu caminho completo no Terminal, preenchendo o comando cd ... .

  4. Pressione Enter para executar o comando. Agora você está no diretório que continha o arquivo passwd . Estou assumindo que seu arquivo de backup, passwd_bkp , também está localizado aqui.

  5. Execute este comando:

    sudo cp passwd_bkp passwd
    

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

Para o futuro, você deve estar ciente de que não é recomendável 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 aos usuários e grupos em 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 sobre os 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 detalhe. No entanto, você deve estar ciente (como é tocado atualmente por um comentário lá) que Algumas aplicações assumem que seu nome de usuário permanece o mesmo. Então, alterar seu nome de usuário pode causar alguns problemas.

    
por Eliah Kagan 07.06.2012 / 08:36
4

Como alternativa à inicialização de um livecd, você pode pressionar e no menu grub para editar a entrada do modo de recuperação, e adicionar init=/bin/sh aos argumentos do kernel. Isto irá levá-lo diretamente para um shell de root, onde você pode copiar o arquivo de backup de volta ao original depois de remontar o sistema de arquivos de leitura-gravação com mount -o remount,rw / .

    
por psusi 13.07.2012 / 01:38
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 o / etc / passwd manualmente.

De qualquer forma, se você realmente sabe o que está fazendo e precisa editar /etc/passwd manualmente , 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 man:

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ê quiser alterar um UID de usuários, tanto quanto eu sei, para editar os arquivos manualmente, é a única maneira. Além disso, se você quiser alterar a senha de um usuário e voltar ao anterior sem saber, não há como usermod ou algo assim. Mas se você salvar a senha com hash no arquivo shadow e depois alterar a senha do usuário, você poderá adicionar a senha com hash novamente editando o arquivo de sombra com vipw -s .

    
por lumbric 12.07.2012 / 22:37
1

Depois de seguir a resposta de @ EliahKagan, não pude fazer o login em lightdm e minha conta não estava listada. Descobri que a permissão do arquivo passwd não estava configurada corretamente; o usuário lightdm não tinha acesso a ele. Veja como eu consertei:.

Faça o login em uma + Alt + F1

mude para o diretório /etc

cd /etc

Em seguida, altere as permissões para 644

sudo chmod 644 passwd

Então, ls -la

a string de permissão deve ser semelhante a esta

-rw-r--r--
    
por danidee 07.03.2016 / 19:51
-1

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

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

Outra

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 irá definir passwd para root.

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

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

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

  • Inicie o GRUB na inicialização (pressione Esc ao inicializar)
  • Pressione e ao longo (modo de recuperação)
  • Pressione e pela linha que começa com o kernel
  • Pressione Espaço e digite init=/bin/bash
  • Pressione Enter
  • Pressione b
  • No prompt de comando, digite: cp /etc/passwd- /etc/passwd
  • Reinicie no GRUB novamente
  • Pressione e ao longo (modo de recuperação)
  • Pressione e pela linha que começa com o kernel
  • Pressione Espaço e digite init=/bin/bash
  • Pressione Enter
  • Pressione b
  • No prompt de comando, digite mount -o remount,rw /
  • Digite passwd YOURUSERNAMEHERE (se você não souber o seu nome de usuário, digite ls /home (que é um minúsculas L e minúsculas S) para uma lista de usuários)
  • Insira a nova senha no prompt
  • Reinicie para a inicialização normal.

Fonte

    
por Maythux 20.06.2015 / 13:53