¿Cómo edito un archivo sudoers no válido? Lanza el error a continuación y no me permite editar nuevamente para solucionarlo.
Esto es lo que pasa:
$ sudo visudo
>>> /etc/sudoers: syntax error near line 28 <<<
sudo: parse error in /etc/sudoers near line 28
sudo: no valid sudoers sources found, quitting
Respuestas:
En un sistema Ubuntu moderno (y muchas otras distribuciones de GNU / Linux), arreglar un
sudoers
archivo dañado es realmente bastante fácil y no requiere reiniciar, usar un CD en vivo o acceso físico a la máquina.Para hacer esto a través de SSH, inicie sesión en la máquina y ejecute el comando
pkexec visudo
. Si tiene acceso físico a la máquina, SSH es innecesario; simplemente abra una ventana de Terminal y ejecute esepkexec
comando.Suponiendo que usted (o algún otro usuario) está autorizado para ejecutar programas como
root
con PolicyKit, puede ingresar su contraseña, y luego se ejecutarávisudo
comoroot
, y puede corregir su/etc/sudoers
.Si necesita editar uno de los archivos de configuración
/etc/sudoers.d
(que no es común en esta situación, pero es posible), use .pkexec visudo -f /etc/sudoers.d/filename
Si tiene una situación relacionada en la que tiene que ejecutar comandos adicionales de administración del sistema como root para solucionar el problema (también poco común en esta circunstancia, pero común en otros), puede iniciar un shell raíz interactivo con
pkexec bash
. En términos generales, cualquier comando no gráfico con elsudo
que se ejecute puede ejecutarse en supkexec
lugar.(Si hay más de una cuenta de usuario en el sistema autorizada para ejecutar programas como
root
con PolicyKit, entonces, para cualquiera de esas acciones, se le pedirá que seleccione cuál desea usar, antes de solicitar su contraseña).Si eso no funciona, por ejemplo, si no hay usuarios autorizados para ejecutar programas como root a través de PolicyKit, inicie desde un CD en vivo de Ubuntu (como el CD que probablemente utilizó para instalar Ubuntu) y monte el sistema de archivos para el sistema instalado Puede hacerlo ejecutando
sudo parted -l
para ver sus particiones: probablemente solo haya una partición ext4, y ese es el sistema de archivos raíz.Supongamos que el sistema de archivos raíz del sistema Ubuntu instalado está en / dev / sda1. Entonces podrías montarlo con
sudo mount /dev/sda1 /mnt
. Luego puede editar el archivo sudoers del sistema instalado consudo nano -w /mnt/etc/sudoers
. O, mejor aún, puede editarlo con(que evitará que guarde un archivo sudoers con una sintaxis incorrecta).
fuente
#include
directivas en lossudoers
archivos son tratadas especialmente; el inicio#
no hace que el resto de la línea se interprete como un comentario, en ese caso. Comoman sudoers
dice: "El signo de número ('#') se usa para indicar un comentario (a menos que sea parte de una directiva #include o a menos que ..." Ver también visudo: #includedir sudoers.d (archivado de lzone.de/ blog ).pkexec visudo
solicita una contraseña, que no acepta la contraseña correcta. Lanza un error "FALLO DE AUTENTICACIÓN".Siempre use
visudo
para editar su archivo sudoers, nunca lo edite directamente usted mismo. Le impedirá guardarlo en el disco a menos que valide.fuente
Escribir:
Luego cambia la última línea
A:
debería resolver tu problema.
fuente
#
de#includedir
causa errores de sintaxis,#
es parte de la directiva, al menos en Ubuntu 12.10.si alguien como yo no tenía instalado pkexec , o no podía ejecutar vi, visudo, nano o cualquier otro editor para cambiar el archivo sudoers, puede estar seguro con este proceso. Me salvé con esto:
vuelva a montar el dispositivo de arranque para rw, aplique el derecho de ejecución para el usuario y edite el archivo
arregla ese error y sé feliz :)
fuente
visudo
lugarnano /etc/sudoers
.Si estropeó su
sudoers
archivo, necesitará:visudo
, arregla tu archivofuente: - http://mario.net.au/content/recover-etcsudoers-ubuntu-1204
fuente
No hay nada malo #include sudoer.d eliminar #include sudoer.d no hará ninguna diferencia.
Pero asegúrese de no tener errores de sintaxis. Tuve el mismo problema pero pasé horas arreglando y descubrí que son errores de sintaxis. Consulte el manual y corríjalos.
Por ejemplo, diga que su nombre de usuario es: dolly. Utilicé siguiente que está mal
la sintaxis correcta es
o
espero que esto ayude
fuente
visudo
al editar estos archivos, lo que asegura que no tenga errores de sintaxis antes de modificar el archivo.visudo
no es solo para editar/etc/sudoers
, también creará y editará archivos en/etc/sudoers.d
. También funcionará con el editor de texto que desee. Vea la página de manual para más detalles.thunderbird
, que nunca debería ejecutarse como root de todos modos) le dará al usuario acceso completo al sistema cuando se ejecute como root. Incluso la funcionalidad aparentemente simple abre la puerta al acceso completo a la raíz. Por ejemplo, un usuario que puede ejecutar un programa que puede guardar un archivo en una ubicación arbitraria como root puede obtener acceso completo a la raíz (puede instalar la suya propia/etc/sudoers
o, si las limitaciones de sintaxis lo impiden, pueden instalar la suya propia/etc/crontab
).ejecutar el modo de recuperación y luego escribir esto
solo el grupo y el usuario root deberían haber leído el privilegio
fuente
También puede iniciar sesión como root en una
tty
consola con Ctrl+ Fn( Fnde 1 a 6) y ejecutarvisudo
.fuente
También puede editar su entrada de arranque en grub.
Simplemente reinicie su PC y espere a que se muestre grub. Luego presione "e" en la entrada "Ubuntu" para editarlo.
Busque una línea con "linux =" o "kernel =" y simplemente agregue un "single" al final de esa línea.
Luego presione F10 para iniciar esta entrada de inicio modificada temporalmente. Esto le dará un shell (sin GUI) con derechos de root y puede editar el archivo sudoers con s.th. como nano / etc / sudoers de vuelta a su estado anterior.
Luego reinicie y listo.
fuente
luego revierte tus errores
fuente
visudo
tiene que ejecutarse como root. Sisudo
no funciona, apkexec
veces sí. Esto está cubierto por mi respuesta anterior ... pero es una respuesta correcta,visudo
por sí sola (cuando no se ejecuta como raíz) no funcionará, y puede tener valor en respuestas correctas y breves, incluso cuando sus recomendaciones se superponen considerablemente con otras respuestas. Por supuesto, si uno entra en modo de recuperación, ese es un shell de raíz y luegosudo
nivisudo
es necesario para comandos comopkexec
. Quizás eso es lo que quieres decir ...En Ubuntu 16.04 ejecutándose en un VirtualBox (no debería hacer una diferencia), los métodos anteriores no funcionaron para mí (fila no válida al final del archivo). Lo que funcionó fue:
su -
y luego la contraseña de su propio nombre de usuario.root@ubuntu-xenial:~#
mensaje, si/etc/sudoers
no está demasiado roto o vacío. No estoy seguro de lo que sucedería en ese caso.visudo
y corregir el archivo.Ctrl + X
y se le pedirá que guarde el búfer modificado. PresioneY
yEnter
En caso de que
/etc/sudoers
esté vacío o le falte algo, y pueda editarlo, aquí está el contenido mío:fuente
Buena práctica: una ventana de terminal de respaldo y ejecutar
sudo su
allí. En otro termianl ejecute visudo o sudo vim / etc / sudoers. Si algo sale mal, regrese al terminal uno y arregle el archivo. Usted puede preguntar, ¿por qué no simplemente ejecutarsudo su
antesvisudo
en una terminal? Esto también funciona, pero tiene un mayor riesgo de que cierre la terminal antes de darse cuenta.fuente
Hay una solución más simple. Sin reiniciar, modo de recuperación o
pkgexec
(pkgexec
no funcionó y no tengo idea de por qué o cómo debería usarlo), simplemente haga lo siguiente:¡Y luego simplemente corrija el error de sintaxis!
fuente