Cometí el mismo error al agregar mi cuenta a un grupo (olvidé la -a
). Tenía mi sistema instalado con el inicio de sesión raíz bloqueado, y mi cuenta era la única en la máquina.
La respuesta aceptada no me ayudó. Mientras arrancaba en modo de recuperación, todo lo que recibí fue un mensaje inútil
No se puede abrir el acceso a la consola, la cuenta raíz está bloqueada. Consulte la página del comando man sulogin (8) para obtener más detalles.
Presione ENTER para continuar
Después de presionar ENTER, el sistema arranca normalmente: no hay suerte de obtener acceso de root para solucionar el problema. Dejo esta respuesta en caso de que alguien termine en mis zapatos en este punto. Use lo siguiente solo si no puede acceder al modo de recuperación a través del menú Grub .
Un tutorial para obtener el shell raíz:
- Inicie en el menú de Grub y resalte (¡pero no presione Enter!) La opción de inicio normal (¡por defecto, no una recuperación!).
- Presione
e
. Grub mostrará un editor de línea de comandos con varias líneas, cada una de las cuales puede parecer desconocida si no intimidante. No se preocupe, los cambios que realice no se guardan de forma permanente.
- Encuentra la línea que lee
linux ... ro ...
. Esta es la línea de comando del núcleo. Vuelva a colocar la ro
prenda con rw
, para hacer que el sistema de ficheros raíz de lectura / escritura, y añadir otro parámetro de línea de comandos del kernel, init=/bin/sh
. Esto le indica al núcleo que se ejecute en sh
lugar de /sbin/init
. Al final, la línea debería verse así linux ... rw init=/bin/sh ...
. Nota: Puede sobrevivir incluso con el simple grub>
aviso. Estaré encantado de explicar cómo, paso a paso, si todo lo demás falla para usted; solo deja un comentario a esta respuesta.
- Después del cambio, presione F10para usar los comandos del editor para iniciar el sistema (o lea las instrucciones sobre cómo iniciar justo debajo de la ventana del editor, si su Grub está compilado de manera diferente). Obtendrá el indicador de shell raíz, ya que el proceso de inicio se ejecuta como PID 1 con la identidad raíz.
- Realice el cambio que desea realizar, por ejemplo
usermod -a -Gadm,sudo YOURUSERID
. Confirme con id -a YOURUSERID
que ha recuperado su membresía sudo. En caso de que aparezca el error "comando no encontrado", use /sbin/usermod
y /bin/id
.
No puede apagar o reiniciar el sistema limpiamente en este momento. reboot
, halt
o poweroff
no funcionará, y exit
desde el shell dará lugar a un kernel panic, ya que no se espera que el proceso PID 1 simplemente salga. Entonces, los siguientes dos comandos que debe emitir son:
sync
exec /sbin/init
sync
en caso de que algo salga mal, para guardar todos los cambios en el disco y exec
reemplazar el shell con el real init
(que puede ser systemd, upstart o System V init, pero siempre se llama /sbin/init
). Lo más probable es que el sistema continúe arrancando normalmente (sin modo de recuperación).
- Inicie sesión y reinicie el sistema una vez, por ejemplo,
sudo reboot
debería haber recuperado su privilegio de sudo. Se recomienda reiniciar, ya que (aunque muy raramente) init
se pueden pasar parámetros adicionales durante un arranque normal, y eso no lo hicimos. En caso de que exec
falle, simplemente reinicie la máquina y deje que arranque normalmente. Todos los sistemas de archivos de diario modernos como ext4, xfs y btrfs se recuperan rápidamente (unos segundos para una verificación de diario como máximo, si se sync
editan antes del reinicio), y estará listo.
Un poco de trasfondo
Hubo una discusión sobre el informe de errores de Debian sobre este mismo problema, y, hasta donde sé, se decidió que era una característica y no un error, que considero que fue un error. Después de haber estado en este negocio durante 25 años, no puedo evitar estar totalmente en desacuerdo con el argumento de Michael Biebl en el mensaje # 31 en ese hilo:
Considere esto: tiene una computadora portátil con una cuenta raíz bloqueada. Por defecto, el cargador de arranque de grub genera una entrada de arranque para el modo de rescate. Por lo tanto, incluso si bloquea la BIOS para no permitir el arranque desde CD-Rom o USB, y protege la contraseña de grub, alguien podría acceder fácilmente a la raíz si deja la computadora portátil desatendida por un momento.
La objeción correcta, IMO, si no lo suficientemente general, fue dada en el mensaje # 70 por Felipe Sateler:
Para muchas (¿la mayoría?) Computadoras, el acceso físico significa que el juego se pierde en términos de seguridad, ya que puede simplemente desmontar la caja y obtener el disco duro.
Esto es cierto especialmente para la computadora portátil, mencionada en el argumento de Michael: si la deja desatendida por un momento, y alguien está detrás de sus datos, la computadora portátil simplemente desaparecerá para nunca volver a ser vista. Y para cualquier máquina, no "muchos" o "la mayoría", incluso aquellos atornillados a 8 puntos en un estante, tan pronto como el atacante tenga acceso físico a la máquina, el juego realmente ha terminado.