Docker-TVHeadend-/recordings Permission denied

  • Hi. Ich hoffe jemand kann mir da helfen. Bin Anfänger in Docker und diese Linux User zuteilung.


    Ich habe das Problem das ich mit Docker TVHeadend nicht auf meine Interne Nas Platte schreiben kann.
    2018-09-03 22:18:00.001 pass: /recordings/ - -.ts: Unable to create file, open failed -- Permission denied
    2018-09-03 22:18:00.001 dvr: Recording error: "/recordings/ - -.ts": Unable to open file


    Habe meine Platten wie im Bild gemountet. Die Platte wird auch erkannt Speicher wird oben in TVH angezeigt.




    Danke für die Hilfe


    mfg

  • Moinsen,


    das sieht so weit schon gut aus. Zeig Mal den Output von: ls -l /media/c67575bc-.../NASDisk1/TVHeadend2 (... bitte vervollständigen).


    Ich habe die Vermutung, dass der vom TVHeadend Docker verwendete Default-User keine Berechtigungen hat.


    Berechtigungen des rec-Verzeichnisses kannst du mit chmod und chown auf der command line anpassen. Lies dich da mal ein. Ich kann dich da auch unterstützen, wenn du mir den Output von oben zeigst.



    Viele Grüße

    ----------------------------------------------------------------------------------
    openmediavault 6 | proxmox kernel | zfs | docker | kvm
    supermicro x11ssh-ctf | xeon E3-1240L-v5 | 64gb ecc | 8x10tb wd red | digital devices max s8
    ---------------------------------------------------------------------------------------------------------------------------------------

  • Danke das du mir Hilfst.


    Das kam nach dem Vervollständigen heraus:
    ls: cannot access '/media/c67575bc-8b36-40f2-9876-77cd997dc2e2/NASDisk1/TVHeadend2/recordings': No such file or directory


    Sehr komisch der Ordner ist aber da

    Ich hoffe das du mir da was sagen kannst.



    edit:
    wenn ich nur ls -l mach sieht es so aus:
    total 428
    drwxr-xr-x 1 abc abc 4096 Sep 1 00:03 app
    drwxr-xr-x 1 root root 4096 Sep 1 00:05 bin
    drwxrwsr-x+ 15 abc abc 4096 Sep 3 21:54 config
    drwxrwxr-x 1 abc abc 4096 Aug 18 00:04 defaults
    drwxr-xr-x 5 root root 340 Sep 5 16:59 dev
    drwxrwxr-x 1 root root 4096 Sep 5 16:59 etc
    drwxr-xr-x 2 root root 4096 Sep 1 00:03 home
    -rwxr-xr-x 1 root root 389 Mar 1 2018 init
    drwxr-xr-x 1 root root 4096 Sep 1 00:11 lib
    drwxr-xr-x 2 root root 4096 Mar 1 2018 libexec
    drwxr-xr-x 5 root root 4096 Sep 1 00:03 media
    drwxr-xr-x 2 root root 4096 Sep 1 00:03 mnt
    drwxr-xr-x 1 abc abc 356352 Sep 1 00:12 picons
    dr-xr-xr-x 190 root root 0 Sep 5 16:59 proc
    drwxrwsr-x+ 2 1000 100 4096 Sep 2 21:20 recordings
    drwx------ 2 root root 4096 Sep 1 00:03 root
    drwxr-xr-x 1 root root 4096 Sep 5 16:59 run
    drwxr-xr-x 1 root root 4096 Sep 1 00:03 sbin
    drwxr-xr-x 2 root root 4096 Sep 1 00:03 srv
    dr-xr-xr-x 13 root root 0 Sep 2 20:47 sys
    drwxrwxrwt 1 root root 4096 Sep 5 17:03 tmp
    drwxrwxr-x 1 root root 4096 Aug 18 00:04 usr
    drwxr-xr-x 1 root root 4096 Sep 1 00:11 var



    Kann das sein, das hier das Problem liegt ?
    drwxrwsr-x+ 2 1000 100 4096 Sep 2 21:20 recordings


    weil das laufwerk wird auf diesen ordner (recordings) gemounted


    der config odner sieht anders aus da sind auch files drin.

  • Puuh, schwierig, so aus der Ferne. Ich probiere es mal.


    • Wenn du dich per SSH mit deinem OMV-Server verbunden hast, gib mal folgendes auf der Command Line ein (Das müsste das Ergebnis sein, was du zuvor gepostet hattest): ls - l /media/c67575bc-8b36-40f2-9876-77cd997dc2e2/NASDisk1/TVHeadend2
    • Danach folgendes: ls - l /media/c67575bc-8b36-40f2-9876-77cd997dc2e2/NASDisk1/TVHeadend2/recordings
    • Wenn das dann zu dem Fehler "ls: cannot access '/media/c67575bc-8b36-40f2-9876-77cd997dc2e2/NASDisk1/TVHeadend2/recordings': No such file or directory" führt, stimmt da schon etwas nicht.
    • Stoppe mal den TVH Docker Container und führe den Befehl erneut aus. Funktioniert "ls -l .../recordings" nun?
    • Wenn nicht, führe nochmal den ersten Befehl aus, um zu prüfen, ob es den Ordner "recordings" überhaupt gibt. Hast du diesen Ordner manuell erstellt? Oder nur dorthin gemounted? Ich weiß gerade nicht, ob der Docker Container nicht vorhandene Ordner selbständig beim Mounten erstellt.
    • Wenn es den Ordner nicht gibt, führe folgendes auf der Command Line aus, um den Ordner zu erstellen: mkdir /media/c67575bc-8b36-40f2-9876-77cd997dc2e2/NASDisk1/TVHeadend2/recordings Wenn es den Ordner gibt, vergiss diesen Schritt!
    • Nun müssen wir uns die Berechtigungen genauer anschauen. Wie du siehst, steht bei "ls -l" überall "root root". Das heißt der User "root" in der Gruppe "root" ist Besitzer der Datei bzw. des Ordners. Bei dem "recordings"-Ordner steht stattdessen "1000 100". Das heißt der User mit der ID 1000 und die Gruppe mit der ID 100 sind hier die Owner. Beides gibt es aber nicht, sonst würde hier der User- bzw. Gruppenname angezeigt werden. Hast du "ls -l" im Container ausgeführt oder direkt auf der Command line?
    • Testweise könntest du den Order "recordings" mal wie folgt anpassen: chown root:root /media/c67575bc-8b36-40f2-9876-77cd997dc2e2/NASDisk1/TVHeadend2/recordings. Dann den Container nochmal starten und schauen, ob es funktioniert.


    Kopiere bitte alles, was du in die Command Line eingibst, als "Code" formatiert in deinen nächsten Post. Dann kann man einfach besser nachvollziehen, was du machst und was das Ergebnis war.


    Ansonsten müsstest du evtl. einfach mal einen User in der Gruppe "users" (Group-ID ist 100) anlegen. Der User müsste automatisch die User-ID 1000 bekommen, wenn es der erste Benutzer ist, den du anlegst. Auf der Command Line geht das wie folgt: useradd -G users eraser. "eraser" ist der Benutzername und "users" die Gruppe.


    Gruß Hoppel

    ----------------------------------------------------------------------------------
    openmediavault 6 | proxmox kernel | zfs | docker | kvm
    supermicro x11ssh-ctf | xeon E3-1240L-v5 | 64gb ecc | 8x10tb wd red | digital devices max s8
    ---------------------------------------------------------------------------------------------------------------------------------------

    Einmal editiert, zuletzt von hoppel118 ()

  • Die anderen Ergebnisse hatte ich beim Docker CMD gemacht.
    Das kommt in SSH OMV.
    1.

    Code
    root@openmediavault:~# ls -l /media/c67575bc-8b36-40f2-9876-77cd997dc2e2/NASDisk1/TVHeadend2
    insgesamt 8
    drwxrwsr-x+ 15    911   911 4096 Sep  3 21:54 config
    drwxrwsr-x+  2 Daniel users 4096 Sep  2 21:20 recordings

    2.

    Code
    ls -l /media/c67575bc-8b36-40f2-9876-77cd997dc2e2/NASDisk1/TVHeadend2/recordings
    insgesamt 0


    Also bei config 911 ist der user vom tvheadend container
    recordings ist der user vom SMB zugriff. Eigentlich müsste recordings auch die 911 haben. aber dann habe ich doch kein zugriff auf den ordner per smb

  • Hier ist der User 911 drin kann man den nicht ändern ?
    start log vom container


    Linux und User da bekomm ich Graue Haare. Nicht das erste System

  • OK, es gibt die Möglichkeit beim Einrichten des Docker Containers in OMV 2 Variablen mitzugeben. Schau mal unter folgendem Link im Kapitel "User / Group Identifiers":


    https://hub.docker.com/r/linuxserver/tvheadend/


    Mit "PUID" und "PGID" kannst du User und Group im Docker Container vorgeben.


    Dafür musst du meiner Ansicht nach wie folgt vorgehen:


    • Docker Container beenden
    • Owner des config-Ordners über die Command Line in OMV anpassen: chown 1000:100 -R /media/c67575bc-8b36-40f2-9876-77cd997dc2e2/NASDisk1/TVHeadend2/config
    • Über die Command Line in OMV nochmal prüfen, ob bei beiden Ordner "config" und "recordings" nun "Daniel users" zugeordnet sind: ls -l /media/c67575bc-8b36-40f2-9876-77cd997dc2e2/NASDisk1/TVHeadend2
    • Die beiden Variablen "PUID 1000" und "PGID 100" in der Docker Container Configuration ergänzen. Nun wird dein Container zukünftig mit dem User "Daniel" in der Gruppe "users" ausgeführt
    • Docker Container starten, falls das nicht gerade bereits automatisch passiert ist


    So sollte das funktionieren. Es wäre trotzdem gut, wenn du du ein Backup hast oder dich darauf einstellst, den Container komplett neu einzurichten.


    Es sollte übrigens auch möglich sein, den Docker Container mit einem anderen User in der Gruppe "users" zu starten. So hätte dein TVH Container nicht auf alles Zugriff, wo auch "Daniel" Zugriff hat. Die Gruppe muss auch nicht unbedingt "users" sein. Du musst nur sicherstellen, dass die im TVH Container definierte Gruppe dieselbe wie die deines smb-Users ist und diese auch auf Filesystem-Ebene hinterlegt ist.


    User-IDs und Group-IDs kannst du übrigens in „/etc/passwd“ und „/etc/group“ ermitteln.


    Noch Fragen?


    Bin gespannt auf deine Rückmeldung. Auf diese Weise hatte ich aber auch schonmal in einem Container den User nachträglich geändert.


    Gruß Hoppel

    ----------------------------------------------------------------------------------
    openmediavault 6 | proxmox kernel | zfs | docker | kvm
    supermicro x11ssh-ctf | xeon E3-1240L-v5 | 64gb ecc | 8x10tb wd red | digital devices max s8
    ---------------------------------------------------------------------------------------------------------------------------------------

    4 Mal editiert, zuletzt von hoppel118 ()

  • Moinsen,


    mir ist gerade noch eingefallen, dass du auch andersherum vorgehen könntest.

    • Du legst dir auf deiner OMV Maschine einfach einen User "tvheadend" mit der User-ID "911" und der Gruppenzugehörigkeit "users" an. Dafür müsstest du lediglich folgenden Befehl auf der Command Line ausführen: useradd -u 911 -o -g users tvheadend
    • Nun musst du noch die Berechtigungen deines "recordings" Verzeichnisses mit folgendem Befehl anpassen: chown 911:100 -R /media/c67575bc-8b36-40f2-9876-77cd997dc2e2/NASDisk1/TVHeadend2/recordings Dies ist erforderlich, weil der Docker Container ja nicht weiß, dass er auf dem Host in der Gruppe "users" ist und ohne diesen Befehl weiterhin keine Berechtigungen auf das Verzeichnis hätte.


    Aber Achtung, User-IDs im Bereich von 0 bis 999 gehören eigentlich dem System. Dafür habe ich in dem vorangegangenen Befehl die Option "-o" ergänzt. Wenn du dir sicher bist, dass diese User-ID nicht bereits vergeben ist, schau einfach mal in "/etc/passwd" nach, könntest du "-o" auch weglassen.


    Mit diesen Befehlen wären dann sowohl der "tvheadend" User als auch "Daniel" in der Gruppe "users" und beide sollten Zugriff auf das "recordings" Verzeichnis haben.


    Bin gespannt für welchen Weg du dich entscheidest. Funktionieren sollte beides. Ich persönlich würde wahrscheinlich die gestern beschriebene Variante umsetzen, auch wenn die gerade beschriebene Variante einfacher umsetzbar ist.


    Viele Grüße Hoppel

    ----------------------------------------------------------------------------------
    openmediavault 6 | proxmox kernel | zfs | docker | kvm
    supermicro x11ssh-ctf | xeon E3-1240L-v5 | 64gb ecc | 8x10tb wd red | digital devices max s8
    ---------------------------------------------------------------------------------------------------------------------------------------

  • Hi.
    Ich muss OMV Neu aufsetzen irgend etwas hat da was durcheinander gebracht. Wollte User Rechte verändern. Was gar nicht erst ging Fehlermeldung nxgin.... oder so hab omv neugestartet und es ging nix mehr außer Docker mit gestartetem TVHeadend.
    Komme nicht mehr auf die OMV Oberfläche oder SMB Laufwerke. Im SSH dann reinstall probiert, aber auch Fehler.
    Jetzt setz ich erstmal neu auf.

  • What??? Was auch immer du da nun gemacht hast...


    Aber dann kanst du den TVH Container ja direkt mit PUID und PGID konfigurieren. ;)


    Ich habe mir beispielsweise über die OMV-Weboberfläche einen User „elfriede“ angelegt, der die User-ID 1000 automatisch vom System erhalten hat. Dann habe ich mir noch eine eigene Gruppe „family“ gebaut, die die Group-ID 1000 hat. Dann habe ich meinen User „horst“ angelegt, der dann folglich die User-ID 1001 erhalten hat. Beide User habe ich über das OMV-WebInterface der Gruppe „family“ (Group-ID 1000) zugeordnet.


    Dann habe ich auf Filesystemebene wie zuvor schon beschrieben mit dem Befehl „chown horst:family -R /meine/verzeichnisse“ und alle darin enthaltenen Dateien entsprechend angepasst (statt „horst:family“ kannst du auch „1001:1000“ in den Befehl schreiben). Über die Gruppe „family“ haben dann beide Benutzer Zugriff auf diese Verzeichnisse, auch wenn der Besitzer „horst“ ist.


    Den User mit der User-ID 1000 und die Gruppe mit der Group-ID 1000 verwende ich grundsätzlich in Docker Containern. Dann brauche ich mir smb und Co keine Gedanke machen. Die Container selbst wissen ja nicht, was außerhalb des Containers passiert...


    By the way, „horst“, „elfriede“ und „family“ sind frei erfunden. Ich hoffe, dass du das Konzept damit verstehst. ;)


    Gruß Hoppel

    ----------------------------------------------------------------------------------
    openmediavault 6 | proxmox kernel | zfs | docker | kvm
    supermicro x11ssh-ctf | xeon E3-1240L-v5 | 64gb ecc | 8x10tb wd red | digital devices max s8
    ---------------------------------------------------------------------------------------------------------------------------------------

  • Wie kann man den die User ID Sehen in OMV ?


    Dann habe ich auf Filesystemebene wie zuvor schon beschrieben mit dem Befehl „chown horst:family -R /meine/verzeichnisse“ Ist das nicht in der OMV Oberfläche Zugriffskontrolle -> Freigabe Ordner -> ACL

Jetzt mitmachen!

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