Eliminé el archivo "/ etc / passwd" y no puedo iniciar sesión

22

Estaba tratando de cambiar mi nombre de usuario y también mi directorio de inicio ( /home/username) y mi sistema comenzó a fallar. Eliminé el passwdarchivo pero tenía una copia de seguridad llamada passwd_bkp. Traté de cambiar el nombre de esto passwd_bkpcomo passwdy no funcionó. No se estaban ejecutando comandos ... Estaba en una ventana de terminal.

Reinicié mi sistema y ahora no puedo iniciar sesión. GRUB ofrece dos opciones: Linux y modo de recuperación.

Traté de abrir una sesión como root pero dice que el sistema de archivos está dañado. No puedo acceder a mis archivos.

¿Perdí todos mis archivos?

joao rodrigo leao
fuente
1
A su pregunta de seguimiento: Reemplace su contraseña, utilizando la técnica de recuperación. Ver: askubuntu.com/questions/24006/…
david6
1
@ david6 Cuando un usuario no puede iniciar sesión porque no hay /etc/passwdarchivo , tampoco es posible restablecer la contraseña. Tiene que restaurar (o volver a crear) el passwdarchivo. Y una vez hecho esto, generalmente no hay necesidad de restablecer la contraseña.
Eliah Kagan
@Eliah Kagan: De acuerdo, pero estaba respondiendo la pregunta de seguimiento, después de que / etc / passwd fue (supuestamente) restaurado de la copia de seguridad.
david6
Deberá ser más específico sobre el error.
psusi

Respuestas:

32

No, dada su descripción, no perdió ninguno de sus archivos (excepto /etc/passwd, que eliminó, pero que hizo una copia de seguridad).

Arranque un CD / DVD en vivo de Ubuntu o una unidad flash USB en vivo. Seleccionar Try Ubuntu(noInstall Ubuntu ). Cuando se carga el escritorio, abra una ventana de Nautilus (explorador de archivos). Puede encontrar la partición para su sistema Ubuntu en Devices. Haga clic en él para montarlo.

Ahora puede restaurar la copia de seguridad. Sin embargo, debes hacerlo como root. Aquí hay una manera bastante fácil de hacerlo.

  1. Abra una ventana de Terminal ( Ctrl+ Alt+ T). En la Terminal, escriba cdy escriba la Spacetecla, pero no presioneEnter todavía.

  2. En Nautilus, busque el etcdirectorio dentro del sistema Ubuntu instalado. (Esto no es lo mismo que el etcdirectorio para el CD en vivo.etc directorio dentro del sistema Ubuntu instalado está en la partición que acaba de montar).

  3. Arrastre este etcdirectorio a la Terminal, que pegará su ruta completa en la Terminal, completando elcd ... comando.

  4. Presione Enterpara ejecutar el comando. Ahora estás en el directorio que contenía tu passwdarchivo. Supongo que su archivo de copia de seguridad passwd_bkptambién se encuentra aquí.

  5. Ejecute este comando:

    sudo cp passwd_bkp passwd
    

Eso restaura el passwdarchivo de su copia de seguridad, por lo que ahora debería poder reiniciar, quitar el CD / DVD o unidad flash USB y reiniciar en su sistema Ubuntu instalado. Su sistema Ubuntu instalado debería funcionar nuevamente.


Para el futuro, debe tener en cuenta que no se recomienda editar manualmente /etc/passwd, /etc/group, /etc/shadow, o /etc/gshadow. En su lugar, debe usar las utilidades proporcionadas como parte de Ubuntu para realizar los cambios que necesite en los usuarios y grupos de su sistema. Probablemente sepa que puede editar esto en Configuración del sistema o con users-admin. Pero también hay utilidades de línea de comandos muy potentes para esto, que son mucho más seguras y fáciles que editar los archivos de configuración manualmente. Aquí hay documentación sobre las utilidades más relevantes en Ubuntu:

Puede cambiar su nombre de usuario con algunas de esas utilidades. Esta respuesta explica una forma en detalle. Sin embargo, debe tener en cuenta (como se menciona actualmente en un comentario allí) que algunas aplicaciones suponen que su nombre de usuario sigue siendo el mismo. Por lo tanto, cambiar su nombre de usuario puede causar algunos problemas.

