Login
Newsletter
Di, 5. Juli 2005, 09:35

Netgroups lokal mit NFS und Samba nutzen

Einigen von euch ist vielleicht die Möglichkeit bekannt, mit Hilfe von Netgroups Computer, User und NIS Domains zu logischen (ich nenne sie hiermal übergeordneten) Verwaltungsgruppen zusammenzufassen.

Was einige jedoch vielleicht nicht wissen ist, dass sich Netgroups seit einiger Zeit unter Linux auch lokal nutzen lasssen, also nicht nur funktionieren, wenn sie über einen NIS-Server bereitgestellt werden. Natürlich macht es nicht für alle Situationen Sinn, Netgroups lokal einzusetzen, für NFS-Exports aber sicherlich doch ;-)

Um die Beispiele nachvollziehen zu können, können ein paar Grundkenntnisse mit NFS und NIS nicht schaden.

Kurze Einführung zu Netgroups über NIS

Wie zuvor schon kurz erwähnt, lassen sich mit Netgroups allgemein gesagt Dinge wie Rechner, User und NIS Domains logisch gruppieren. Sie sind eigentlich nur dazu gedacht, dem Administrator mehrerer UNIX-Büchsen die Tipparbeit beim Aufsetzen von NIS-Domains abzunehmen.

Konfiguriert wird das System über die Datei /etc/netgroup. Hier wird einfach der Name der neu anzulegenden Netgroup eingetragen, gefolgt von einem Klammerpaar, welches Rechnername, Username und NIS Domain enthält.

ngName (computername,user,nisdomain)

Jetzt könnte man leicht den Fehler machen und denken, dass hier eine Zuordnung von Computern und Usern machbar wird. Dem ist aber laut vielen Quellen im Internet nicht so! Eine Zuordnung von Computern und NIS-Domains ist aber sehr wohl gegeben! Was das heißt, werden wir gleich noch sehen.

Möchte man die Benutzer root, admin, manager und unres_sym in der Netgroup rulers gruppieren, so sieht der Eintrag folgendermaßen aus:

rulers (,root,) (,admin,) (,manager,) (,unres_sym,)

Die hier ausgelassenden Werte (Computername und NIS Domain) können durch jeden möglichen Wert ersetzt werden (entspricht also der Wildcard * auf der UNIX-Konsole). Möchte man explizit ausschließen, dass jeder Wert angenommen werden kann, muss man ein "-" setzen.

rulers (-,root,-) (-,admin,-) (-,manager,-) (-,unres_sym,-)

Entsprechend verhält es sich auch mit den anderen Platzhaltern Computername und NIS-Domain.

Überprüfen kann man die neu erstellte Gruppierung zu Netgroups übrigens mit dem Komandozeilentool "netgroup". Alle User der Netgroup rulers lässt man sich folgendermaßen anzeigen:

netgroup -u rulers

Unter Debian befindet es sich in dem Paket "ng-utils", unter SUSE und Co. wäre es durchaus denkbar, dass es sich auch direkt in dem Paket des NIS-Servers befindet. Aber das ist nur eine Vermutung.

Wie verwende ich das Ganze nun?

Jetzt stellt sich natürlich die Frage, an welcher Stelle Netgroups sinnvoll eingesetzt werden können. Als pauschale Antwort kann man sagen: Fast überall da, wo lokale Dateien durch NIS ersetzt werden können. Also /etc/passwd, /etc/group, /etc/shadow, /etc/hosts.equiv usw.

Gruppierte Benutzer eignen sich hervorragend, um sie in die Dateien /etc/passwd und /etc/shadow einzutragen. Damit der NIS-Client und der NIS-Server (welcher die Netgroups zu Verfügung stellt) korrekt miteinander zusammen arbeiten, muss in der Datei /etc/nsswitch.conf die Auflösemethode für passwd, group und shadow folgendermaßen geändert werden:

passwd: compat
group: compat
shadow: compat

Damit wird der Kompatibilitätsmodus eingeschaltet. Zur Erklärung: Es gibt ein sog. traditionelles NIS, und das neuere Verfahren, welches zwar weniger Probleme mit shadow-Passwörtern hat, dafür aber keine Netgroups mehr direkt unterstützt. Desshalb müssen wir heutzutage in den Kompatibilitätsmodus schalten. Früher wurde über die eine spezielle Syntax in den Dateien /etc/group, /etc/shadow und /etc/passwd festgelegt, ob und wie Benutzeraccounts des NIS-Servers in die lokale Benutzerdatenbank des Clients aufgenommen werden sollen. Ein typischer Eintrag in /etc/passwd ist z.B.:

+::::::

Befindet sich dieser Eintrag ganz am Ende der Datei, bedeutet es, alle Benutzer des NIS-Servers an die lokale passwd-Datenbank anzuhängen. Ersetzt man das + durch ein -, kann man z.B. in der nächsten Zeile bestimmte Benutzer wieder vom Import ausnehmen. Soll der Benutzer "kalle" bspw. eine andere Shell bekommen, geht das auch:

+kalle::::::/bin/ksh

Vielleicht wird der Existenzgrund für Netgroups langsam klarer? Muss der Admin 20 Benutzer in einer NIS-Domain pflegen, ist das vielleicht noch lästig, aber machbar. Hängt man an die 20 noch mal ein oder zwei Nullen dran, ist das kaum noch handhabbar. Vor allem wenn mehrere Benutzer auf die gleiche Art und Weise abgeändert werden müssen (gleiche primäre Gruppe, etc.), wäre es doch schön, wenn es hier Unterstützung geben würde.

Existieren auf dem NIS-Server nun entsprechende Netgroups, so können auf einen Schlag alle gewünschte User einer bestimmten primären Gruppe hinzugefügt werden:

+@bashUser:::1001:::

Was einen Eintrag wie

bashUser (,foo,) (,bar,) (,pete,)

in der Datei /etc/netgroup auf dem NIS-Server voraussetzt.

Samba unterstützt z.B. ebenfalls Netgroups bei der Vergabe von Rechten! Weiteres steht in der Manpage zu smb.conf. Achtung! Samba macht einen Fallback auf lokale Gruppen, wenn z.B. eine mit

invalid users = @noAccess

festgelegte Netgroup nicht gefunden wurde. Wird auch keine lokale Unixgruppe mit dem Namen NoAccess gefunden, gibt es einen Fehler.

Für die Gruppierung von Rechnern gibt es da schon eine bessere Verwendung :-) Bei NFS-Exports lassen sie sich prima nutzen! Folgendes in /etc/exports ist möglich:

/home/ @nfsUsers(rw,sync) @readOnly(ro,sync)

Somit wird allen Benutzern in der Netgroup nfsUsers Schreib- und Leserecht auf die NFS-Freigabe /home gewährt. Benutzer der Netgroup readOnly dürfen nur lesend auf /home zugreifen.

Wie oben schon erwähnt, lassen sich Rechner, die in Netgroups gruppiert wurden, ebenfalls mit Samba nutzen.

Der eigentliche Clou an der Sache ist, dass seit einiger Zeit unter Linux die Netgroups mit folgendem Eintrag in /etc/nsswitch.conf auch lokal für diese Zwecke genutzt werden können!

netgroup: files

Welche Dinge mit lokalen Netgroups noch funktionieren, muss man selber probieren. NFS und Samba werten die lokalen Netgroups jedenfalls korrekt aus.

Diejenigen, die sich vielleicht gefragt haben, wozu denn die NIS-Domain in die Netgroup eingetragen werden kann, sollen hier die Antwort bekommen.

Erteilt man den PCs der Netgroup "grandMasterChiefs" nun über /etc/exports Zugriffsrechte auf eine NFS-Freigabe und befindet sich der NFS Server ebenfalls in der NIS-Domain "ocean", so können nur pc1 und pc2 auf die Freigabe zugreifen, obwohl pc3 ja eigentlich auch in der Netgroup ist. An dieser Stelle bekommt auch die Verwendung des "-" mehr Sinn.

Ein Eintrag wie folgender

grandMasterChiefs (,,ocean)

ist allerdings gefährlich, wenn der NFS-Server in der NIS-Domain "ocean" läuft. Dann darf jeder Computer jeder NIS-Domian auf die Freigabe zugreifen! - Man merkt schnell, das System ist schon etwas älter und taugt nur bedingt für die Anforderungen der modernen Domains.

Links zum Thema:

http://www.tldp.org/HOWTO/NIS-HOWTO/settingup_client.html#AEN280
http://www.sunhelp.org/faq/nis.html#nis22
http://docs.hp.com/en/B1031-90043/ch02s05.html

Kommentare (Insgesamt: 2 || Alle anzeigen )
Re: moderne Domains ... (kraut, Di, 22. Januar 2008)
moderne Domains ... (Mike, Di, 5. Juli 2005)
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten