ubuntuusers.de

UID/GID-Problematik auf NFS-Clients im LAN umgehen

Status: Gelöst | Ubuntu-Version: Ubuntu 8.04 (Hardy Heron)
Antworten |

labiculum

Avatar von labiculum

Anmeldungsdatum:
12. Juni 2006

Beiträge: 212

Wohnort: Magdeburg

Liebes Forum

Vor kurzem habe ich einen Home-Server mit OpenSolaris und ZFS aufgesetzt, bei dem es minimalen Konfigurationsaufwand bedeutete, die darauf lagernden Dateisysteme per NFSv4 im LAN anzubieten. Bleibt noch die Konfiguration der lokalen NFS-Clients (alle Ubuntu Hardy oder aktueller), die nun ein mittelschweres Problem für mich darstellt.

Momentan lassen sich die Shares zwar mounten, aber nicht verwenden, weil sich die U/GIDs unterscheiden. Abgesehen von root gibt es einen Benutzer auf dem Server und drei andere Benutzer auf den Client-Computern im LAN. Ich hätte es gern so, dass die vom Server-Benutzer bereitgestellten Shares von allen anderen Benutzern im Netzwerk gelesen und geschrieben werden können.

Mittels hosts.allow/deny ist NFS sowieso aufs LAN beschränkt. Ich benötige also kein Kerberos oder irgeneine andere Authentifizierung. Alle U/GIDs anzupassen würde wieder nicht-NFS-bezogene Probleme auf den Clients nach sich ziehen, weshalb ich auch das vermeiden möchte. Kann man diesen ID-Vergleich für den Zugriff auf die Shares nicht irgendwie umgehen? Ich habe schon von Mapping, NIS, LDAP und nsswitch gelesen, aber alles scheint mir recht komplex und unnötig für meinen Anwendungsfall. Natürlich gibt es dazu Anleitungen im Internet, aber mir fehlt der umfassende Überblick, wann der Einsatz welcher Methode sinnvoll ist.

Kennt sich hier jemand besser damit aus als ich?

GoreToffel

Anmeldungsdatum:
30. April 2008

Beiträge: 55

Nachdem dir sonst niemand schreibt...: Wenn du möchtest, dass alle aus dem Netzwerk volle Zugriffsrechte auf sämtliche Dateien haben, müssen deine Dateien doch so und so 0666, oder zumindest 0660 als Rechte haben. Zumindest bei ersterem (und wenn niemand anders rankommt, sollte das auch kein Problem sein) müsste ich doch auch mit unbekannter UID alles machen können, oder nicht? LDAP ist in jedem Fall übertrieben, bei vier Rechnern, zumal du da auch nicht drum rum kämest, die UIDs zu synchronisieren (das ist u.a. der eigentliche Zweck von LDAP).

diesch Team-Icon

Avatar von diesch

Anmeldungsdatum:
18. Februar 2009

Beiträge: 5072

Wohnort: Brandenburg an der Havel

labiculum schrieb:

Mittels hosts.allow/deny ist NFS sowieso aufs LAN beschränkt. Ich benötige also kein Kerberos oder irgeneine andere Authentifizierung. Alle U/GIDs anzupassen würde wieder nicht-NFS-bezogene Probleme auf den Clients nach sich ziehen, weshalb ich auch das vermeiden möchte. Kann man diesen ID-Vergleich für den Zugriff auf die Shares nicht irgendwie umgehen? Ich habe schon von Mapping, NIS, LDAP und nsswitch gelesen, aber alles scheint mir recht komplex und unnötig für meinen Anwendungsfall. Natürlich gibt es dazu Anleitungen im Internet, aber mir fehlt der umfassende Überblick, wann der Einsatz welcher Methode sinnvoll ist.

Im Dateisystem stehen nur die UIDs, die Benutzernamen werden dann lokal zugeordnet. Wenn die Benutzer auf den verschiedenen Clients unterschiedliche UIDs haben sollen, musst du Mapping machen (und brauchst dafür NFSv4). LDAP wäre das Mittel der Wahl, wenn du überall die gleichen IDs haben willst.

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17524

labiculum schrieb:

...die darauf lagernden Dateisysteme per NFSv4 im LAN anzubieten.