Eliah Kagan
fuente
Muchas gracias. Son las cuatro de la mañana aquí en el sur de Brasil ... Estaba tan preocupado que no podía dormir. Lo intentaré ...
joao rodrigo leao
2
Si no realizó una copia de seguridad, intente usar /etc/passwd-o /var/backups/passwd.bak. Asegúrese de establecer los permisos correctos. Ejemplo:sudo install -m644 /etc/passwd- /etc/passwd
Lekensteyn
4

Como alternativa al arranque de un livecd, puede presionar een el menú de grub para editar la entrada del modo de rescate y agregar init=/bin/sha los argumentos del núcleo. Esto lo llevará directamente a un shell raíz donde puede copiar el archivo de copia de seguridad al original después de volver a montar el sistema de archivos de lectura-escritura con mount -o remount,rw /.

psusi
fuente
1
¿Estás seguro de que esto funcionará? Sin /etc/passwd, no hay ningún usuario llamado root, y ningún usuario con uid = 0 . ¿Las utilidades necesarias funcionarán necesariamente en esas condiciones inusuales?
Eliah Kagan
1
@EliahKagan, siempre hay un usuario con uid = 0 ya que ese es el uid con el que el núcleo inicia el primer proceso. cpo mvno necesita / etc / passwd.
psusi
esto salvó mi trasero tonto! i edición manual en / etc / shadow con respecto a cosas de crontab. No sabía que uno no se mete con 'shadow' ... pensé que estaba jodido, pero gracias a Dios por @psusi ... Edité el menú de grub para recuperación agregado / bin / sh como dijo , siguió a su montura y acaba de copiar el sombreado de / var / copias de seguridad sobre el corrupto en / etc ... Bueno como nuevo ... gracias
rowntreerob
2

Primero debe leer la respuesta de Eliah Kagan, antes de continuar leyendo esta respuesta. Explica cómo lidiar con la situación y por qué generalmente no es necesario cambiar / etc / passwd manualmente.

De todos modos, si realmente sabe lo que está haciendo y necesita editar /etc/passwdmanualmente , puede hacerlo, pero aún así no debe simplemente cambiar los archivos con su editor favorito. En cambio está la herramienta

vipw

De las páginas del 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 ejemplo, si desea cambiar el UID de un usuario, hasta donde yo sé, para editar los archivos manualmente, es la única forma. Además, si desea cambiar la contraseña de un usuario y luego volver a la anterior sin saberlo, no hay forma de usermodhacerlo. Pero si guarda la contraseña hash del archivo shadow, cambie la contraseña del usuario y luego puede agregar la contraseña hash nuevamente editando el archivo shadow vipw -s.

lumbric
fuente
1

Después de seguir la respuesta de @ EliahKagan no pude iniciar sesión lightdmy mi cuenta no estaba en la lista. Descubrí que el permiso del passwdarchivo no estaba configurado correctamente; El usuario lightdm no tenía acceso a él. Así es como lo arreglé:

Inicie sesión en un tty Ctrl+ Alt+F1

cambiar al /etcdirectorio

cd /etc

Luego cambie los permisos a 644

sudo chmod 644 passwd

Entonces hazlo ls -la

la cadena de permiso debería verse así

-rw-r--r--
danidee
fuente
-1

Si puede iniciar sesión, simplemente abra la terminal y pruebe esto:

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

Más

Arranque en modo de recuperación o desde Ubuntu live Cd. Luego, monte su viejo disco:

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

luego reiniciar. Eso no establecerá passwd para root.

Luego, puede iniciar sesión, volver a crear todas sus cuentas, etc.

También puede usar la copia de seguridad que se llama (creo) /etc/passwd-

Editar : (otro método que no he probado antes pero creo que debería funcionar también)

  • Inicie GRUB en el arranque (presione Escmientras arranca)
  • Presione esobre (modo de recuperación)
  • Presione esobre la línea que comienza con el núcleo
  • Presiona Spacey entrainit=/bin/bash
  • prensa Enter
  • prensa b
  • En el símbolo del sistema, escriba: cp /etc/passwd- /etc/passwd
  • Reiniciar a GRUB nuevamente
  • Presione esobre (modo de recuperación)
  • Presione esobre la línea que comienza con el núcleo
  • Presiona Spacey entrainit=/bin/bash
  • prensa Enter
  • prensa b
  • En el símbolo del sistema, escriba mount -o remount,rw /
  • Escriba passwd YOURUSERNAMEHERE(si no conoce su nombre de usuario, escribals /home (que es una L minúscula y una S minúscula) para una lista de usuarios)
  • Ingrese la nueva contraseña cuando se le solicite
  • Reiniciar a arranque normal.

Fuente

Maythux
fuente