nfs - user und Rechte (yavdr 0.3)

  • Hallo zusammen,
    ich versuche es jetzt schon seit längerem über NFS Verzeichnisse von meinem Server in meinen yavdr (0.3) einzubinden.
    Aber scheitere meiner Meinung nach an den Rechten.


    1. yavdr:
    - über die Weboberfläche habe ich die Freigabe eingegeben (192.168.2.2:/srv/nfs/audio) und mit übernehmen bestätigt.


    - dann den VDR neugestartet


    - man findet im /net.yavdr ein neues Verzeichnis mit der Adresse und einem Zähler. 192.168.2.2.000
    ein ls - /net.yavdr ergibt dann folgendes

    Code
    drwxrwxrwx 2 nobody nogroup 4096 2010-11-04 18:59 192.168.2.2.000


    In das Verzeichnis kann man auch wechseln, aber dann nicht mehr weiter


    ls -l /net.yavdr/192.168.2.2.000

    Code
    lrwxrwxrwx 1 root root 27 2010-10-23 16:35 music -> /mnt/extsdII/audio.00/music


    Fragen:
    - kann man noch einen User mitgeben, mit dem verbunden werden soll?
    - mit welchem User wird verbunden (vdr, root, install user)
    - als nobdoy bzw. nogroup wird verbunden, da die UserId auf yavdr seite nicht mit der UserId auf Server Seite übereinstimmt, oder?


    2. Server:
    - Das Verzeichnis /srv/nfs/audio erstellt und dieses zum Test dem User nobody und group nogroup zugeweisen.


    ls -l /srv/nfs

    Code
    drwxrwxrwx 2 nobody nogroup 4096  4. Nov 18:59 audio


    da die eigentlichen Files auf mehrere exteren Platten verteilt ist, liegen im Verzeichnis Sym-Links.


    ls -l /srv/nfs/audio

    Code
    lrwxrwxrwx 1 root root 32 23. Okt 16:35 audiobooks -> /mnt/extsdII/audio.00/audiobooks
    lrwxrwxrwx 1 root root 27 23. Okt 16:35 music -> /mnt/extsdII/audio.00/music


    ls -l /srv/nfs/audio

    Code
    drwxrwxr-x  2 root users 4096  8. Jun 22:54 audiobooks
    drwxrwxr-x 10 root users 4096  9. Jun 00:28 music

    Auf die eigentliche Verzeichnisse haben user die nicht root oder nicht in der Gruppe users sind also nur Lese-Recht.



    - Das Verzeichnis /srv/nfs/audio über die /etc/exports freigegeben


    /etc/exports

    Code
    /srv/nfs/audio 192.168.2.0/255.255.255.0(rw,sync,no_subtree_check)


    - nfs neugestartet exportfs -a und
    /etc/init.d/nfs-kernel-server restart



    Fragen:
    - muss ich an den Rechten auf die freigegebenen Verzeichnisse noch was ändern.
    - kann man die UserId und GroupIds einfach in der passwd und group so abändern, dass sie dem yavdr entprechen? (z.B. hat mysql auf dem server die id, die der vdr user auf dem yavdr hat)



    Wäre super, wenn mir jemand auf die Sprünge helfen könnte.



    Gruß und Danke


    vanTuxen

    VDR1: HW:M3N78-EM, Athlon 64 X2 3800+, 2GB RAM 512 MB Grafik, Skystart HD2, Artic IR-Einschalter V4 SW: yaVdr 0.3
    VDR-Server: HW: .... SW: debian 5.0.4 Backport-Kernel 2.6.30-bpo.2-686 vdr-1.7.11 e-tobi exp

    Einmal editiert, zuletzt von vanTuxen ()

  • Also über yaVDR speziell kann ich nichts sagen, allerdings über NFS.


    Zitat

    Original von vanTuxen
    - kann man noch einen User mitgeben, mit dem verbunden werden soll?
    - mit welchem User wird verbunden (vdr, root, install user)


    NFS verwendet keinen Usernamen oder Passwort um mit dem Server zu verbinden. Es wird einfach nur eine Verbindung hergestellt. In seiner einfachsten Form müssen bei NFS die Clients vertrauenswürdig sein, denn es wird einfach die UserID verwendet, mit der der Benutzer gerade auf dem Client eingeloggt ist. Das kann auch root sein, wenn in der /etc/exports "no_root_squash" angegeben wurde.


    Damit aber der Benutzer wirklich die gleichen Rechte hat wie auf dem Client, müssen die Gruppen übereinstimmen. Ist also z.B. ein User auf dem Client in der Gruppe "users", auf dem Server aber nicht, dann hat er serverseitig nicht das Recht auf Dateien zuzugreifen die der Gruppe "users" vorbehalten sind.


    Zitat


    - als nobdoy bzw. nogroup wird verbunden, da die UserId auf yavdr seite nicht mit der UserId auf Server Seite übereinstimmt, oder?


    Nein, es wird mit der client-seitigen Benutzerid verbunden. Nur wenn root-squashing aktiviert ist und die UserId 0 zugreift, wird in der Regel das ganze auf nobody:nogroup gemappt.



    Zitat


    2. Server:
    - Das Verzeichnis /srv/nfs/audio erstellt und dieses zum Test dem User nobody und group nogroup zugeweisen.


    Dann muss aber auch der client in der Gruppe "nogroup" sein, es sei denn du greifst als root zu.


    Zitat


    da die eigentlichen Files auf mehrere exteren Platten verteilt ist, liegen im Verzeichnis Sym-Links.


    Das funktioniert nicht, weil NFS auf Inode-Basis arbeitet. Du musst jede Festplatte einzeln per NFS freigeben.



    Zitat


    - muss ich an den Rechten auf die freigegebenen Verzeichnisse noch was ändern.


    Du solltest dir eine Rechtestruktur ausdenken, die du dann auf beiden Rechnern anlegst. Dabei müssen überall die gleichen Gruppen existieren und auch alle User in den selben Gruppen sein. Am besten du verwendest nur Benutzer-IDs die größer als 1000 sind. Alles unter 1000 ist für das System reserviert.


    Zitat


    - kann man die UserId und GroupIds einfach in der passwd und group so abändern, dass sie dem yavdr entprechen? (z.B. hat mysql auf dem server die id, die der vdr user auf dem yavdr hat)


    Nein, auf keinen Fall. Also prinzipiell geht das schon, dann müsstest du aber nach dem ändern der Benutzer-ID alle Rechte neu setzen. Besser ist, du fasst Benutzer-IDs unter 1000 einfach nicht an.

  • Hallo,
    vielen Dank für die Antwort, hat mich schon sehr viel weiter gebracht. Da muss ich mich wohl noch etwas tiefer mit dem Thema auseinandersetzen.


    Für die Sym-Links hab ich schon was schönes gefunden:Using symbolic links with NFS



    Zitat

    Nein, es wird mit der client-seitigen Benutzerid verbunden. Nur wenn root-squashing aktiviert ist und die UserId 0 zugreift, wird in der Regel das ganze auf nobody:nogroup gemappt.

    Bei yavdr wird anscheinend mit dem user root verbunden. Nachdem ich no_root_squash eingestellt habe funktionierts auch.



    Gruß vanTuxen

    VDR1: HW:M3N78-EM, Athlon 64 X2 3800+, 2GB RAM 512 MB Grafik, Skystart HD2, Artic IR-Einschalter V4 SW: yaVdr 0.3
    VDR-Server: HW: .... SW: debian 5.0.4 Backport-Kernel 2.6.30-bpo.2-686 vdr-1.7.11 e-tobi exp

  • Zitat

    Original von vanTuxen
    Für die Sym-Links hab ich schon was schönes gefunden:Using symbolic links with NFS


    Das ist nur eines der Probleme die bei symbolischen Links auftreten können. Das eigentliche Problem ist, dass NFS nicht über mount-points hinweg zugreifen kann. Wenn sich das mittlerweile nicht geändert hat, dann sieht der Client deine externen Festplatten nicht. Er sieht zwar die Links aber kann nicht drauf zugreifen, weil das ein anderer Mount-Point ist. Alle mount points müssen (oder mussten) einzeln freigegeben werden.



    Zitat

    Bei yavdr wird anscheinend mit dem user root verbunden. Nachdem ich no_root_squash eingestellt habe funktionierts auch.


    Sehr unsauber von yaVDR gelöst. VDR muss eigentlich nicht als root laufen.

  • Zitat

    Original von Temar
    Sehr unsauber von yaVDR gelöst. VDR muss eigentlich nicht als root laufen.


    Tut er auch nicht, hat seinen eigenen eingeschränkten account.


    Wer alkoholfreies Bier trinkt, wählt auch kompetenzfreie Politiker [frei nach Volker Pispers]

  • Zitat

    Sehr unsauber von yaVDR gelöst. VDR muss eigentlich nicht als root laufen.


    Selbstverständlich läuft der VDR in yaVDR nicht als root :lehrer1

    Mutterbrett: Foxconn g31mx mit Core2Duo E2200, 2GB / 1TB Hitachi / 240er GT weil 9500er gehimmelt / X10 / FF1.3 & Pinnacle PCTV Sat HDTV Pro USB / TV nur noch unter yaVDR und mit The Beast natürlich


    Dieser Beitrag wird 81 mal editiert, zum nächsten Mal von Dirch: Morgen, so um 20:39 :whistling:

  • Zitat

    Original von steffen_b
    autofs/automount


    Ich bin jetzt mit autofs/automount nicht mehr vertraut, aber ist es nicht so, dass automount das NFS Verzeichnis nur mountet?


    Ich hab automount zuletzt vor 8 Jahren benutzt, daher bin ich nicht auf dem aktuellen Stand, aber damals wurde nur die Mount-Operation ausgeführt. Die einzelnen Zugriffe wurden weiterhin unter der entsprechenden Benutzer-ID durchgeführt. Und so sollte es ja eigentlich auch sein, denn sonst würde das Rechte-Management kompromittiert.


    Hat sich das wohl geändert? Wenn ja, wisst ihr zufällig warum? Das macht doch die komplette Rechterverteilung zu nichte.

  • Ich weiss nicht wovon du sprichst Temar. Natürlich hängt der nur ein. Die Rechte sind so wie sie sind bei der Freigabe.


    Mountoptionen sind: rw,nosuid,nodev,hard,intr,sloppy,addr=

    VDR User: 87 - LaScala LC14B - LG/Phillipps 6,4" VGA Display | Asrock H61/U3S3 | G630T | 1x 16GB Mobi Mtron 3035 1x WD 750GB 2,5" |1x L4m DVB-S2 Version 5.4

  • Zitat

    Original von steffen_b
    Ich weiss nicht wovon du sprichst Temar.


    Ich beziehe mich auf vanTuxen's Problem von weiter oben. Bei ihm wurden Zugriffe von yaVDR auf das NFS per root durchgeführt. Andernfalls hätte er nicht "no_root_squash" angeben müssen.


    Kann natürlich sein, dass er irgendwelche eigenen Modifikationen vorgenommen hat. Ich fand deine Antwort nur merkwürdig, weil autofs/automount ja nichts mit den eigentlichen Zugriffen zu tun hat. Insofern spielt die UserID von automount aus Sicht des NFS Servers keine Rolle. Den NFS Server interessiert nur die Benutzer-ID des Users, der auf die Daten zugreifen will - und das war bei vanTuxen eben root. Darauf bezog ich mich.

  • Zitat

    Original von steffen_b
    no root squash brauch man wenn die freigabe auf dem server root gehört hat nichts mir dem client zu tun IMHO


    Das ist nicht richtig. Bei der einfachsten Form von NFS, wenn man also kein Kerberos oder ähnliche Authentifizierungsmethoden verwendet, geht es nur um die Benutzer-ID des Clients. Root Squashing verhindert einfach nur, dass der root User des Clients Vollzugriff bekommt. "no_root_squash" muss also immer dann angegeben werden, wenn man vom Client aus per root auf das NFS share zugreifen will. Ansonsten wird der root-Account automatisch auf nobody:nogroup gemappt (oder was man eben auf dem Server eingestellt hat).


    Siehe auch: man 5 exports


    Zitat


    Very often, it is not desirable that the root user on a client machine is also treated as root when accessing files on the NFS server. To this end, uid 0 is normally mapped to a different id: the so-called anonymous or nobody uid. This mode of operation (called `root squashing') is the default, and can be turned off with no_root_squash.

  • Haben denke ich mal aneinander vorbeigeredet, bzw ich habe nicht gründlich genug gelesen. Ich hab das Geschriebene grade nochmal überflogen.


    Freigaben die auf dem Server dem user root gehören, gehören standardmässig dann nobody. (siehe ersten Post). Was genau mit "wird verbunden" gemeint ist weiss ich nicht. Wenn versucht wird auf dem Server auf Aufnahmen oder Medien zuzugreifen (via vdr-sxfe oder XBMC) dann wird das auch mit no_root_sqash nicht funktionieren, da alle Prozesse wie vdr, vdr-sxfe und xbmc als system-user vdr ausgeführt werden. Dieser User hat ein paar zusätzliche Rechte auf DBus um per Hal mounten zu können (USB Mount) oder Dienste zu starten und zu stoppen (per upstart).


    Mein Gedanke war, das der Eingentümer root auf dem Server für irgendwas worauf er am yavdr-client zugreifen will, nicht gerade ideal ist.


    Zitat

    Sehr unsauber von yaVDR gelöst. VDR muss eigentlich nicht als root laufen.


    Stimmt, würden wir auch nicht tun. Aber das ist ja inzwischen geklärt.

    VDR User: 87 - LaScala LC14B - LG/Phillipps 6,4" VGA Display | Asrock H61/U3S3 | G630T | 1x 16GB Mobi Mtron 3035 1x WD 750GB 2,5" |1x L4m DVB-S2 Version 5.4

  • Zitat

    Original von steffen_b
    Freigaben die auf dem Server dem user root gehören, gehören standardmässig dann nobody.


    Nein, Freigaben die auf dem Server root gehören, gehören auch weiterhin root. Nur der root User des Clients hat keine Rechte mehr darauf zuzugreifen, weil er serverseitig auf nobody:nogroup gemappt wird.


    Zitat


    Stimmt, würden wir auch nicht tun. Aber das ist ja inzwischen geklärt.


    Dann hat vanTuxen wohl irgendwas modifiziert.

  • Hallo,

    Zitat

    Dann hat vanTuxen wohl irgendwas modifiziert.


    nein, es ist alles wie out of the box auf dem yavdr. Hab da wohl die Situation durch mein Unwissen etwas falsch beschrieben.


    Zusammenfassend würde ich jetzt folgendes machen.
    - Für jede externe Platte einen eigenen Eintrag in die /etc/exports
    - Der User der von yavdr auf die nfs-freigaben zugreift ist der user "vdr", diesen auf dem yavdr die Gruppe users aufnehmen (auf dem server ist er da schon).
    - Da ich die Rechte auf dem Server hauptsächlich über die Gruppe steuere und die Id der Gruppe users auf beiden systemen (yavdr, server) gleich ist, sollte der user zugriff bekommen
    - Das die UserId auf den System unterschiedlich ist, stört mich nicht.



    Gruß und Danke vanTuxen

    VDR1: HW:M3N78-EM, Athlon 64 X2 3800+, 2GB RAM 512 MB Grafik, Skystart HD2, Artic IR-Einschalter V4 SW: yaVdr 0.3
    VDR-Server: HW: .... SW: debian 5.0.4 Backport-Kernel 2.6.30-bpo.2-686 vdr-1.7.11 e-tobi exp

Jetzt mitmachen!

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