Der Aufwand ist auf jedem Linux ziemlich der gleiche ▶ /etc/exports anpassen und dann den Dienst starten.

...weil sich die U/GIDs unterscheiden.

Du willst NFSv4, dann funktioniert das auch ohne großes gebastel.

...nicht-NFS-bezogene Probleme auf den Clients nach sich ziehen.

Kaum, wenn man es richtig macht.

...Shares nicht irgendwie umgehen?

Nein, ist nicht vorgesehen. NFS kommt noch aus einer Zeit als es richtige Administratoren gab 😉

mfg Betz Stefan

Karsten_Strupp

Anmeldungsdatum:
5. November 2007

Beiträge: 186

Wohnort: Berlin

diesch schrieb:

LDAP wäre das Mittel der Wahl, wenn du überall die gleichen IDs haben willst.

Nun ja, bei 4 Rechnern? Wenn es automatisch gehen soll, nimmt man sowas wie LDAP oder NIS. Wenn nicht, reicht auch Papier und Bleistift. Denn es werden tatsächlich intern immer nur die IDs verwendet, wenn es auf mehreren Rechnern Benutzer und Gruppen mit verschiedenen IDs gibt oder noch schlimmer, gleiche ID für verschiedene Benutzer, hast du ein Problem. Dann gehören die Dateien von Peter auf dem anderen Rechner plötzlich Klaus.

Also aufpassen.

Gruß,
Karsten

Karsten_Strupp

Anmeldungsdatum:
5. November 2007

Beiträge: 186

Wohnort: Berlin

labiculum schrieb:

Kann man diesen ID-Vergleich für den Zugriff auf die Shares nicht irgendwie umgehen?

Der Unterschied bei den Dateifreigaben zwischen der Windows-Welt (und damit auch Samba) und NFS ist der, dass in Windows die Freigabe selbst benutzerspezifische Rechte hat. Man kann sich z.B. mit einer Benutzerkennung, die nur am entfernten System gilt, anmelden.

Unter NFS ist die Freigabe erstmal global, unabhängig vom Benutzer. Die Rechner sehen die Freigaben erstmal, da sie für das System administriert sind. Die Rechte vom Benutzer entscheiden dann, ob er sie nutzen kann. Das bedeutet eben, dass der Benutzer auf beiden Seiten der Verbindung vorhanden sein muss.

Gruß,
Karsten

labiculum

(Themenstarter)
Avatar von labiculum

Anmeldungsdatum:
12. Juni 2006

Beiträge: 212

Wohnort: Magdeburg

Wow, erst einmal vielen Dank für eure Antworten! Und gleich noch einmal Dank an Karsten für die vorhergehende Klarstellung, jetzt weiß ich wo mein Denkfehler mit dem Umgehen lag. Mal sehen, ob ich es schaffe mich sinnvoll zu den zahlreichen anderen Beiträgen zu äußern.

GoreToffel schrieb:

Wenn du möchtest, dass alle aus dem Netzwerk volle Zugriffsrechte auf sämtliche Dateien haben, müssen deine Dateien doch so und so 0666, oder zumindest 0660 als Rechte haben. Zumindest bei ersterem müsste ich doch auch mit unbekannter UID alles machen können, oder nicht?

Ist das denn so? Wäre ja die einfachste Lösung. Ich erinnere mich, dass das bei mir nie funktioniert hat. Kann aber auch ein Konfigurationsfehler gewesen sein, darum frage ich ja hier nach.

diesch schrieb:

Wenn die Benutzer auf den verschiedenen Clients unterschiedliche UIDs haben sollen, musst du Mapping machen (und brauchst dafür NFSv4). LDAP wäre das Mittel der Wahl, wenn du überall die gleichen IDs haben willst.

Ich bleibe dabei, dass ich LDAP übertrieben finde. Aber lese ich hier heraus, dass NFSv4 ein anderes Mapping hat als seine Vorgänger, also NIS?

encbladexp schrieb:

Der Aufwand ist auf jedem Linux ziemlich der gleiche ▶ /etc/exports anpassen und dann den Dienst starten.

Stimmt, aber unter Solaris gebe ich einfach zfs set sharenfs=rw dpool/photos ein und den Rest macht das System für mich.

nicht-NFS-bezogene Probleme auf den Clients

