Wenn ich die Sudoers-Datei auf meiner EC2 Instance bearbeite, erhalte ich Syntaxfehler, wenn ich Sudo-Befehle ausführe. Wie behebe ich das?

Lesedauer: 4 Minute
0

Ich habe die Sudoers-Datei auf meiner Amazon Elastic Compute Cloud (Amazon EC2) Instance manuell bearbeitet. Jetzt treten Syntaxfehler wie die folgenden auf, wenn ich Sudo-su-Befehle oder Befehle, die privilegierten Benutzerzugriff erfordern, ausführe: „/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“.

Kurzbeschreibung

Dieser Syntaxfehler tritt auf, wenn Sie die Datei /etc/sudoers manuell bearbeiten, um den Sudo-Benutzer zu ändern und der Datei unerwünschte Zeichen hinzuzufügen. Das Ergebnis kann eine fehlerhafte Instance sein, die sudo su nicht ausführen kann, oder Befehle, die einen privilegierten Benutzerzugriff erfordern. Gehen Sie wie folgt vor, um diesen Syntaxfehler zu beheben:

  1. Stoppen Sie die Instance.
  2. Trennen Sie das Root Volume.
  3. Hängen Sie das Root-Volume als sekundäres Volume an eine Wiederherstellungs-Instance an.
  4. Mounten Sie das angehängte Volume.
  5. Machen Sie die Änderungen an der Sudoers-Datei rückgängig.

Lösung

Voraussetzungen

**Hinweis:**Bearbeiten Sie die Sudoers-Datei nicht manuell mit einem Texteditor wie Vi, Vim oder Nano auf einer laufenden Instance, zu der Sie eine Verbindung herstellen können. Führen Sie immer visudo aus, um die Datei /etc/sudoers auf Instances zu bearbeiten, mit denen Sie eine Verbindung herstellen können. Der Befehl visudo sucht während der Bearbeitung nach Analysefehlern und warnt Sie vor Problemen, die Sie in die Datei einbringen, bevor Sie die Änderungen speichern.

1.Öffnen Sie die Amazon-EC2-Konsole.

2.Wählen Sie im Navigationsbereich die Option Instances aus.

3.Wählen Sie die fehlerhafte Instance aus, wählen Sie Zustand der Instance und dann Instance stoppen aus.

4.Wählen Sie im Popup-Fenster Instance stoppen Stoppen aus.

5.Klicken Sie auf der Registerkarte Speicher auf die Volume-ID für den Namen des Root-Geräts.

6.Wählen Sie auf der Seite Volumes das Volume aus, klicken Sie auf Aktionen und dann auf Volume trennen.

7.Wählen Sie im Popup-Fenster die Option Trennen aus. Stellen Sie sicher, dass der Volume-Status Verfügbar ist.

8.Starten Sie eine neue EC2 Instance in derselben Availability Zone wie die ursprüngliche Instance. Die neue Instance wird zu Ihrer Rettungs-Instance.

9.Nachdem die Rettungs-Instance gestartet wurde, wählen Sie im Navigationsbereich Volumes aus.

10.Wählen Sie das getrennte Root-Volume der ursprünglichen Instance aus. Wählen Sie Aktionen und dann Volume anhängen aus.

11.Wählen Sie für Instance die ID der Rettungs-Instance aus und geben Sie einen Gerätenamen ein. Wählen Sie dann Volume anhängen.

12.Verwenden Sie mit Ihrem Schlüsselpaar SSH, um sich mit der Instance zu verbinden.

13.Führen Sie den Befehl lsblk aus, um den Gerätenamen des angeschlossenen Volumes zu überprüfen.

lsblk

Beispiel für eine Ausgabe:

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.Erstellen Sie ein Mount-Verzeichnis und mounten Sie dann mit Root-Rechten.
Amazon Linux, Ubuntu und Debian:

sudo mount /dev/xvdf1 /mnt

Amazon Linux 2023, Amazon Linux 2, CentOS 7 oder 8, SUSE Linux 12 und RHEL 7.x oder 8.x:

sudo mount -o nouuid /dev/xvdf1 /mnt

Suchen Sie am Mount Point in der Konsole nach dem neu angehängten Volume. Der Mount Point ist normalerweise /dev/xvdf1.

15.Chroot in das gemountete Verzeichnis.

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

16.Um die Datei subdoers zu bearbeiten, führen Sie den Befehl visudo aus:

visudo

Wenn Sie die Datei bearbeiten, können Sie die von Ihnen vorgenommenen Änderungen rückgängig machen, die den Syntaxfehler verursacht haben. Oder Sie können die Datei aus der Wiederherstellungs-Instance kopieren und die Datei /mnt/etc/sudoers durch eine bekanntermaßen korrekte Datei ersetzen:

Erstellen Sie eine Sicherungskopie der Originaldatei.

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

Kopieren Sie die Datei in die Instance.

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

17.Nachdem Sie die Sudoers-Datei bearbeitet oder ersetzt haben, unmounten Sie das Volume.

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

18.Hängen Sie das Volume an die ursprüngliche Instance an. Geben Sie den Mount Point als /dev/xvda oder /dev/sda1 an, da dies das Root-Volume für die ursprüngliche Instance ist.

19.Starten Sie die ursprüngliche Instance.

20.Verwenden Sie SSH, um eine Verbindung zur Instance herzustellen und Sudo-Befehle auszuführen.

Ähnliche Informationen

Warum kann ich keine Sudo-Befehle auf meiner EC2 Linux Instance ausführen?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 7 Monaten