Hilfe beim Mounten von nfs-share, trivial?

mr44er

moderater Moderator
Staff member
Hi!

Ich komm mir etwas doof vor beim Mounten.

Unter Linux (Mint) habe ich eine Freigabe von meinem Server zuerst so gemountet:

Code:
sudo mount -t nfs x.x.x.x:/mnt/pool1/ordner1 /mnt/ordner1

Nur root kann den Mountbefehl absetzen, soweit klar. Mein Useraccount konnte dann nicht auf /mnt/ordner1 zugreifen, auch jetzt klar, weil der normale User keine Rechte auf / hat.

Mittels

Code:
sudo mount -t nfs x.x.x.x:/mnt/pool1/ordner1 /home/user1/mnt/ordner1

konnte ich dann drauf zugreifen, da der normale User ja volle Rechte im eigenen Ordner hat.

Unter FreeBSD habe ich folgendes gemacht:

Code:
su
mount x.x.x.x:/mnt/pool1/ordner1 /home/user1/mnt/ordner1

Leider habe ich dann trotzdem nur als root Zugriff.

Woran liegt das? Was kann man da tun?
 
mount -t nfs -o rw .......

könnte schon langen.
Nun habe ich nicht das Wissen dazu, aber es scheint, dass unterschiedliche NFS Versionen leicht unterschiedlich reagieren und damit meine ich nicht nur Version 3 zu Version 4, sondern auch NFS bei FreeBSD im Unterschied zu manchen Linux oder auch Mac-OS-X und Solaris.
Mit Version 4 kannst du grundsätzlich auch einen User bestimmen, der die Freigabe mounten möchte und dazu dann ein passendes Passwort abfragen.
Ansonsten Werden die Freigaben ja mit deiner lokalen UID als Nutzer gemountet und diese ID kann identisch sein jener auf dem Server, aber sie wird wohl meist verschieden sein. Wenn du dich nicht selbst um diese UIDs kümmerst, vergibt das System beim Anlagen der Nutzer (auch root) diese IDs automagisch und das kann sich nun mal von System zu System unterscheiden und außerdem kannst dein lokaler User ja ohnehin unterschiedlich sein, zu deinem User auf dem Server, dem die Dateien gehören und der für sich und andere entsprechende Rechte gesetzt hat.
Das ist also schon mal wichtig, dass die Freigaben und alle darin enthaltenen Dateien auch passende rechte für alle möglichen User besitzen, wenn sie großzügig über NFS verteilt werden sollen.
Gleiches gilt auch für die Mountpoints. Du kannst natürlich jeden Ordner ( etwa /mnt ) mit entsprechenden Rechten versehen, so dass auch jeder Nutzer berechtigt zu allem ist. Evtl gilt dies nicht automatisch, nur weil ein Ordner in deinem Heimat-Verzeichnis liegt. Hast du einen Ordner hier als root erstellt, wird er womöglich gar nicht deinem User gehören.

Also, kurz gesagt, meine Vermutung ist, dass du ein Problem mit den Rechten für die unterschiedlichen Nutzer hast. Versuch es, minimal zu beschränken (alles auf 777) und von dort weiter vor zu arbeiten, wenn dies Erfolg hatte.
 
So, eine doofe Frage: gehören /home/user1/mnt/ und /home/user1/mnt/ordner1 denn user1?
 
hi männers (auch danke an pit, du hast mir damals im thread vom umstieg win7->freebsd geholfen) und sorry für die lange wartezeit, bin selbständiger unternehmer und noch im ersten jahr....bin immer noch froh, wenn ich mal zeit für schlaf habe :)

also....ich weiß nicht genau, ob ich das richtig verstanden habe und versuche es mit eigenen worten wiederzugeben und noch etwas ins detail zu gehen.

auf meinem nas4free-server habe ich unterschiedliche datasets von zfs. das spielt keine rolle bei der berechtigung, nur dem verständnis.

lokal auf dem server ist dataset1 und dataset2 unter /mnt/pool1/dataset1 bzw. /mnt/pool1/dataset2 gemountet.

es gibt benutzer1(uid 1000) und benutzer2(uid 1001) sowie die gruppe1 (gid 1001) und gruppe2 (gid 1002).
benutzer1 ist in den beiden gruppen, benutzer2 nur in gruppe2

dataset1 hat als besitzer benutzer1 und als gruppe gruppe2. der besitzer darf rwx, die gruppe r-x, others darf nichts
dataset2 hat als besitzer benutzer1 und als gruppe gruppe1. der besitzer darf rwx, die gruppe rwx, others darf nichts

vom windows-client per samba aus funktioniert das je nach eingeloggtem benutzer (es kommt ja bei zugriff die anmeldemaske) korrekt wie gewollt.

vom bsd/linuxclient (ist egal, ob ich linux oder bsd nehme, eine unterschiedliche reaktion habe ich jetzt per neuem test nicht feststellen können) aus lege ich der einfachheit halber mal unter /home/user/meinedaten an. der ordner gehört ja nun dem user lokal auf dem client.
mounte ich in diesem ordner einen nfs-ordner, sind die berechtigungen und besitzer anders. sind das die berechtigungen dann vom server?
heißt das, ich muss auf dem client die genau gleichen benutzernamen+uids / gruppennamen+gids haben? oder reichen gleiche uids+gids?

