Se modifico il file sudoers sulla mia istanza EC2, ricevo errori di sintassi quando eseguo i comandi sudo. Come faccio a risolvere questo problema?
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:
- Arresta l'istanza.
- Scollega il relativo volume root.
- Collega il volume root a un'istanza di ripristino come volume secondario.
- Monta il volume allegato.
- Annulla le modifiche al file sudoers.
Risoluzione
Prerequisiti
- L'arresto e il riavvio dell'istanza cancellano tutti i dati sui volumi dell'archivio dell'istanza. Esegui il backup di tutti i dati sul volume dell'archivio dell'istanza che desideri conservare. Per ulteriori informazioni, consulta Definire il tipo di dispositivo root dell'istanza.
- L'arresto e l'avvio dell'istanza modificano l'indirizzo IP pubblico della stessa. È consigliabile utilizzare un indirizzo IP elastico invece di uno pubblico quando instradi il traffico esterno verso l'istanza.
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?
Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 9 mesi fa
- AWS UFFICIALEAggiornata 3 anni fa