Besitzer und Permissions für Clients auf NFS im Lan. Wie am besten vorgehen?

le0m

Cadet 4th Year
Registriert
Juni 2015
Beiträge
94
Hi,

ich habe einen NFS auf meinem Linux Homeserver installiert und frage mich, wie man am besten mit Client Permissions umgeht und was für eine Verzeichnisstruktur man anlegen sollte. Hier das Szenario:

Auf dem Server läuft ein NFS, um Dateien für Clients (alle Linux) im LAN bereit zu stellen.
Jeder Client kann auf seine persönlichen Dateien auf dem Server zugreifen, nicht aber auf die der anderen Clients.
Zusätzlich soll es Orte geben, auf die mehrere Clients gemeinsam zugreifen können.

Ich stelle mir das so vor, dass ich mit root Rechten auf dem Server Ordner für alle Clients und Groups erstelle und die Rechte entsprechend verteile. Die Clients mounten dann das, was sie brauchen, bzw. das worauf sie zugriff haben. So in etwa:

Code:
Server Root/
	data/ (owner=root:root special=?  perm=740)
		user1/ (owner=user1:user1 special=?  perm=700)
		user2/ (owner=user2:user2 special=?  perm=700)
		...
		share1/ (owner=root:group1 special=?  perm=770)
		share2/ (owner=root:group2 special=?  perm=770)
		...

Macht das in der Praxis Sinn?
Kann mir jemand sagen, wie ich auf dem Server für die Ordner Permissons an User vergebe, die NICHT direkt auf dem Server eingeloggt sind, sondern nur von ihrem Rechner aus auf die Files per NFS zugreifen? Wie funktioniert das selbe in Bezug auf Groups. Gibt es so was wie LAN User, die man als Owner definieren kann oder so? Owner=user@machine
Muss ich bei der Rechteverteilung von "specials" was berücksichtigen?

Ich hoffe ihr könnt mir ein paar Tipps geben oder irgendwas um anzudocken, um die Wildnis zu verlassen :)
 
Zuletzt bearbeitet:
Darf man fragen warum du NFS nutzt? Ich würde glaube einfach SAMBA nehmen, damit versteht sich auch jedes Gerät in deinem Netzwerk. Und ich persönlich finde gerade die Verwaltung von Freigaben extrem einfach: https://wiki.ubuntuusers.de/Samba_Server/
 
Darf man fragen warum du NFS nutzt? Ich würde glaube einfach SAMBA nehmen, damit versteht sich auch jedes Gerät in deinem Netzwerk. Und ich persönlich finde gerade die Verwaltung von Freigaben extrem einfach: https://wiki.ubuntuusers.de/Samba_Server/
Angeblich liefert NFS berssere Performance als Samba, was Geschwindkeit angeht. Da der Server ein schwacher Raspberry Pi 2 ist, spielt das für mich eine sehr wesentliche Rolle. Plus, ich hab gehört, dass man in einem reinen Linux Netzwerk NFS gegen über Samba verwenden sollte.
Von der Sache würde ich auch lieber Samba verwenden, aber in dem Fall geht die Performance vor. Ich werde aber beides Testen, denke ich.
 
NFS nutzt zur Rechtevergabe die uid/gid, welche du auf dem Server eingerichtet hast und gleicht sie mit der zugreifenden uid/gid ab. Sprich, wenn du auf dem Server einen User "hans" mit der uid 1001 eingerichtet hast und einen Folder sharst, auf den auf dem Server nur "hans" Zugriff hat, muss der hierauf zugreifende Rechner auch gerade unter "hans" mit der uid 1001 betrieben werden (es kann auch sein, dass es nur auf die uid ankommt).

Das macht natürlich bei nicht zentral gemanagten / nicht vertrauenswürdigen Netzwerken (beispielsweise ein lokales Wlan, zu welchem du jedem zweiten Gast das Passwort gegeben hast) Probleme. Aber performanter als Samba ist NFS auf jeden Fall.

Eine andere Möglichkeit ist, SSH Shares einzurichten. Da hast du zwar auch ein Performance Delta zu NFS aufgrund der Verschlüsselung, aber es könnte weniger stark ausfallen als mit Samba.

Beim RPI2 ist natürlich die andere Frage, ob du so einen großen Unterschied merkst, da die Engstelle (zumindest früher) beim RPI der USB/Lancontroller war und nicht die CPU. Bei meinem Banana Pi kann ich dagegen einen deutlichen Unterschied von NFS zu SSH feststellen.
 
