/etc/vdr/vdr-nvram-wakeup.conf, SPECIALSHUTDOWN="echo y | grub-reboot 3": Etch OK, Lenny nicht.

  • Hallo allerseits,


    nachdem Lenny nun bald Stable werden sollte habe ich meinen VDR nun von Etch (mit e-tobi-Paketen für Etch) auf Lenny (mit e-tobi-Paketen für Sid) gebracht und dabei folgenden Fehler festgestellt:


    Während in Etch das Kommando "echo y | grub-reboot 3" in der /etc/vdr/vdr-nvram-wakeup.conf (für den Neustart nach Änderungen am nvram) richtig ausgeführt wurde, gehts in Lenny nicht mehr. Nach langer Suche bin ich auf den Grund gestoßen:


    linuxvdr:~# diff /usr/sbin/grub-reboot_etch /usr/sbin/grub-reboot_lenny
    1c1
    < #!/bin/sh -e
    ---
    > #!/bin/bash -e


    Von Etch auf Lenny wurde wegen Bug 473685 ab Version 0.97-36 die ausführende Shell in /usr/sbin/grub-reboot von /bin/sh auf /bin/bash geändert (/bin/sh ist nur ein Soft link auf /bin/bash).


    Ändert man die Zeile in Lenny zurück auf /bin/sh ist wieder alles OK. Als sh aufgerufen verhält sich die bash also anders (man bash sagt auch sowas).


    Das Skript /usr/lib/vdr/vdr-shutdown, welches am Ende das "echo y | grub-reboot 3" ausführen soll, wird vom Binary /usr/lib/vdr/vdr-shutdown.wrapper aufgerufen. Dieses hat das setuid-Bit gesetzt (-rwsr-s--- 1 root:vdr).


    In /usr/sbin/grub-reboot wird mit whoami überprüft, ob das Skript von root ausgeführt wird. Wenn nicht, wird es mit "You must be root" abgebrochen.
    Nun liefert whoami mit /bin/sh "root" zurück, mit /bin/bash aber "vdr".


    Mit /bin/bash läuft /usr/sbin/grub-reboot also nicht mehr als effective user ID root, sondern als vdr.


    Was ist nun die sauberste Lösung? Ist das ein Bug? Wenn ja, liegt der Bug in grub oder in nvram-wakeup oder in vdr? Jedenfalls geht grub-reboot in der aktuellen Konstellation nicht. Muss ich mir eine andere Lösung einfallen lassen? Was schlagt ihr vor?


    viele Grüße, Helmar.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!