
Accidentalmente cometí un error en el sudoers
archivo y ahora no puedo arreglarlo porque si intento cambiar el archivo aparece un mensaje de permiso denegado. Si uso sudo
para abrir el archivo, dice error de sintaxis y no sudoers
se encontraron fuentes válidas y no ejecutaré el comando. Estoy en raspbian, una versión de Debian.
¿Alguien sabe cómo salir de este círculo vicioso?
Respuesta1
- Si conoce la
root
contraseña (y está configurada), puede usarlasu
para convertirseroot
y editarla/etc/sudoers
. - Si su sistema de archivos raíz está en una tarjeta SD, puede extraerlo y editarlo
/etc/sudoers
en una PC o en cualquier otro dispositivo, siempre que tenga un lector de tarjetas. - Puede ingresar a la línea de comando U-Boot (cargador de arranque) (generalmente presionando un botón en el teclado o mediante UART) y agregarlo
1
a la línea de comando del kernel de Linux para ingresar al modo de usuario único. En este modo podrásroot
y podrás editar/etc/sudoers
. Ver tambiéneste.
Respuesta2
Tendrás que iniciar en modo de usuario único.
https://serverfault.com/questions/482079/debian-boot-to-single-user-mode
Como usuario root, podrá editar el archivo sudoers para solucionarlo. Recomiendo ampliamente usar el visudo
comando para editar su archivo sudoers en el futuro, para evitar tener que volver a realizar esto, ya que visudo verifica la sintaxis del archivo antes de guardarlo.
Respuesta3
Si está en una instancia de la nube, tendrá un poco más de problemas.
Existen técnicas que dependen de la distribución, pero si ya tiene Docker instalado y ejecutándose, generalmente puede utilizar un contenedor Docker para solucionar el problema. Esto se debe a que, normalmente, el servicio Docker se ejecuta como root y cualquier cosa que se haga en un volumen montado dentro del contenedor se ve afectada como root en el host.
En anfitrión:
docker run --rm -ti -v /etc:/usr/local/etc busybox sh
"Busybox" es simplemente una pequeña distribución agradable que no tardará mucho en descargarse. Si ya tiene una imagen de Docker que tiene un shell disponible, simplemente úsela.
En el contenedor Docker:
cd /usr/local/etc
vi sudoers
Es posible que haya agregado un archivo incorrecto al /etc/sudoers.d/
directorio. En cuyo caso, probablemente simplemente elimine ese archivo.
Cuando salgas del contenedor, podrás sudo
volver a hacerlo.
¡Uf!