¿Cómo modificar un archivo inválido '/ etc / sudoers'?

205

¿Cómo edito un archivo de sudoers no válido? Lanza el siguiente error y no me permite editar nuevamente para solucionarlo.

Esto es lo que sucede:

$ 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
    
pregunta YumYumYum 30.10.2011 - 20:15

12 respuestas

316

En un sistema Ubuntu moderno (y muchas otras distribuciones GNU / Linux), la reparación de un archivo corrupto sudoers es bastante fácil y no requiere reiniciarse, usar un CD en vivo o acceder físicamente a la máquina.

Para hacerlo 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; solo abra una ventana de Terminal y ejecute ese comando pkexec .

Suponiendo que usted (u otro usuario) está autorizado a ejecutar programas como root con PolicyKit, puede ingresar su contraseña, y luego se ejecutará visudo como root , y podrá corregir su /etc/sudoers .

Si necesita editar uno de los archivos de configuración en /etc/sudoers.d (que en situaciones poco comunes en esta situación, pero 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 raíz 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 general, cualquier comando no gráfico que ejecute con sudo se puede ejecutar con pkexec en su 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 que se le pregunte para su contraseña.)

Si eso no funciona, por ejemplo, si no hay usuarios autorizados para ejecutar programas como root a través de PolicyKit, arranque 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 hacer esto 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 con sudo nano -w /mnt/etc/sudoers . O, mejor aún, puede editarlo con

sudo visudo -f /mnt/etc/sudoers

(lo que le impedirá guardar un archivo sudoers con sintaxis incorrecta).

    
respondido por el Eliah Kagan 30.10.2011 - 20:45
44

Utilice siempre visudo para editar su archivo sudoers, nunca edítelo usted mismo. Le impedirá guardarlo en el disco a menos que valide.

    
respondido por el Caesium 20.11.2011 - 18:08
20

Escribe:

pkexec visudo

Luego cambie la última línea

#includedir /etc/sudoers

Para:

#includedir /etc/sudoers.d

Debería resolver tu problema.

    
respondido por el Andrej Burcev 21.02.2013 - 19:23
10

si alguien más como yo no tenía instalado pkexec , o no podía ejecutar vi, visudo, nano o cualquier otro editor para cambiar el archivo de sudoers, puede estar seguro con este proceso ... Me salvó con esto:

  • reiniciar
  • mantenga presionada la tecla Mayús mientras arranca para tener la opción de modo de recuperación (ingréselo)
  • ingrese la línea de comando como root (segunda última opción en mi menú de grub)
  • volver a montar el dispositivo de arranque para rw, aplicar el derecho de ejecución para el usuario y editar el archivo

    mount -n -o remount,rw /
    chmod u+x /etc/sudoers
    nano /etc/sudoers
    

corrige ese error y sé feliz:)

    
respondido por el Kresimir Pendic 20.10.2014 - 23:40
5

No hay nada de malo #include sudoer.d eliminar #include sudoer.d no hará ninguna diferencia.

Pero asegúrese de no tener ningún error de sintaxis. Tuve el mismo problema pero me pasé horas para solucionarlo y simplemente descubrí que son errores de sintaxis. Consulte el manual y hágalos correctos.

Por ejemplo Diga que su nombre de usuario es: dolly Utilicé lo siguiente que está mal

 dolly ALL = (ALL) ALL NO PASSWD: ALL

la sintaxis correcta es

dolly ALL = (ALL) ALL //give permission to everything, not good

o

dolly ALL=(ALL) NOPASSWD:/usr/bin/thurderbird //good, give specific permission

espero que esto ayude

    
respondido por el Thusitha Nuwan 03.07.2012 - 01:15
5

Si arruinaste tu archivo de sudoers. Tendrás que:

  • Reinicia en modo de recuperación (toca escape durante el arranque, elige la opción de modo de recuperación en la pantalla de grub)
  • Elija la opción 'Habilitar red' (si no lo hace, su sistema de archivos se montará como de solo lectura, quién sabe)
  • Elija la opción 'Caída al shell raíz'
  • ejecuta visudo, arregla tu archivo
  • Reiniciar con la opción de grub normal

fuente: - enlace

    
respondido por el streak 14.12.2012 - 11:59
3

ejecuta el modo de recuperación y escribe esto

chown -R root:root /etc/sudoers.d
chmod u=rwx,g=rx,o=rx /etc/sudoers.d/
chmod u=r,g=r,o= /etc/sudoers.d/*

solo el grupo y la raíz del usuario deberían haber leído privelege

    
respondido por el kosaidpo 20.11.2011 - 18:11
2

También puedes editar tu entrada de inicio mientras estás en grub.

Simplemente reinicie su pc, y espere a que se muestre grub. A continuación, 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 temporalmente modificada. Esto le dará un shell (sin GUI) con derechos de root y puede editar el archivo sudoers con el s.th. como nano / etc / sudoers a su estado anterior.

Luego reinicie y listo.

    
respondido por el Markus Ressel 13.01.2013 - 05:41
2

También puede iniciar sesión como root en una consola tty con Ctrl + Fn ( Fn de 1 a 6) y ejecutar visudo .

    
respondido por el magisterludi 09.03.2013 - 08:12
2
pkexec visudo

luego revierte tus errores

    
respondido por el Bhavesh Gabani 01.01.2014 - 09:23
0

Encontré el error. Está en las últimas dos líneas del archivo predeterminado /etc/sudoers . Elimine las siguientes entradas del final del archivo / etc / sudoers con visudo .

#includedir /etc/sudoers.d
    
respondido por el George Van Tuyl 23.02.2012 - 22:57
0

En Ubuntu 16.04 ejecutándose en un VirtualBox (no debería marcar la diferencia), los métodos anteriores no me funcionaron (fila no válida al final del archivo). Lo que funcionó fue:

  1. Reinicia la VirtualBox
  2. Déjelo arrancar normalmente, hasta que le pida su nombre de usuario & amp; contraseña en la consola
  3. Inicie sesión normalmente con su nombre de usuario
  4. Luego, cuando termines en la consola (siempre que tu cuadro no arranque en una GUI), simplemente da el comando su - y luego da la contraseña de tu nombre de usuario.
  5. Ahora debería terminar en el indicador root@ubuntu-xenial:~# , si el /etc/sudoers no está demasiado roto o vacío. No estoy seguro de lo que sucedería en ese caso.
  6. Entonces, simplemente puede ejecutar visudo y arreglar el archivo.
  7. Luego Ctrl + X y le pedirá que guarde el buffer modificado. Presione Y y Enter
  8. Reinicia el cuadro y debería funcionar ahora.

En caso de que /etc/sudoers esté vacío o le falte algo, y usted puede editarlo, aquí está el contenido mío:

Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

root ALL=(ALL:ALL) ALL

%admin ALL=(ALL) ALL

%sudo ALL=(ALL:ALL) ALL
    
respondido por el Juha Untinen 14.08.2018 - 11:40

Lea otras preguntas en las etiquetas