AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
Warum kann ich keine sudo-Befehle auf meiner Amazon EC2-Linux-Instance ausführen?
Wenn ich sudo-Befehle auf meiner Amazon Elastic Compute Cloud (Amazon EC2)-Linux-Instance ausführe, erhalte ich eine Fehlermeldung.
Kurzbeschreibung
Die Datei /usr/bin/sudo muss root:root als Eigentümer haben. Wenn die Datei /usr/bin/sudo einem Nicht-Root-Benutzer gehört, erhältst du die folgende Fehlermeldung, wenn du Sudo-Befehle auf deiner EC2-Linux-Instance ausführst:
„/usr/bin/sudo must be owned by uid 0 and have the setuid bit set“
Die Datei sudoers darf auch nicht für alle beschreibbar (world-writable) sein. Wenn die Datei für alle beschreibbar ist, kann jeder in die Datei schreiben und du erhältst die folgende Fehlermeldung:
„sudo: /etc/sudoers is world writable“
Hinweis: Standardmäßig ist der Dateimodus für die Datei sudoers auf 0440 gesetzt. Diese Konfiguration erlaubt es dem Eigentümer und der Gruppe, die Datei zu lesen, lässt aber nicht zu, dass jemand in die Datei schreibt.
Um die vorherigen Fehler zu beheben, verwende die serielle EC2-Konsole für Linux, um eine Verbindung herzustellen und eine Fehlerbehebung durchzuführen. Oder aktualisiere das Benutzerdatenskript der Instance, um die Dateiberechtigungen zurückzusetzen.
Lösung
Hinweis: Wenn du Fehler bei der Ausführung von AWS Command Line Interface (AWS CLI)-Befehlen erhältst, lies Fehlerbehebung AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
Verwende die serielle EC2-Konsole, um eine Verbindung herzustellen und eine Fehlerbehebung durchzuführen
Voraussetzung: Konfiguriere den Zugriff auf die serielle EC2-Konsole. Du kannst die serielle Konsole nur auf Instances verwenden, die auf dem AWS Nitro System basieren, sowie auf unterstützten Bare-Metal-Instances.
Verwende die Amazon-EC2-Konsole oder die AWS CLI mit SSH-Client-Befehlen, um mit der seriellen Konsole eine Verbindung zu deiner Instance herzustellen. Die serielle Konsole erfordert keine funktionierende Netzwerkverbindung. Nachdem du eine Verbindung hergestellt hast, führe eine Fehlerbehebung für deine Instance durch, um Probleme beim Booten, bei der Netzwerkkonfiguration oder bei der SSH-Konfiguration zu beheben.
Wenn du die serielle Konsole nicht für die Verbindung verwenden kannst, musst du ein Benutzerdatenskript verwenden, um die Sudo-Fehler zu beheben.
Das Benutzerdatenskript aktualisieren
Hinweis: Wenn du Probleme mit einem Benutzerdatenskript behebst, musst du deine Instance anhalten und starten.
Instance für einen Stopp und Start konfigurieren
Hinweis: Wenn du eine Instance anhältst und startest, ändert sich die öffentliche IP-Adresse der Instance. Es empfiehlt sich, beim Weiterleiten von externem Datenverkehr an die Instance eine Elastic IP-Adresse anstelle einer öffentlichen IP-Adresse zu verwenden. Wenn du Amazon Route 53 verwendest, musst du möglicherweise die Route-53-DNS-Datensätze aktualisieren, wenn sich die öffentliche IP-Adresse ändert. Ein Stopp und Start unterscheidet sich von einem Instance-Neustart. Weitere Informationen findest du unter Wie Anhalten und Starten der EC2-Instance funktioniert.
Bevor du die Instance anhältst und startest, gehe wie folgt vor:
- Wenn deine Instance einen Instance-Speicher verwendet, sichere die Volume-Daten im Instance-Speicher im persistenten Speicher. Beispielsweise kannst du die Daten auf Amazon Elastic Block Store (Amazon EBS)-Volumes oder in Amazon Simple Storage Service (Amazon S3)-Buckets speichern.
Wichtig: Amazon EC2 löscht Instance-Speicherdaten, wenn du die Instance anhältst. - Erstelle einen Snapshot des Amazon-EBS-Volumes. Wenn Probleme auftreten, kannst du den Snapshot verwenden, um die Instance wiederherzustellen.
- Entferne die Instance vorübergehend aus ihrer Amazon EC2 Auto Scaling-Gruppe, damit du sie beim Anhalten nicht versehentlich beendest.
Hinweis: EC2 Auto Scaling beendet möglicherweise angehaltene Instances in einer Auto-Scaling-Gruppe basierend auf deinen Einstellungen für den Scale-in-Schutz. Instances, die du mit Amazon EMR, AWS CloudFormation oder AWS Elastic Beanstalk startest, sind möglicherweise Teil einer Auto-Scaling-Gruppe. - Stelle das Verhalten beim Herunterfahren der Instance auf Stop (Stopp) ein, um sicherzustellen, dass die Instance nicht beendet wird, wenn du sie anhältst.
Aktualisiere dein Benutzerdatenskript
Führe die folgenden Schritte aus:
- Halte die Instance an.
Hinweis: Wenn du Stop (Stopp) nicht auswählen kannst, ist die Instance bereits angehalten oder ihr Root-Gerät ist ein Instance-Speicher-Volume. - Wähle deine Instance und dann Actions (Aktionen) aus.
- Wähle Instance settings (Instance-Einstellungen) und dann Edit User Data (Benutzerdaten bearbeiten) aus.
- (Optional) Wenn du die erforderlichen Berechtigungen nicht kennst, überprüfe /usr/bin/sudo auf die richtigen Berechtigungen. Führe den folgenden Befehl auf einer funktionierenden Instance mit demselben Betriebssystem aus:
Hinweis: Die Berechtigungen für /usr/bin/sudo unterscheiden sich je nach Linux-Distribution. Du kannst die Berechtigungen in der Befehlsausgabe als Referenz verwenden. Stelle sicher, dass die Instance, auf der du den Befehl ausführst, eine Neuinstallation ist und sich nicht in der Produktion befindet. Diese Konfigurationen bedeuten, dass die Datei unverändert bleibt.ls -l /usr/bin/sudo - Gib das folgende Benutzerdatenskript basierend auf deiner Linux-Distribution ein.
Red Hat-basierte Distributionen:
Debian-basierte Distributionen:Content-Type: multipart/mixed; boundary="//"MIME-Version: 1.0 --// Content-Type: text/cloud-config; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="cloud-config.txt" #cloud-config cloud_final_modules: - [scripts-user, always] --// Content-Type: text/x-shellscript; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="userdata.txt" #!/bin/bash PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin: rpm --setugids sudo && rpm --setperms sudo find /etc/sudoers.d/ -type f -exec /bin/chmod 0440 {} \; find /etc/sudoers.d/ -type f -exec /bin/chown root:root {} \; --//
Hinweis: Stelle sicher, dass du das gesamte Skript kopierst. Füge keine zusätzlichen Leerzeichen ein, wenn du das Skript eingibst. Die letzten beiden Befehlszeilen stellen die Berechtigungen, den Eigentümer und die Gruppe für die benutzerdefinierten sudo-Sicherheitsrichtlinien-Plugins im Verzeichnis /etc/sudoers.d/ wieder her.Content-Type: multipart/mixed; boundary="//"MIME-Version: 1.0 --// Content-Type: text/cloud-config; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="cloud-config.txt" #cloud-config cloud_final_modules: - [scripts-user, always] --// Content-Type: text/x-shellscript; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="userdata.txt" #!/bin/bash /bin/chown root:root /usr/bin/sudo /bin/chmod 4111 /usr/bin/sudo /bin/chmod 644 /usr/lib/sudo/sudoers.so /bin/chmod 0440 /etc/sudoers /bin/chmod 750 /etc/sudoers.d find /etc/sudoers.d/ -type f -exec /bin/chmod 0440 {} \; find /etc/sudoers.d/ -type f -exec /bin/chown root:root {} \; --// - Wähle Save (Speichern) aus.
- Starte die Instance.
- Verwende SSH, um eine Verbindung zur Instance herzustellen, und führe dann einen Testbefehl aus, um zu überprüfen, ob sudo wie erwartet funktioniert.
Beispielbefehl:
Hinweis: Die Ausgabe für den vorherigen Beispielbefehl muss root lauten. Wenn du immer noch Berechtigungsfehler erhältst, überprüfe /var/log/cloud-init-output.log auf Ausführungsfehler im Benutzerdatenskript, die du beheben musst. Wenn du einen Syntaxfehler erhältst, siehe Wie behebe ich sudo-Fehler auf meiner Amazon-EC2- oder Amazon Lightsail-Instance, wenn ich den sudo-Befehl ausführe?sudo whoami
- Themen
- Compute
- Tags
- Amazon EC2Linux
- Sprache
- Deutsch
Ähnliche Videos


Relevanter Inhalt
AWS OFFICIALAktualisiert vor 7 Monaten