Kaum, wenn man es richtig macht.

Ich denke da zum Beispiel an ext2-formatierte USB-Sticks: Zwei Ubuntu-PCs, je ein Benutzer. Verschiedene Namen, aber beide mit ID 1000. Stick-Austausch kein Problem. Legt man aber auf beiden PCs beide Nutzer an, hat man unterschiedliche IDs und muss die Rechte für den Stick anpassen. Unschön ist auch, dass die nur pro forma angelegten Benutzer alle in der Login-Liste von GDM angezeigt werden.

Karsten Strupp schrieb:

Wenn es automatisch gehen soll, nimmt man sowas wie LDAP oder NIS. Wenn nicht, reicht auch Papier und Bleistift.

Also NIS. Wie konfiguriert man das überhaupt? Ich finde dazu keine Anleitung, welche mir die hier gestellten Fragen beantwortet hätte. Oder wie sähe denn die Pen&Paper-Lösung aus?

Denn es werden tatsächlich intern immer nur die IDs verwendet, wenn es auf mehreren Rechnern Benutzer und Gruppen mit verschiedenen IDs gibt oder noch schlimmer, gleiche ID für verschiedene Benutzer, hast du ein Problem. Dann gehören die Dateien von Peter auf dem anderen Rechner plötzlich Klaus.

Letzteres trifft leider zu. Der erste Benutzer unter Solaris hat die UID 101, unter Ubuntu ist das aber z.B. für den Benuter messagebus oder syslog vergeben. Das kann ich nicht einfach ändern, habs schon versucht. Muss ich jetzt auf jedem vorhandenen Rechner alle vorhandenen Benutzer anlegen und die IDs irgendwie hinbiegen oder gibt es eine bessere Methode?

Danke fürs Durchlesen.

Sebastian

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17524

labiculum schrieb:

Aber lese ich hier heraus, dass NFSv4 ein anderes Mapping hat als seine Vorgänger, also NIS?

NFS bis Version 3 hat gar kein Mapping, und liefert einfach nur Stumpf UID/GID aus. Der Nachteil davon ist das man einen extra Dienst braucht der dann UID/GID und Usernames auf allen Systemen gleich hält. Das kann dann z.B. LDAP oder NIS sein.

Unschön ist auch, dass die nur pro forma angelegten Benutzer alle in der Login-Liste von GDM angezeigt werden.

User mit einer ID kleiner als 1000 (System Account / User) werden nicht angezeigt. In der Regel braucht man auch nur User die sich anmelden dürfen, außer für Dienste. Den Rest kann man mit Gruppen machen.

Also NIS. Wie konfiguriert man das überhaupt?

Du willst kein NIS, du willst NFSv4. Den egal ob du LDAP oder NIS nimmst, der Aufwand ist ziemlich ähnlich und für ne Hand voll Clients viel zu hoch. NFSv4 hat einen sog. idmapd, und dieser sorgt dafür das UID = username auf allen Systemen ist.

Oder wie sähe denn die Pen&Paper-Lösung aus?

Alles UID/GID manuell verwalten 😉

Muss ich jetzt auf jedem vorhandenen Rechner alle vorhandenen Benutzer anlegen und die IDs irgendwie hinbiegen oder gibt es eine bessere Methode?

Probiere es erstmal mit NFSv4, damit geht das was du willst. Wenn das nicht geht (was ich nicht glaube) dann könntest du immernoch die /etc/passwd und /etc/group mit einem Texteditor fixen und anpassen bis es geht ▶ Was ich auf keinen Fall machen würde so lange es schönere Lösungen gibt, welche das System weniger beeinflussen.

mfg Betz Stefan

labiculum

(Themenstarter)
Avatar von labiculum

Anmeldungsdatum:
12. Juni 2006

Beiträge: 212

Wohnort: Magdeburg

Das mit der Gruppe war eine verblüffend einfache Idee und der idmapd macht den Rest ohne dass ich irgendwo einen Dummy-User anlegen musste. Noch einmal vielen Dank für die Hilfestellung, mir fehlte es vor allem an Einblick in die Zusammenhänge der einzelnen Komponenten. Jetzt muss ich nur noch die Integration mit Solaris etwas eleganter gestalten, aber das ist ein anderes Thema. Ciao!

Antworten |