Después de renombrar accidentalmente / etc, ¿cómo cambio el nombre?

36

Estoy usando Ubuntu 18.04.

Cambié el nombre de la /etccarpeta a apache2. Ese fue mi mayor error

Ahora no puedo cambiarle el nombre porque necesito usarlo sudo, pero cuando lo intento aparece el error

sudo: unknown uid 1000

¿Como puedo solucionar este problema? No tengo un sistema en vivo desde el cual arrancar, y en modo de recuperación se abre el terminal raíz pero luego se cierra diciendo cannot open password database.

Mapache
fuente
17
Arranque desde un medio de instalación, seleccione "Probar Ubuntu", monte su sistema de archivos raíz /mnt, renombre, reinicie.
AlexP
¿Cómo arrancar un medio de instalación?
Mapache
@Zanna, shift no me mostró ningún menú. Tal vez otro botón puede abrirlo?
Mapache
@Zanna, Menú de recuperación -> root abre la terminal, pero dice que no se puede abrir la base de datos de contraseñas y se cierra
Racoon
@Zanna, no, no :(
Mapache

Respuestas:

62

Una forma fácil de solucionar problemas como este es a menudo arrancar desde un sistema en vivo, montar la partición raíz /mnt y luego cambiar el nombre del archivo.

Si no tiene un sistema en vivo o un medio para hacer uno, o no tiene acceso físico al sistema, pero puede reiniciar y obtener el menú GRUB, puede usar el editor GRUB para obtener un shell raíz y cambiar el nombre el archivo.

Reinicie o apague, encienda y, si normalmente no ve el menú de GRUB en el arranque, presione Shifto Escpara acceder al menú de GRUB.

Mueva el cursor hacia abajo a Opciones avanzadas para Ubuntu y presione enter, luego presione epara editar las opciones de arranque (solo una vez; los cambios aquí no serán permanentes, por lo que no tenemos que limpiar después).

Verá una pantalla que se parece a esto 1 :

captura de pantalla del editor de menús GRUB

Mueva el cursor hacia abajo a la línea que comienza con linuxy luego mueva el cursor al final de esa línea, o en cualquier lugar entre los parámetros de arranque del núcleo allí. Asegúrese de estar en la línea correcta y escriba cuidadosamente aquí, ya que el sistema puede fallar al arrancar sin estar /etcen su lugar.

Agregue el texto init=/bin/bashy presione F10para arrancar.

Esto iniciará el sistema con un shell Bash como init. Obtendrá un shell raíz y el sistema de archivos se montará solo lectura. 2 Para que el sistema de archivos se pueda escribir, ingrese el comando

mount -o remount,rw /

Ahora puede cambiar el nombre /etc(es posible que desee lsprimero)

mv /apache2 /etc

Ahora puede reiniciar o completar el inicio normalmente desde aquí haciendo que el shell raíz se reemplace con el sistema de inicio normal 3 :

exec systemd 

Probé este procedimiento en Ubuntu MATE 18.04.


1 Muchas gracias a Kulfy por obtener una captura de pantalla de buena calidad del editor GRUB de VirtualBox.
2 Aunque PATH no se puede establecer desde los archivos de configuración /etcen este escenario, Bash establecerá automáticamente uno .
3 Si exec systemdno funciona para usted, exec /sbin/initdebería hacer el truco. Si no, readlink -e /sbin/initdebe dar la ruta a cualquier programa init que se esté ejecutando, que luego puede execcon su ruta completa. Si no puede proceder de esta manera, simplemente ingrese reboot.

Zanna
fuente
44
Muy completo incluyendo captura de pantalla +1 :)
WinEunuuchs2Unix
3
@Kulfy muchas gracias! eso es maravilloso: DI no puede usar VB ya que no tengo suficiente RAM. Muy amable de su parte para ayudar a mejorar mi respuesta
Zanna
3
Creo que tomé la captura de pantalla demasiado grande: P ;-) y gracias por los créditos de captura de pantalla :)
Kulfy
1
@Racoon De nada, feliz de haberlo arreglado :)
Zanna
Intentando probarlo pero no funciona en Ubuntu 18.04.Desktop. Seguí las instrucciones al pie de la letra . No funciona. Después de que F10solo aparezcan algunas líneas y se detiene en la pantalla en blanco. ¿Puedes sugerirme algo?
Vijay
8

