¿Cómo soluciono un archivo /etc/sudoers no válido si el acceso raíz está deshabilitado?

¿Cómo soluciono un archivo /etc/sudoers no válido si el acceso raíz está deshabilitado?

Esto pertenece a mi Raspberry Pi, en la que tengo instalado Raspbmc. Me doy cuenta de que hay un sitio Raspberry Pi StackExchange, pero pensé que podría tener más atención sobre este problema aquí.

El problema es que modifiqué /etc/sudoersen un intento de otorgar NOPASSWDpermisos a uno de los usuarios, pero supongo que en algún momento modifiqué el archivo y ahora recibo el siguiente error cada vez que inicio sesión/intento usarlo sudo:

sudo: parse error in /etc/sudoers near line 19
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

Encontré publicaciones similares enubuntuasí comoDesbordamiento de pila, pero el problema es que todas las respuestas requieren una contraseña de root, y elLa cuenta raíz está deshabilitada de forma predeterminada en Raspbmc., y obviamente no lo había habilitado antes de intentar cambiarlo /etc/sudoers.

Entonces mi pregunta es: ¿cómo soluciono el archivo si no tengo habilitado el acceso root? ¿Es siquiera posible?

Respuesta1

Aún deberías poder iniciar el Pi en modo de usuario único para obtener acceso a la raíz.

Usando otra computadora, modifique cmdline.txty agregue singleal final de la línea.
Luego, cuando inicie el Pi desde la tarjeta SD, debería volcarlo automáticamente a un indicador raíz que le permitirá actualizar./etc/sudoers

Respuesta2

Después de dos días de investigación y navegación por la web, finalmente encontré una solución y pude guardar mi propio sistema Raspberry Pi (¡sin tener que reformatear la tarjeta SD y comenzar desde cero!).

NOTA:Esta respuesta es bastante larga. Si desea llegar rápidamente a la solución real, agregué un encabezado al que puede desplazarse hacia abajo. Sin embargo, le recomiendo que lea la respuesta completa, ya que puede brindarle una idea de las diferencias entre la distribución Raspbian y otras distribuciones de Linux, así como también aclarar por qué muchas de las soluciones sugeridas que encuentra en Internet pueden no funcionar en su Pi. .

Normalmente, en un entorno Linux, la forma más rápida de reparar el sudo roto sin siquiera tener que reiniciar es usando PolicyKit o el pkexeccomando -como este:

pkexec visudo

Pero en Pi lo más probable es que no funcione, solicitará la contraseña de root, pero no se acepta ninguna contraseña. (Quiero decir, ¿recuerdas siquiera haber configurado una contraseña de root? Espera, ¿lo recuerdas? Luego salta al asterisco*).

Algunas distribuciones de Linux, por ejemplo Ubuntu, vienen con un modo de recuperación al que se puede acceder manteniendo presionada la tecla Mayús durante el inicio y ofrece una interfaz fácil de usar y permite ingresar a un indicador de shell raíz donde se puede acceder. arreglar los archivos rotos. La distribución Raspbian Linux de Pi no viene con ese tipo de modo de recuperación, por lo que esa solución no es una solución para nosotros. Sin embargo, el Pi le solicita durante el arranque que mantenga presionada la tecla Mayús para ingresar a algún tipo de modo de recuperación y al ingresar al modo de recuperación del Pi o al cuadro de diálogo NOOBS seguramente estamos en el camino correcto hacia la reparación del sudo roto en nuestro Pi.

Otra forma común de reparar sudo es iniciando en modo de usuario único, lo que le lleva a un indicador de shell raíz. La forma de hacerlo es agregando la palabra singleal final del cmdline.txtarchivo -en la partición de arranque del sistema. La próxima vez que su sistema se inicie, lo hará en modo de usuario único.

Podemos probar fácilmente esta solución en nuestro Pi porque, convenientemente, el modo de recuperación del Pi o el cuadro de diálogo NOOBS nos permiten editar el cmdline.txtarchivo. En el modo de recuperación o en el cuadro de diálogo NOOBS, al presionar el ícono "Editar configuración", abre un editor que le permite editar dos archivos, uno de los cuales es cmdline.txt. Al presionar "Aceptar" en el editor se guardan los cambios.

Desafortunadamente, cuando inicias en modo de usuario único o "modo de rescate" en el Pi, lo más probable es que recibas el siguiente mensaje:

Cannot open access to console, the root account is locked.
See sulogin(8) man page for more details.

Press Enter to continue.

Esto, además de por qué la solicitud de contraseña de root mencionada anteriormente no aceptó ninguna contraseña, se debe a que Raspbian, de forma predeterminada, no tiene ninguna contraseña establecida para la cuenta de root. Esto no debe confundirse con una contraseña que no es nada o que no sería necesaria. Raspbian, al igual que un puñado de otras distribuciones de Linux (por ejemplo, Debian, de la cual Raspbian es un derivado), espera que el usuario opere como root a través de sudo y no a través de la cuenta en sí. Por lo tanto, la cuenta raíz se encuentra en el estado de "bloqueo" que estamos experimentando.

*Si configura la contraseña de root usted mismo, por ejemplo mediante el comando sudo passwd root, entonces debería poder usar el pkexeccomando -e iniciar en modo de usuario único. Tenga en cuenta que cuando hace esto, necesita usar sudo, por lo que obviamente esta no es una solución una vez que se rompe sudo, pero lo señalo porque probablemente es por eso que algunas personas tuvieron éxito en arreglar sus Pi al aplicar las soluciones que sugieren pkexec: comando o modo de usuario único. En algún momento, estas personas habían establecido manualmente una contraseña de root, desbloqueando la cuenta de root de su sistema.

La solución

Esta publicación de blogexplica cómo hacer lo que tenemos que hacer. Los pasos son casi idénticos a los que tomamos al intentar reparar sudo en el modo de usuario único. No tienes que hacer todas las cosas engorrosas que menciona la publicación del blog para editar el cmdline.txtarchivo, simplemente hazlo en el cuadro de diálogo NOOBS. La clave es agregar init=/bin/shal final del cmdline.txtarchivo. Con ese fragmento agregado, la próxima vez que inicie su Pi, se lo colocará en un indicador de shell raíz.

Inicialmente, el sistema de archivos se cargará en modo de solo lectura, por lo que antes de poder editar algo, deberá volver a montar la partición raíz en modo de lectura y escritura ejecutando el siguiente comando:

mount -o remount,rw /dev/mmcblk0p2 /

Ahora debería estar en un indicador de shell raíz, donde puede editar libremente cualquier archivo, incluidos los archivos sudo rotos.

Respuesta3

La solución más sencilla es iniciar otro sistema operativo en un LiveDVD o LiveUSB (idealmente un LiveUSB e idealmente un sistema operativo Linux), luego montar el disco y cambiar manualmente el archivo. He hecho cosas similares antes y lo solucioné de esta manera. Todos sus archivos serán visibles y editables desde el sistema Live. A menos que haya cifrado la unidad; eso complica un poco las cosas.

Déjame saber si tienes preguntas y editaré esta respuesta. No estoy seguro de qué tan cómodo te sentirás configurando un USB en vivo, pero no es muy difícil.

información relacionada