He editado el archivo sudoers en mi instancia de EC2 y ahora recibo errores de sintaxis al intentar ejecutar comandos sudo. ¿Cómo soluciono el problema?

5 minutos de lectura
0

He editado manualmente el archivo sudoers en mi instancia de Amazon Elastic Compute Cloud (Amazon EC2). Ahora, al ejecutar comandos sudo su o comandos que requieren acceso de usuario privilegiado, recibo un error de sintaxis similar al siguiente: «etc/sudoers: syntax error near line xx» «sudo: parse error in /etc/sudoers near line xx» «sudo: no valid sudoers sources found, quitting» «sudo: unable to initialize policy plugin».

Breve descripción

Este error de sintaxis se produce cuando el archivo /etc/sudoers se edita manualmente para cambiar el usuario sudo y se añaden caracteres no deseados al archivo. El resultado es una instancia dañada que no puede ejecutar sudo su o comandos que requieran acceso de usuario privilegiado. Para resolver el error, siga estos pasos:

  1. Detenga la instancia.
  2. Desasocie su volumen raíz.
  3. Adjunte el volumen raíz a una instancia de recuperación como volumen secundario.
  4. Monte el volumen adjunto.
  5. Deshaga los cambios en el archivo sudoers.

Solución

Requisitos previos

Nota: No edite manualmente el archivo sudoers con un editor de texto como vi, vim o nano en una instancia en ejecución a la que se pueda conectar. Ejecute el comando visudo para editar el archivo /etc/sudoers en las instancias a las que se pueda conectar. El comando visudo comprueba si hay errores de análisis durante la edición y le informa de cualquier problema que se introduzca en el archivo antes de guardar los cambios.

1.    Abra la consola de Amazon EC2.

2.    En el panel de navegación, seleccione Instancias.

3.    Seleccione la instancia dañada, elija Estado de instancia y, a continuación, elija Detener instancia.

4.    En la ventana emergente ¿Detener instancia?, elija Detener.

5.    En la pestaña Almacenamiento, haga clic en el ID del volumen del nombre del dispositivo raíz.

6.    En la página Volúmenes, seleccione el volumen, elija Acciones y, a continuación, elija Desasociar volumen.

7.    En la ventana emergente, elija Desasociar. Compruebe que el Estado del volumen esté Disponible.

8.    Inicie una nueva instancia de EC2 en la misma zona de disponibilidad que la instancia original. La nueva instancia se convierte en su instancia de rescate.

9.    Cuando se inicie la instancia de rescate, en el panel de navegación, elija Volúmenes.

10.    Seleccione el volumen raíz desasociado de la instancia original. Elija Acciones y, a continuación, elija Adjuntar volumen.

11.    En Instancia, seleccione el ID de la instancia de rescate e introduzca un nombre de dispositivo. A continuación, elija Adjuntar volumen.

12.    Utilice SSH para conectarse a la instancia con su par de claves.

13.    Ejecute el comando lsblk para comprobar el nombre del dispositivo del volumen adjunto.

lsblk

Ejemplo de salida:

NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTxvda    202:0    0    8G  0 disk
└─xvda1 202:1    0    8G  0 part /
xvdf    202:80   0  500G  0 disk
└─xvdf1 202:81   0  500G  0 part

14.    Cree un directorio de montaje y, a continuación, monte con privilegios de raíz.
Amazon Linux, Ubuntu y Debian:

sudo mount /dev/xvdf1 /mnt

Amazon Linux 2023, Amazon Linux 2, CentOS 7 u 8, SUSE Linux 12 y RHEL 7.x u 8.x:

sudo mount -o nouuid /dev/xvdf1 /mnt

Compruebe el punto de montaje de la consola para ver el volumen recién adjuntado. El punto de montaje suele ser /dev/xvdf1.

15.    Ejecute el comando Chroot en el directorio montado.

for dir in {/dev,/dev/pts,/sys,/proc}; do sudo mount -o bind $dir /mnt$dir; donechroot /mnt

16.    Para editar el archivo subdoers, ejecute el comando visudo:

visudo

Al editar el archivo, puede revertir los cambios que realizó que causaron el error de sintaxis o puede copiar el archivo de la instancia de recuperación y reemplazar el archivo /mnt/etc/sudoers por un archivo que sepa que es correcto:

Cree una copia de seguridad del archivo original.

sudo mv /mnt/etc/sudoers /mnt/etc/sudoers.backup

Copie el archivo a la instancia.

sudo cp /etc/sudoers /mnt/etc/sudoers

17.    Después de editar o sustituir el archivo sudoers, desmonte el volumen.

for dir in {/dev,/dev/pts,/sys,/proc}; do umount /mnt$dir; donesudo umount /mnt

18.    Adjunte el volumen a la instancia original. Especifique el punto de montaje como /dev/xvda o /dev/sda1, ya que es el volumen raíz de la instancia original.

19.    Inicie la instancia original.

20.    Utilice SSH para conectarse a la instancia y ejecutar los comandos sudo.

Información relacionada

¿Por qué no puedo ejecutar los comandos sudo en mi instancia de Linux de EC2?

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 6 meses