vdr2divx Rechteproblem

  • Hallo,


    die JobQ Datei lässt sich nicht per Befehl aus reccmd.conf beschreiben. Daher habe ich mir die Rechte angeschaut, und festgestellt, dass sie root gehört. Daraufhin habe ich chmod 666 /mp4/divx/JobQ gemacht. Wenn ich jetzt den Befehl aus der reccmds.conf aufrufe, landet der Film auch in der Datei und wird verarbeitet. Der nächste Aufruf funktioniert dann nicht mehr, da die Rechte sich geändert haben, und die Datei nur noch von root beschrieben werden darf.
    Für den Systemstart habe ich den User vdr angelegt. Allerdings habe ich die ausführbare Datei 'vdr' unter der root ID laufen (mit chmod +s oder so, weiss nicht mehr genau), damit die Systemzeit gestellt werden kann.
    Wie kann ich verhindern, dass sich die Rechte der JobQ automatisch verändern?
    Und warum kann JobQ nicht beschrieben werden, obwohl der Prozess 'vdr' mit root Rechten läuft? Werden die Befehle aus reccmds.conf mit Rechten des vdr-users ausgeführt? Das kann eigentlich nicht sein, da sonst nach Schreiben des ersten Eintrags in JobQ die Datei nicht auf einmal root gehört.


    Bis dann
    Dagget

  • mach mal ein

    Code
    chown vdr:vdrgruppenid JobQ


    vdrgruppenid natürlich je nach dem was du verwendet hast.


    Wie rufst du vdr auf? su -c vdr? Ausserdem: irgendwo lässt du doch sicherlich ein wait2enc.sh laufen? Die Frage ist, unter welchem User das läuft. Ich tippe mal auf root...


    Zitat

    Und warum kann JobQ nicht beschrieben werden, obwohl der Prozess 'vdr' mit root Rechten läuft?


    Wenn vdr als root läuft, dann kannst du immer in die JobQ schreiben. Wenn du aber vdr als eingeschränkten User laufen lässt, dann eben nicht. In dem Fall musst du die Besitzrechte an der JobQ wie oben beschrieben ändern. Frag mich jetzt nicht, warum ein chmod 666 JobQ nicht den Erfolg bringt.


    Joe

  • Zitat

    mach mal ein


    Code
    chown vdr:vdrgruppenid JobQ


    vdrgruppenid natürlich je nach dem was du verwendet hast.


    Das habe ich gemacht, danach wechselt nach dem ersten erfolgreichen Eintrag in JobQ der Besitz nach root. Und genau das verstehe ich nicht.


    Zitat

    Wie rufst du vdr auf? su -c vdr? Ausserdem: irgendwo lässt du doch sicherlich ein wait2enc.sh laufen? Die Frage ist, unter welchem User das läuft. Ich tippe mal auf root...


    vdr wird nach Huberuts Anleitung mit runvdr beim Systemstart gestartet. Dort wird auch das wait2enc.sh Skript aufgerufen. In runvdr ist der User vdr eingetragen. Um vdr mit root ID laufen zu lassen, habe ich die Rechte von /usr/local/bin/vdr auf rwsr-xr-x gesetzt. Das 's' bewirkt, dass der Prozess 'vdr' immer mit der root ID läuft.


    Zitat

    Wenn vdr als root läuft, dann kannst du immer in die JobQ schreiben.


    Das dachte ich mir auch und kann auch nicht anders sein. Aber es funktioniert eben nicht. Der Prozess 'vdr' läuft definitv als root. Nur wechselt nach ersten Aufruf per reccmds.conf der Besitz der JobQ von vdr nach root. Was noch zu verstehen wäre, weil diese Datei vom Prozess 'vdr', der root Rechte besitzt, beschrieben wird. Wenn ich eine Datei abspeicher, gehört sie ja auch mir. Der zweite Aufruf landet dann nicht in der Datei, obwohl vdr mit root Rechten läuft.


    Zitat

    In dem Fall musst du die Besitzrechte an der JobQ wie oben beschrieben ändern. Frag mich jetzt nicht, warum ein chmod 666 JobQ nicht den Erfolg bringt.


    Wie gesagt, nach erstem Eintrag in JobQ wechseln die Rechte automatisch nach root, egal wem sie vorher gehört hat.


    Ich hab keine Ahnung warum, werde jetzt noch mal die man-pages zu dem besagten 's' durchstöbern und schauen was passiert, wenn ich dieses Recht der Datei wieder entziehe. Ich kann mir halt nicht erklären, warum die Besitzrechte nach dem ersten Eintrag automatisch wechseln und dann trotz root Rechte der zweite Eintrag nicht durchgeführt wird. Das widerspricht sich doch eigentlich :rolleyes:


    Bis dann
    Dagget

  • Zitat

    vdr wird nach Huberuts Anleitung mit runvdr beim Systemstart gestartet. Dort wird auch das wait2enc.sh Skript aufgerufen.


    Hmm, startest du die wait2enc per

    Code
    su -c wait2enc vdr

    oder plain? im letzteren Fall läuft wait2enc als root und ändert beim Löschen des Eintrags die Besitzrechte auf root. (war bei mir mal so)


    Zitat

    Um vdr mit root ID laufen zu lassen, habe ich die Rechte von /usr/local/bin/vdr auf rwsr-xr-x gesetzt. Das 's' bewirkt, dass der Prozess 'vdr' immer mit der root ID läuft.


    Warum lässt du vdr als root laufen, wenn du extra einen vdr-user hast? Ich habe das nicht gemacht und lasse vdr dementsprechend "nur" als vdr-user laufen. Ohne jegliche Probleme (Zeit stellen natürlich per sudo).


    Joe

  • Zitat

    Warum lässt du vdr als root laufen, wenn du extra einen vdr-user hast? Ich habe das nicht gemacht und lasse vdr dementsprechend "nur" als vdr-user laufen. Ohne jegliche Probleme (Zeit stellen natürlich per sudo).


    Wie machst du das per sudo. Wird die Zeit nicht von der vdr-software gesetzt? Und nicht per shell befehl, den ich dem vdr user per sudo bereitstellen kann? Das wäre dann für mich auf jeden Fall eine Lösung.

  • Zitat

    Wie machst du das per sudo. Wird die Zeit nicht von der vdr-software gesetzt? Und nicht per shell befehl, den ich dem vdr user per sudo bereitstellen kann?


    Ja, dazu musst du die eit.c editieren und "sudo date" aufrufen. Da gibt's bereits mehrere fertige Patches dafür. Wenn du nicht fündig wirst, dann kann ich dir ein diff schicken. Leider habe ich gerade keinen Zugriff zum vdr.


    Joe

  • Die Datei JobQ wird von Script wait2enc.sh nach dem Abarbeiten eines Jobs neu erstellt ! Folglich ändern sich auch die Rechte :]
    Wenn das nq.sh (Jobs hinzufügen) und wait2enc.sh Script mit dem selben Benutzer aufgerufen werden funktioniert das logischerweise auch!


    Per Hand mit chmod/chown die Datei JobQ anzupassen ist also nicht von Dauer :D


    Derzeit liess sich das in bash nicht anders lösen ... Bin aber für Vorschläge offen!


    Martin

  • Zitat


    Derzeit liess sich das in bash nicht anders lösen ... Bin aber für Vorschläge offen!


    Hi Martin,


    ist schon ne Weile her, dass ich in vdr2divx reingesehen habe. "Passt" bei mir aus verschiedenen Gründen nicht so richtig. Habe selbst mit der Zeit ein paar Sachen gebastelt, und die Ablaufsteuerung etwas anders realisiert. Insbesonere encodieren hier zuweilen mehrere Kisten parallel. War mehr so nt quick'n dirty Geschichte, aber funzt hier wunderbar. Vielleicht findest du die ein oder andere Idee ja ganz brauchbar.


    Ich benutze die vdr-Verzeichnisse dabei quasi als Mini-Datenbank.
    Mein Script läuft auf allen Rechnern und prüft in kurzen Intervallen, ob sich in einem Aufnahmenverzeichnis eine Datei namens "encode" befindet. Ist das der Fall, dann wird in das Verzeichnis gewechselt, die Datei nach encode_rechnername_working umbenannt und ausgeführt. Output in ein logfile im Verzeichnis. Nach erfolgreicher Encodierung Umbenennung in encode_rechnername_ok oder encode_rechnername_error .....und weiter nach encode-files gucken. Zuerst berücksichtigt werden dabei files, die encode-rechnername (bindestrich) heißen. Damit kann ich größere Aufnahmen bei Bedarf einer schnelleren Kiste zuweisen. Und der schnellere Rechner kommt gewöhnlich als erster zum Zuge. Mein shutdown-script für den vdr guckt noch, ob irgendwo ein encoding-logfile existiert, das innerhalb der letzten paar Minuten verändert wurde.


    Die "encode"-Dateien sehen z.B. so aus:
    #!/bin/sh
    /usr/local/bin/mpg2divx.py --deint --bitrate=1500 --crop=718:572:0:2
    und die generiere ich gewönlich mittels "croplook", das schwarze Ränder sucht und zur Kontrolle mit -vop rectangle visualisiert.


    Aber da könnte man natürlich auch ganz was anderes reinschreiben. Schön an der Geschichte ist, dass ich ziemlich leicht eingreifen kann. Ist mal ein Encodiervorgang während des zweiten Durchlaufs gekillt worden (weil ich den betreffenden Rechner runtergefahren habe), dann editiere ich die encode_rechnername_working Datei, füge --pass=2 hinten an, und benenne sie wieder nach "encode-rechnername" um.


    Irgendwann später benenne ich die output.avi manuell um, verschiebe sie, und lösche das Verzeichnis. Da ich selbst manchmal Probleme habe, den korrekten Titel zu finden, will ich das per Script erst garnicht versuchen;-)


    grüße


    metrio

Jetzt mitmachen!

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