Se modifico il file sudoers sulla mia istanza EC2, ricevo errori di sintassi quando eseguo i comandi sudo. Come faccio a risolvere questo problema?

4 minuti di lettura
0

Ho modificato manualmente il file sudoers sulla mia istanza Amazon Elastic Compute Cloud (Amazon EC2). Ora ricevo un errore di sintassi simile al seguente quando eseguo comandi sudo su o comandi che richiedono l'accesso di utenti privilegiati: "/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 descrizione

Questo errore di sintassi si verifica quando modifichi manualmente il file /etc/sudoers per cambiare l'utente sudo e aggiungere caratteri indesiderati al file. Il risultato è un'istanza compromessa che non può eseguire sudo su o comandi che richiedono l'accesso di utenti privilegiati. Per correggere questo errore di sintassi, completa i seguenti passaggi:

  1. Arresta l'istanza.
  2. Scollega il relativo volume root.
  3. Collega il volume root a un'istanza di ripristino come volume secondario.
  4. Monta il volume allegato.
  5. Annulla le modifiche al file sudoers.

Risoluzione

Prerequisiti

Nota: non utilizzare un editor di testo come vi, vim o nano per modificare manualmente il file sudoers su un'istanza in esecuzione a cui puoi connetterti. Esegui il comando visudo per modificare il file /etc/sudoers sulle istanze a cui puoi connetterti. Il comando visudo verifica la presenza di errori di analisi durante la modifica e avvisa l'utente dei problemi introdotti nel file prima di salvare le modifiche.

1.    Apri la console Amazon EC2.

2.    Nel pannello di navigazione, scegli Istanze.

3.    Seleziona l'istanza danneggiata, scegli Stato dell'istanza, quindi Arresta istanza.

4.    Nel popup Arrestare l'istanza?, scegli Arresta.

5.    Nella scheda Archiviazione, clicca sull'ID del volume per il nome del dispositivo root.

6.    Nella pagina Volumi, seleziona il volume, scegli Azioni, quindi Scollega volume.

7.    Nel pop-up, scegli Scollega. Verifica che Stato del volume sia Disponibile.

8.    Avvia una nuova istanza EC2 nella stessa zona di disponibilità dell'istanza originale. La nuova istanza diventa la tua istanza di ripristino.

9.    Dopo l'avvio dell'istanza di ripristino, nel pannello di navigazione, scegli Volumi.

10.    Seleziona il volume root separato dell'istanza originale. Scegli Azioni, quindi Collega volume.

11.    In Istanza, seleziona l'ID dell'istanza di ripristino e inserisci il nome del dispositivo. Quindi, scegli Collega volume.

12.    Con la coppia di chiavi, utilizza SSH per connetterti all'istanza.

13.    Esegui il comando lsblk per verificare il nome del dispositivo del volume collegato.

lsblk

Esempio di output:

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.    Crea una directory di montaggio e poi montala con i privilegi root.
Amazon Linux, Ubuntu e Debian:

sudo mount /dev/xvdf1 /mnt

Amazon Linux 2023, Amazon Linux 2, CentOS 7 o 8, SUSE Linux 12 e RHEL 7.x o 8.x:

sudo mount -o nouuid /dev/xvdf1 /mnt

Verifica il punto di montaggio nella console per il volume appena collegato. Il punto di montaggio è in genere /dev/xvdf1.

15.    Chroot nella directory montata.

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

16.    Per modificare il file sudoers, esegui il comando visudo:

visudo

Quando modifichi il file, puoi annullare le modifiche apportate che hanno causato l'errore di sintassi. In alternativa, puoi copiare il file dall'istanza di ripristino e sostituire il file /mnt/etc/sudoers con un file noto e corretto:

Crea un backup del file originale.

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

Copia il file nell'istanza.

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

17.    Dopo aver modificato o sostituito il file sudoers, smonta il volume.

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

18.    Collega il volume all'istanza originale. Specifica il punto di montaggio come /dev/xvda o /dev/sda1, poiché questo è il volume principale dell'istanza originale.

19.    Avvia l'istanza originale.

20.    Utilizza SSH per connetterti all'istanza ed eseguire i comandi sudo.

Informazioni correlate

Perché non posso eseguire i comandi sudo sulla mia istanza EC2 Linux?

AWS UFFICIALE
AWS UFFICIALEAggiornata 7 mesi fa