Si tiene un USB en vivo, debería poder iniciarlo y montar su sistema de archivos existente, luego cambiarle el nombre /etcdesde allí. Aquí hay un tutorial sobre cómo crear un USB en vivo en caso de que lo necesite.

Una vez iniciado en el USB en vivo (si usa una unidad Ubuntu 18.04), seleccione "Probar Ubuntu sin instalar" y esencialmente le dará una instancia completa de una instalación de Ubuntu que no persistirá después del apagado. Una vez arrancado, tiene algunas opciones:

Forma de línea de comando

Abre una terminal y corre lsblk. Busque el volumen que sería la unidad de su instalación original y observe qué número es (/ dev / sd #)

Luego, cree un punto de montaje para la unidad con mkdir -p /mnt/directory, luego monte la unidad con sudo mount /dev/sd# /mnt/directory. Navegue al directorio con cd /mnt/directoryy ahora debería estar en el directorio raíz de su instalación, pero ahora con un sudocomando de trabajo . ejecutar sudo mv apache2 etcy reiniciar en su sistema operativo hipotéticamente funcionando.

Forma gráfica

Abra la utilidad de discos buscando discos. Seleccione el volumen que se parece a su unidad de instalación y móntelo. Abra el administrador de archivos y seleccione el volumen montado, haga clic derecho en su /apache2carpeta y cámbiele el nombre /etc, luego reinicie.

Menta
fuente
La "forma gráfica" no funciona porque no existe la opción "Cambiar nombre" en Rt. hacer clic.
Vijay
1
@Vijay Eso es probable debido a los permisos de archivo, necesitará abrir el administrador de archivos como root para hacerlo gráficamente. Para hacer eso, ejecute el comando sudo nautilusdesde la terminal. (Ubuntu usa "nautilus" como administrador de archivos de la misma manera que Windows usa "explorer".)
AJMansfield
2
@AJMansfield, por supuesto, no importa en un sistema en vivo, pero en general deberíamos usar sudo -H nautiluspara evitar que root se convierta en el propietario de los archivos de configuración $HOME, lo que podría hacer que sean inaccesibles para los programas que se ejecutan como un usuario normal. Probablemente esté al tanto de esto, pero lo menciono para otros lectores.
Zanna
6
  1. Haga un USB de arranque como se muestra aquí.

  2. Arranque desde USB presionando la tecla como se muestra aquí.

  3. Descubra su partición del sistema de archivos ejecutando gparted. Supongamos que es sdxy.

  4. Ejecutar en terminal sudo mount /dev/sdxy /mnt

  5. Ejecutar en terminal sudo mv /mnt/apache2 /mnt/etc

  6. Verifique su sistema de archivos en / mnt para el cambio de nombre.

  7. Ejecutar en terminal sudo reboot

  8. Cuando se le solicite, retire el USB y presione Entrar

Vijay
fuente
@Kulfy lo intenté pero no funciona sin sudo. Ver aquí .
Vijay
Esto se debe a que sda2 se montó con sudo, por lo tanto, solo sudo puede realizar acciones. Pero si monta la unidad por nautilus (sin ningún permiso especial) puede realizar tareas sin sudo.
Kulfy
Lo comprobé `ubuntu @ ubuntu: ~ $ mount / dev / sda2 / mnt mount: solo root puede hacer eso ubuntu @ ubuntu: ~ $
Vijay
1
AFAIK el mountprograma es muy estricto y siempre debe ejecutarse como root; La única excepción a esto es cuando el sistema de archivos está en fstaby tiene la useropción. El programa udisksctlpermite a los usuarios normales montar dispositivos, por ejemplo udisksctl mount -b /dev/sda1(crea un punto de montaje adecuado /media/$USER/). No he probado el uso udisksctlde un sistema vivo, pero en un sistema vivo uno es siempre un usuario privilegiado capaz de correr sudosin contraseña para que no haya necesidad de los servicios públicos, como udisksctllos que son de otra manera tan útil
Zanna