VDR über vdradmin-am Webinterface neustarten

  • Hallo zusammen,

    ich versuche, meinen VDR über das Webinterface von vdradmin-am neu zu starten – bisher leider ohne Erfolg.

    Was ich schon versucht habe:

    • In der /etc/sudoers passende Einträge für vdr, vdradmin-am und www-data gesetzt:

      Code
      vdr ALL=(ALL) NOPASSWD: /bin/systemctl restart vdr
      www-data ALL=(ALL) NOPASSWD: /bin/systemctl restart vdr
      vdradmin-am ALL=(ALL) NOPASSWD: /bin/systemctl restart vdr
    • Testweise im Terminal mit:

      Code
      sudo systemctl restart vdr

      → klappt dort problemlos.

    • In command.conf von vdradmin-am folgenden Eintrag hinzugefügt:

      Code
      restart VDR : sudo systemctl restart vdr
    • Ein Neustart über das SVDRP-Interface hat nicht funktioniert.

    Frage: Funktioniert der Neustart des VDR über das vdradmin-am Webinterface überhaupt noch mit aktuellen Systemen?
    Oder ist diese Funktion schlicht veraltet bzw. durch restriktivere Sicherheit (z. B. systemd oder sudo) blockiert?

    System: Debian 12, VDR 2.6.x, vdradmin-am aktuell aus den debian Paketquellen

    Danke für jeden Hinweis!

  • So wie es aussieht, führt vdradmin-am den Befehl nicht über den VDR aus, sondern macht das über das Perl-Skript: https://github.com/vdr-projects/v…admind.pl#L7198 ff.

    Das führt dann ohne weitere Konfiguration auf einer yavdr-ansible Installation zu diesem Logeintrag:

    Code
    Mai 02 11:34:15 yavdr-noble-demo sudo[11322]: pam_unix(sudo:auth): conversation failed
    Mai 02 11:34:15 yavdr-noble-demo sudo[11322]: pam_unix(sudo:auth): auth could not identify password for [vdradmin-am]
    Mai 02 11:34:15 yavdr-noble-demo sudo[11322]: vdradmin-am : user NOT in sudoers ; PWD=/ ; USER=root ; COMMAND=/bin/systemctl --no-block restart vdr.service

    Ich konnte dann mit diesem Snippet die nötige Berechtigung vergeben (analog zu den Berechtigungen für den VDR, da der nicht dauerhaft als root läuft):

    Code
    # cat /etc/sudoers.d/vdradmin-am 
    vdradmin-am ALL=NOPASSWD: /bin/systemctl --no-block restart vdr.service
    vdradmin-am ALL=NOPASSWD: /bin/systemctl --no-block reboot

    Das --no-block ist dann sowohl in der commands.conf als auch in der sudoers-Konfiguration ist IIRC nötig, damit systemctl sofort zurückkehrt und der VDR nicht darauf wartet, dass er selbst abgeschossen wird - in der commands.conf des VDR sieht das analog dazu so aus:

    Code
    VDR neu starten : sudo /bin/systemctl --no-block restart vdr.service
    Rechner neu starten : sudo /bin/systemctl --no-block reboot
    Meine VDRs

    VDR 1: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 24.04 (yavdr-ansible), VDR 2.7.4, CIR-Empfänger
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    Client 1: Raspberry Pi 2, Ubuntu 22.04 (yavdr-ansible), VDR 2.6.1

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ich habe die sudoers-Datei entsprechend erstellt, aber mir ist beim Editieren der commands.conf-Datei etwas aufgefallen:
    Die Datei /var/lib/vdr/commands.conf ist ein Symlink auf ../../cache/vdr/commands.conf, also effektiv auf /var/cache/vdr/commands.conf.
    Nach jedem Neustart von VDR wird diese Datei jedoch neu erstellt, sodass alle dort eingetragenen Befehle wieder überschrieben werden.
    Weitere commands.conf-Dateien finde ich im gesamten System nicht.
    Ich frage mich gerade, auf welcher Grundlage und wo genau diese commands.conf erstellt wird, um ggf. dort die gewünschten Befehle dauerhaft eintragen zu können.

  • Wenn ich die Befehle in der /etc/vdr/command-hooks/commands.custom.conf eintrage, sind diese in der /var/cache/vdr/commands.conf nach dem vdr neustart ebenfalls vorhanden werden im vdramin WebUI allerdings nicht aufgeführt, dort sehe ich nach wie vor nur die Befehle Aufnahmen-Liste aktualisieren und VDR Neustart.

    Ich hatte in den Logs eine Fehlermeldung bezüglich des E-Mail-Versands von vdradmin-am gefunden und daraufhin vdradmin über die Postfix Generic-Maps für den E-Mail-Versand konfiguriert.
    In der versendeten E-Mail fand ich dann folgenden Hinweis:

    vdradmin-am : a password is required ; PWD=/ ; USER=root ; COMMAND=/usr/bin/systemctl restart vdr

    Der Host ist ein Proxmox-Server mit gesetztem Root-Passwort. Könnte es vielleicht daran liegen?
    sudo funktioniert aber weiterhin für den Benutzer.
    Muss ich eventuell den in der E-Mail genannten root speziell umstellen, damit sudo funktioniert?
    Wenn ja – wie mache ich das?

  • Nach jedem Neustart von VDR wird diese Datei jedoch neu erstellt, sodass alle dort eingetragenen Befehle wieder überschrieben werden.

    Ja, das sieht man ja schön in der Sytemd-Unit: https://salsa.debian.org/vdr-team/vdr/-…f_type=heads#L9 - und das Skript schreibt das sogar in den Kopf der Datei, woraus die erstellt wird: https://salsa.debian.org/vdr-team/vdr/-…?ref_type=heads

    Wenn ich die Befehle in der /etc/vdr/command-hooks/commands.custom.conf eintrage, sind diese in der /var/cache/vdr/commands.conf nach dem vdr neustart ebenfalls vorhanden werden im vdramin WebUI allerdings nicht aufgeführt, dort sehe ich nach wie vor nur die Befehle Aufnahmen-Liste aktualisieren und VDR Neustart.

    vdradmin-am liest die commands.conf einmalig beim Start ein: https://github.com/vdr-projects/v…radmind.pl#L640, bevor es die Mainloop startet. Du musst den Dienst dann also auch noch mal neu starten.

    In der versendeten E-Mail fand ich dann folgenden Hinweis:

    vdradmin-am : a password is required ; PWD=/ ; USER=root ; COMMAND=/usr/bin/systemctl restart vdr

    Das besagt ja nur, dass die sudo-Konfiguration nicht passt und es versucht interaktiv ein Passwort abzufragen, was nicht klappt, wenn der Befehl von vdradmin-am ausgeführt wird.

    Meine VDRs

    VDR 1: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 24.04 (yavdr-ansible), VDR 2.7.4, CIR-Empfänger
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    Client 1: Raspberry Pi 2, Ubuntu 22.04 (yavdr-ansible), VDR 2.6.1

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!