Danke für die Antwort!

NFS nutzt zur Rechtevergabe die uid/gid, welche du auf dem Server eingerichtet hast und gleicht sie mit der zugreifenden uid/gid ab. Sprich, wenn du auf dem Server einen User "hans" mit der uid 1001 eingerichtet hast und einen Folder sharst, auf den auf dem Server nur "hans" Zugriff hat, muss der hierauf zugreifende Rechner auch gerade unter "hans" mit der uid 1001 betrieben werden (es kann auch sein, dass es nur auf die uid ankommt).
Ich hab mich in der Zwischenzeit etwas schlau gemacht. Bei NFS v3 ist es wohl so wie du beschreibst. UID und GID müssen auf Server und Client übereinstimmen, damit der Client Permission zu den Ordnern bekommt. Die Namen sind dabei angeblich egal. Bei NFS v4 ist dies allerdings anders. So wie ich das bis jetzt verstehe werden Namen UND IDs miteinander Verglichen, außer man verwendet NFS4 in Verbindung mit Kerberos, dann werden nur User- und Gruppen-Namen verglichen. So ganz hab ich es noch nicht durchblickt.. Ein Vergleich der Namen wäre mir letztendlich lieber als ein Vergleich der IDs.

Eine andere Möglichkeit ist, SSH Shares einzurichten. Da hast du zwar auch ein Performance Delta zu NFS aufgrund der Verschlüsselung, aber es könnte weniger stark ausfallen als mit Samba.

Beim RPI2 ist natürlich die andere Frage, ob du so einen großen Unterschied merkst, da die Engstelle (zumindest früher) beim RPI der USB/Lancontroller war und nicht die CPU. Bei meinem Banana Pi kann ich dagegen einen deutlichen Unterschied von NFS zu SSH feststellen.
Ich versuche gerade herauszufinden, wie ich den Besten Durchsatz erhalte. Bei einem anfänglichen Test hatte ich über SSH kopiert und ein schlechtes Ergebnis erhalten, darum bin ich auf NFS gekommen. Auf eine Verschlüsselung bei der Übertragung der Daten im LAN würde ich gern verzichten - darum NFS. Ich bin mir noch nicht wirklich sicher ob USB hier der einzige Flaschenhals ist. Die Daten liegen verschlüsselt auf Quell- UND Ziel Laufwerk, da muss die kleine CPU schon ganz schön ran, wenn dann noch SSH dazu käme, könnte der Flaschenhals (vermutlich) auch bei der CPU zu finden sein.
 
Der Flaschenhals ist das 100mbit LAN. Ich habe mal ein paar Benchmarks zwischen iPerf, NFS und Samba durchgeklickt und da kamen meist so zwischen 10 und 11 mb/s raus. Ich bin gespannt was du so erzielst!
 
Ein Benchmark von mir auf meinem Banana Pi zum Vergleich (Festplatte per USB am BPI, 1GBit Lan):
Code:
Größe: 2,4GB (2 558 269 198 Byte), eine Datei

Protokoll    Richtung    Dauer    Geschw. [MB/s]
-----------------------------------------
SSHFS        BPI->BPI    3:44     11,42
SSHFS        BPI->PC     3:46     11,32
SSHFS        PC->BPI     3:48     11,22

NFS          BPI->BPI    3:23     12,60
NFS          BPI->PC     1:25     30,10
NFS          PC->BPI     1:45     24,36

Owncloud     BPI->PC     7:22      5,78

SYSTEM       BPI->BPI    2:41     15,89
 
Danke für die Tests! Der Unterschied zuwischen NFS und SSH ist ja wirklich sehr deutlich!
BPI->BPI bedeutet einfach copy auf der BPi eigenen Platte?
Mit was für einem Befehl hast du kopiert, wenn ich fragen darf?
 
le0m schrieb:
Danke für die Tests! Der Unterschied zuwischen NFS und SSH ist ja wirklich sehr deutlich!
BPI->BPI bedeutet einfach copy auf der BPi eigenen Platte?
Mit was für einem Befehl hast du kopiert, wenn ich fragen darf?

Puh, denke mit cp. BPI->BPI war von einem Verzeichnis der USB-Platte in ein anderes. Da drosselt dann vermutlich der USB-Port selbst.
 
Zurück
Oben