Mit Version 4 kannst du grundsätzlich auch einen User bestimmen, der die Freigabe mounten möchte und dazu dann ein passendes Passwort abfragen.

da sagst du was...bei windows kommt ja eine anmeldemaske, die gegen den server prüft, unabhängig mit welchen namen ich im windows eingeloggt bin. unter bsd und linux bin ich ja dann auch schon eingeloggt und bekomme keine abfrage.
da ich den mount-befehl auch nur als root absetzen darf, weiß ich nicht, ob root nur für die reine erlaubnis des befehls zuständig ist oder ob das dann noch zu den ordner-berechtigungen mitspielt.

irgendwie fehlt mir der kleine knackpunkt zum verständnis....
 
Also, man muss unterscheiden:

- NFS2 und NFS3 übertragen die blanken UIDs und GIDs über das Kabel. Daher müssen idealerweise auf Client und Server sowohl UID als auch GID gleich sein. Berechtigungen werden dabei auf dem Client gesetzt und auf dem Server geprüft. Der Client sagt als "Ich bin UID 1001" und der Server schaut dann nach, ob UID 1001 die Datei lesen darf. Der Server weiß allerdings nicht, ob wirklich UID 1001 auf der Gegenseite sitzt. Das macht NFS2 und NFS3 sehr unsicher (was im überschaubaren LAN aber eigentlich kein Problem sein sollte) und gibt dem Client Interpretationsspielraum. Unter FreeBSD sind die Verzeichnisberechtigungen völlig egal. Root muss zwar mounten, aber alle Zugriffe auf den Mountpunkt werden unter der UID des durchführenden Programms gemacht. D.h. wenn UID 1001 zugreift, wird dem Server auch UID 1001 mitgeteilt.

- NFS4 trat an, um die Probleme von NFS2 und NFS3 auszuräumen. Es bietet zwei Sicherheitsmodi. Kerberos und System. Kerberos lassen wir mal außen vor, denn du wirst eher kein Kerberos nutzen. Bei System werden Nutzernamen und Gruppennamen über das Netzwerk übertragen und ein Hintergrunddienst (unter FreeBSD nfsuserd) ist dafür verantwortlich, diese Klartextnamen in lokale UID und GID zu wandeln. Otto ist auf dem Client UID 1001 und auf dem Server 1111. Das Mapping sorgt dafür, dass Otto auf dem Client die Dateien lesen darf, die auf dem Server UID 1111 gehören. Kurz gesagt, der Zwang überall gleiche UID und GID zu haben fällt weg. Der Mountpoint und dessen Berechtigungen spielen hier wieder keine Rolle, genauso wenig wer gemountet hat. Die Zugreifbarkeit entscheidet sich am Klartextnutzernamen. Berechtigungsprobleme bei NFS4 sind sehr häufig darauf zurückzuführen, dass das Mapping nicht klappt. Gerade über verschiedene Betriebssysteme hinweg kann es wackelig sein.

Daher: In homogenen Umgebungen ist NFS4 eigentlich die bessere Wahl. In heterogenen Umgebungen kann NFS3 der Weg des geringeren Widerstands sein.
 
Ok, verstehe. Kerberos dürfte dann ein Thema werden, wenn ich komplett umstelle.
Oder ist ein nachgebasteltes AD von samba4 dann die bessere Wahl? Doofe Frage...kommt wahrscheinlich auf meinen Einsatzzweck an, was? :)

NFS ist vom Namen abgeleitet ja ein Serverdienst. Mit welchem Befehl bekomme ich die Versionsinfo?
Und wenn ich das richtig auffasse, liegt der Knackpunkt dann nur an der Version des Servers?
Oder gibt es noch unterschiedliche Versionen von nfs-common?
 
Kerberos ist ja erst einmal nur ein Login-Managementsystem, was Microsoft in minimal abgewandelter Form ins AD übernommen hat. Du kannst also Kerberos allein nutzen, oder eben mit dem AD zusammen. In der Praxis dürfte es von deiner Umgebung abhängen. In reinen Unix/Linux-Umgebungen wird man sich keinen AD antun wollen, unter Windows kommt man andererseits oft genug nicht drum herum...

NFS ist ein Serverdienst, ja. Aber unter den meisten Systemen ist er als Kernel-Komponente in Kombination mit einem oder mehreren Userland-Diensten implementiert. Sowohl Linux als auch FreeBSD unterstützen schon seit längerem NFS4, allerdings die älteren Versionen weiterhin. Welche Version genutzt wird, entscheidet der Client beim Mount. FreeBSD mountet ein NFS3, wenn keine andere Version angegeben wurde. Z.B. so: "mount -t nfs -o nfsver=3". Linux mountet NFS4, wenn der Server es anbietet. Was wie gesagt Probleme machen kann, wenn der Server ein anderes System als Linux nutzt, da das User-Mapping eventuell schief geht. Man kann NFS3 erzwingen: "mount -t nfs -o nfsver=3". Das Linux-Kommando ist aus dem Kopf getippt, eventuell ist es leicht anders.
 
Back
Top