Raspberry Pi: sudo: Effektive UID ist nicht 0. Wurde sudo mit »setuid root« installiert?

Zur Zeit mache ich recht viel mit FHEM herum, probiere verschiedene Sachen aus und versuche eigene Erfahrungen zu sammeln, um mich so möglichst gut auf mein nächstes größeres Projekt vorzubereiten. FHEM ist dabei auf einem Raspberry Pi 2 mit Raspbian wheezy-Image installiert. Eine Erfahrung habe ich heute mal wieder gemacht: wenn man am System herumspielt muss man auch immer damit rechnen, dass etwas kaputt geht. So ist’s heute geschehen.

Raspberry Pi: Effektive UID ist nicht 0

Raspberry Pi: Effektive UID ist nicht 0

Ich bin ja von Natur aus faul und versuche immer den einfachsten Weg. Um beispielsweise die Konfigurationsdateien von FHEM auf einer vernünftigen Desktop-Oberfläche bearbeiten zu können, habe ich mir einfach /opt als Share freigegeben. Zu dem verbinde ich mich am Mac und kann dann alle Dateien per TextWrangler bearbeiten.

Jetzt gab es mal etwas im Verzeichnis /usr zu tun. Also hab ich mir einen Share eingerichtet und mir die Rechte mittels $ chmod 777 -R /usr angepasst.

Eingangs hat das auch ganz gut funktioniert, bis ich via SSH den Raspi neustarten wollte. Als pi eingeloggt setzte ich $ sudo reboot ab und erhielt folgende Meldung:

sudo: Effektive UID ist nicht 0. Wurde sudo mit »setuid root« installiert?

Es war kein einziger Befehl mehr möglich, der Superuser-Rechte benötigt. Das root-Konto hatte ich auch nie aktiviert. Was das bedeutet, war mir sofort klar: meine Aktion war eine blöde Idee und ich hatte Angst, jetzt mein ganzes System neu aufsetzen zu müssen. Aber es gibt eine Lösung, die sogar relativ einfach ist.

Ist das root-Konto aktiviert, benötigt Ihr nur die Schritte 5 und 6 (funktioniert auch per SSH). Ist es nicht aktiviert, beginnt bei Schritt 1.

  1. SD-Karte aus dem Raspberry Pi entfernen und in einen Rechner stecken, der idealerweise mit OS X oder Linux läuft.
  2. Auf der SD-Karte finden wir eine Datei names cmdline.txt. Die öffnen wir im Texteditor und hängen am Ende der ersten Zeile init=/bin/sh an, sodass sich folgender Inhalt ergibt:
    dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait init=/bin/sh
  3. Datei speichern, SD-Karte auswerfen und wieder in den Raspberry Pi stecken. Wenn der Raspberry Pi sonst nur headless, also ohne Bildschirm betrieben wird, sollte man ihn jetzt per HDMI an einen Fernseher anschließen und eine USB-Tastatur anstecken. Nach dem Einschalten gelangen wir auf die Konsole. Sollte nach einigen Sekunden kein Prompt erscheinen, einfach mal die Return-Taste betätigen. Als Prompt erscheint #
  4. Nun setzen wir eine Reihe von Befehlen ab und aktiveren dabei den root-Benutzer:
    # mount -o remount,rw /
    # passwd root (nun das Passwort festlegen)
    # sync
    # exec /sbin/init (mit diesem Befehl wird die normale Shell gestartet)
  5. Wir loggen uns nun als root mit dem zugehörigen (soeben festgelegten) Passwort ein.
  6. Hier setzen wir die Rechte so, wie sie sein müssen:
    # chmod 4755 /usr/bin/sudo
    # chown root:root /usr/lib/sudo/sudoers.so
    # chmod 644 /usr/lib/sudo/sudoers.so
  7. Nun fahren wir den Raspberry Pi herunter …
    # poweroff
    … entfernen Spannungsversorgung und SD-Karte und packen sie wieder in einen richtigen Computer.
  8. Hier bearbeiten wir erneut die cmdline.txt, wo wir den vorhin hinzugefügten Inhalt wieder entfernen, sodass sich dieses Mal folgender Inhalt ergibt:
    dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
  9. SD-Karte zurück in den Raspberry Pi und Netzteil anschließen. Nun sollte wieder alles vernünftig funktionieren.
Raspberry Pi: sudo funktioniert wieder

Raspberry Pi: sudo funktioniert wieder

Glück gehabt! Aber vielleicht wird es auch mal wieder Zeit für ein Backup? 😉

Sebastian

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht.

WordPress Cookie Hinweis von Real Cookie Banner