<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//DE"> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <META NAME="GENERATOR" CONTENT="lfparser_2.17"> <META NAME="LFCATEGORY" CONTENT="System Administration"> <!-- this is used be a number of tools: =LF=AUTHOR: Frédéric Raynal =LF=CAT___: System Administration =LF=TITLE_: Yellow Pages, Teil 1 =LF=NUMBER: 148 =LF=ANAME_: article148.shtml --> <TITLE>lf148, System Administration: Yellow Pages, Teil 1</TITLE> <!-- stylesheet added by lfparser: --> <style type="text/css"> <!-- td.top {font-family: Arial,Geneva,Verdana,Helvetica,sans-serif; font-size:12 } pre { font-familiy:monospace,Courier } p.cl { color:#EE9500 } a.nodec { text-decoration:none } p.trans { font-size:8pt; text-align:right } p.clbox { width:50%; alignment:center; background-color:#FFD700; border-style:none; border-width:medium; border-color:#FFD700; padding:0.5cm ; text-align:center } p.foot { background-color:#AAAAAA; color:#FFFFFF; border-style:none; border-width:medium; border-color:#AAAAAA; padding:0.5cm ; margin-top:0.1cm; margin-right:1cm; margin-left:1cm; text-align:center } --> </style> </HEAD> <BODY bgcolor="#ffffff" text="#000000"> <!-- this is generated html code. NEVER use this file for your translation work. Instead get the file with the same article number and .meta.shtml in its name. Translate this meta file and then use lfparser program to generate the final article --> <!-- lfparser can be obtained from http://www.linuxfocus.org/~guido/dev/lfparser.html --> <!-- 2pdaIgnoreStart --> <!-- start navegation bar --> <!-- top navegation bar --> <TABLE cellspacing="0" cellpadding="0" border="0" align="center" width="90%"> <TR bgcolor="#2e2292"> <TD class="top"><TABLE cellspacing="0" cellpadding="0" border="0" width= "100%"> <TR><TD width="144"><IMG src="../../common/images/logolftop.gif" alt="[LinuxFocus-icon]" width="350" height="45" align="left" border="0"></TD> <TD class="top"> <TABLE width="100%"> <TR align="right"> <TD class="top"><A class="nodec" href="../index.shtml"><FONT color= "#DDDDDD">Home</FONT></A> | <A class= "nodec" href="../map.html"><FONT color= "#DDDDDD">Plan</FONT></A> | <A class= "nodec" href="../indice.html"><FONT color= "#DDDDDD">Index</FONT></A> | <A class="nodec" href="../Search/index.html"><FONT color= "#DDDDDD">Suchen</FONT></A> </TD> </TR> <TR align="right"> <TD class="top"> <HR width="100%" noshade size="1"> </TD> </TR> </TABLE> </TD> </TR> </TABLE> </TD> </TR> </TABLE> <!-- end top navegation bar --> <!-- blue bar --> <TABLE cellspacing="0" cellpadding="0" border="0" align="center" width="90%"> <TR bgcolor="#00ffff"> <TD><IMG src="../../common/images/transpix.gif" width="1" height= "2" alt=""></TD> </TR> </TABLE> <!-- end blue bar --> <!-- bottom navegation bar --> <TABLE cellspacing="0" cellpadding="0" border="0" align="center" width="94%"> <TR bgcolor="#000000"> <TD> <TABLE cellspacing="0" cellpadding="1" border="0" width= "100%"> <TR align="center"> <TD><A class="nodec" href="../News/index.shtml"><FONT color= "#FFFFFF">Nachrichten</FONT></A> </TD> <TD><FONT color="#FFFFFF">|</FONT> </TD> <TD><A class="nodec" href="../Archives/index.html"><FONT color= "#FFFFFF">Archiv</FONT></A> </TD> <TD><FONT color="#FFFFFF">|</FONT> </TD> <TD><A class="nodec" href="../Links/index.shtml"><FONT color= "#FFFFFF">Links</FONT></A> </TD> <TD><FONT color="#FFFFFF">|</FONT> </TD> <TD><A class="nodec" href="../aboutus.html"><FONT color= "#FFFFFF">Über uns</FONT></A> </TD> </TR> </TABLE> </TD> </TR> </TABLE> <!-- end bottom navegation bar --> <!-- stop navegation bar --> <!-- SSI_INFO --> <!-- tr_staticssi include virtual --> <!-- tr_staticssi exec cmd --> <!-- addedByLfdynahead ver 1.1 --><TABLE ALIGN="right" border=0><TR><TD ALIGN="right"><FONT SIZE="-1" FACE="Arial,Helvetica">Dieser Artikel ist verfübar in: <A href="../../English/July2001/article148.shtml">English</a> <A href="../../Castellano/July2001/article148.shtml">Castellano</a> <A href="../../Deutsch/July2001/article148.shtml">Deutsch</a> <A href="../../Francais/July2001/article148.shtml">Francais</a> <A href="../../Nederlands/July2001/article148.shtml">Nederlands</a> <A href="../../Portugues/July2001/article148.shtml">Portugues</a> <A href="../../Russian/July2001/article148.shtml">Russian</a> <A href="../../Turkce/July2001/article148.shtml">Turkce</a> </FONT></TD></TR></TABLE><br> <!-- 2pdaIgnoreStop --> <!-- SHORT BIO ABOUT THE AUTHOR --> <TABLE ALIGN=LEFT BORDER=0 hspace=4 vspace=4 WIDTH="30%" > <TR> <TD> <!-- 2pdaIgnoreStart --> <!-- PALM DOC --> <TABLE BORDER=0 hspace=4 vspace=4> <TR> <TD> <font size=1> <img src="../../common/images/2doc.gif" width=34 align=left border=0 height=22 alt="convert to palm"><a href="http://cgi.linuxfocus.org/cgi-bin/2ztxt">Convert to GutenPalm</a><br>or <a href="http://cgi.linuxfocus.org/cgi-bin/2pda">to PalmDoc</a></font> </TD> </TR> </TABLE> <!-- END PALM DOC --> <!-- 2pdaIgnoreStop --> <br> <IMG src="../../common/images/Frederic_Raynal.png" alt= "[Photo of the Author]" height="147" width="126"> <BR>von <A href= "mailto:pappy@users.sourceforge.net">Frédéric Raynal</A> <BR><BR> <I>Über den Autor:</I><BR> <A href="mailto:pappy@users.sourceforge.net">Frédéric Raynal</A> schreibt zur Zeit seine Doktorarbeit am <A href= "http://www.inria.fr">INRIA</A><SUP>1</SUP>. Er liest gerne (wobei ihm Tolkien so lieb ist wie Balzac), und hört gerne Musik (von Mozart bis <A href= "http://w3.rz-berlin.mpg.de/cmp/glass.html">Philip Glass</A><SUP>2</SUP> und von Led Zeppelin bis Massive Attack über Björk und Boris Vian, wobei er sorgsam Rap, Techno und alle anderen Arten von Lärm vermeidet ;-)<BR><I>Institut National de Recherche en Informatique et en Automatique,</I> das heißt etwa <I>Nationales Forschungsinstitut für Informatik und Automation</I> ein "klassischer" Musiker. <BR><i>Inhalt</i>: <UL> <LI><A HREF="#148lfindex0">Einleitung</A></LI> <LI><A HREF="#148lfindex1">Wie funktioniert YP (NIS)?</A></LI> <LI><A HREF="#148lfindex2">Die Struktur</A></LI> <LI><A HREF="#148lfindex3">Die Maps</A></LI> <LI><A HREF="#148lfindex4">Remote Procedure Calls (RPC)</A></LI> <LI><A HREF="#148lfindex5">Schluß</A></LI> <LI><A HREF="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=148&lang=en">Talkback für diesen Artikel</A></LI> </UL> </TD></TR></TABLE> <!-- HEAD OF THE ARTICLE --> <br> <H2>Yellow Pages, Teil 1</H2> <IMG src="../../common/images/illustration148.gif" alt= "[Illustration]" hspace="10" height="90" width="100"> <!-- ABSTRACT OF THE ARTICLE --> <P><i>Zusammenfassung</i>: <P> Der <I>Network Information Service</I> (NIS) stellt auf einem Server eine Datenbank zur Verfügung. Jeder Computer im Netzwerk, auf dem ein NIS Client läuft, kann eine Abfrage an diese Datenbank absetzen, um Benutzerinformationen zu erhalten (z.B. Login-Name, Passwort, User Groups,.....). Durch diese Datenbank wird die zentralisierte Administration einer großen Anzahl von Computern ermöglicht - insbesondere, wenn hier gleichzeitig ein Dateisystem wie NFS eingesetzt wird, da durch den Server und die Datenbank Änderungen der Benutzerinformationen sofort allen Clients zur Verfügung stehen. </P> <HR size="2" noshade align="right"><BR> <!-- BODY OF THE ARTICLE --> <A NAME="148lfindex0"> </A> <H2>Einleitung</H2> Der <I>Network Information Service</I> (NIS) ist ürsprünglich eine Entwicklung von Sun und als <I>Sun Yellow Pages</I> bekannt (noch bekannter einfach als <I>Yellow Pages</I> oder <I>YP</I>). Doch dies ist eigentlich eine Handelsmarke der British Telecom und dürfte konsequenterweise nicht ohne die entsprechenden Rechte benutzt werden. Die <I>Yellow Pages</I> der British Telecom sind das Branchentelefonbuch (wie im deutschsprachigen Raum die "Gelben Seiten"). <P>Die NIS Server speichern Kopien von gemeinsamen Konfigurationsdateien verschiedener vernetzter Computer in einer Datenbank. Die NIS Clients wiederum richten ihre Anfragen an diese Server, anstatt eigene Konfigurationsdateien zu benutzen.</P> Nehmen wir einmal an, wir wären User im Netzwerk und wollten das Passwort ändern. Und nehmen wir weiter an, YP sei <I>nicht installiert</I>. Wenn wir uns die Möglichkeit offenhalten wollten, uns von <I>jedem</I> Computer im Netzwerk einloggen zu können, müßten wir auch die Paßwortdateien auf jedem einzelnen Computer aktualisieren. Wäre aber YP <I>installiert</I>, dann wäre es uns möglich, die Änderung auf <I>einer einzigen</I> Maschine vorzunehmen, auf der ein NIS-Client läuft. Das neue Paßwort würde dann dem NIS-Server übermittelt und in der Datenbank geändert. Und wenn sich nun ein User an einem vernetzten Computer einklinken wollte, würde das Paßwort mit dem in der Datenbank auf dem Server verglichen (natürlich müßte auch dann ein NIS-Client auf dem Computer des Users laufen ;-). <P>Es gibt verschiedene Versionen der YP, doch da dies ein einführender Artikel sein soll, werden wir uns auf die Grundzüge der Funktionsweise beschränken, ohne allzu sehr ins Detail zu gehen. Auf die Einzelheiten gehen wir später ein.<BR> glibc 2.x (libc6) unterstützt den Einsatz von NSS (Name Switch Service). Dieser Dienst bestimmt durch die Datei <FONT face= "Courier New,Courier">/etc/nsswitch.conf</FONT>, in welcher Reihenfolge Informationen gesucht werden müssen. Er unterstützt Aliases, das Ethernet-Protokoll, Groups, Hosts, Netgroups, Netzwerke, Protokolle, Öffentliche Schlüssel, Passwd, RPC, Dienste und Shadow Maps.</P> <A NAME="148lfindex1"> </A> <H2>Wie funktioniert YP (NIS)?</H2> <A NAME="148lfindex2"> </A> <H2>Die Struktur</H2> Im Netzwerk wird ein Computer als NIS-Server für eine Domäne dienen. Diese <I>Domäne</I> stimmt mehr oder weniger mit dem Namen der Datenbank überein, die vom Server verwaltet wird. Der Domänenname ist der Schlüssel, der von den NIS-Clients gebraucht wird, um die benötigte Information auf dem Server zu lokalisieren. Dieser Domänenname hat <I><B>absolut nichts</B></I> mit dem <I>DNS Domain Name</I> zu tun.<BR> Es kann mehr als einen NIS-Server in derselben DNS-Domain geben. Sie können auf dem NIS-Level unterschiedliche Domänen verwalten, oder diesselbe NIS-Domäne (in diesem Fall gibt es einen Master-Server und einen Slave-Server). <P>Die Slave-Server speichern lediglich eine Kopie der Datenbank des Master-Servers. Sie unterstützen den Master, wenn er zu viel Zeit benötigt, um die Anfragen der Clients zu beantworten, oder er gar in die Knie geht.</P> <P>Die Slaves werden über jede Änderung im Datenbestand durch das Programm <FONT face="Courier New,Courier">yppush</FONT> informiert, und sie werden daraufhin ihre eigenen Datenbanken auf den neuesten Stand bringen, um die Master-Datenbank exakt widerzuspiegeln.</P> <P>Die Clients benötigen ihrerseits keine Pflege, da sie ständig mit dem NIS-Server verbunden sind und auf die Informationen in dessen Datenbank zugreifen können.</P> <A NAME="148lfindex3"> </A> <H2>Die Maps</H2> <P>Die YP-Datenbanken liegen im GDBM-Format vor, das aus dem ASCII-Format erzeugt wird. Diese Konvertierung geschieht bei der Installation des Servers durch das <FONT face= "Courier New,Courier">makedbm</FONT> Programm.</P> <P>Diese <FONT face="COURIER NEW">Maps</FONT> bestehen aus Schlüssel/Wert-Beziehungen. Alle YP-Maps basieren auf diesem Modell. Für den Server ist der Inhalt dieser Paare ohne Bedeutung (okay, mit Ausnahme der Daten, die den Master-Server betreffen). Das bedeutet, daß für den Server eine Map mit Paßwörtern, Gruppen, oder was-auch-immer, nichts anderes ist als eine Ansammlung von Schlüssel/Wert-Paaren. Nur der Client weiß, wie diese richtig zu deuten sind, und wie er die Information findet, die er braucht.</P> <P>Diese Repräsentation von Daten kann problematisch werden. Da der Server den zu einem Schlüssel gehörenden Wert nicht interpretierend lesen kann, kann er auch einen zweiten, verborgenen Schlüssel nicht finden. An einem Beispiel wird deutlich, was gemeint ist: Sucht der Client nach Paßwörtern, könnte er vom Login-Namen ausgehen oder von der UID (<I>User ID</I>, eine eindeutige Kennung für jeden User im Netzwerk). Um diese Suche zu ermöglichen, muß die Paßwort-Information verdoppelt werden. Dies führt uns allerdings zu redundanter Information, wie man an den Dateien <FONT face="Courier New,Courier">passwd.byname</FONT> und <FONT face="Courier New,Courier">passwd.byuid</FONT> sehen kann. Für jede Form der Suche muß eine Map erzeugt werden, und bei einer Änderung müssen die Daten mehrfach übertragen werden.</P> <P>Drei Parameter werden von dem Client benötigt, um eine gesuchte Information in der Datenbank aufzuspüren:</P> <OL> <LI>der Name der Domain: das ist der Name der Datenbank auf dem YP-Server</LI> <LI>der Name der Map</LI> <LI>der Name des Schlüssels</LI> </OL> Benötigt also ein Client das Paßwort des Users <FONT face="COURIER NEW">Toto</FONT> in der Domain <FONT face= "COURIER NEW">titi</FONT>, wird er in der Datei <FONT face= "Courier New,Courier">/var/yp/titi/passwd.byname</FONT> nach dem User <FONT face="COURIER NEW">Toto</FONT> suchen. <P>Das führt zu einem sehr flexiblen System, da es nun, um eine neue Domain einzurichten, lediglich nötig ist, das Verzeichnis <FONT face= "Courier New,Courier">/var/yp/new_domain</FONT> zu erzeugen, das <FONT face="Courier New,Courier">Makefile</FONT> zu kopieren, und mit den korrekten Optionen auszuführen.</P> <A NAME="148lfindex4"> </A> <H2>Remote Procedure Calls (RPC)</H2> Die Funktionalität der Yellow Pages basiert im wesentlichen auf den Remote Procedure Calls (RPCs), dem Austausch von Anfragen zwischen Server und den Clients. <P>Der RPC Portmapper <FONT face="COURIER NEW">portmap</FONT> ist ein Programm, das die RPC-Programm-Nummern in Portnummern übersetzt. Wenn ein RPC gestartet wird, wird es <FONT face= "COURIER NEW">portmap</FONT> mitteilen, welchen Port es benutzen will und welche RPC-Programm-Nummer es ansprechen will.</P> <p> Wenn ein Client eine RPC-Abfrage an eine bestimmte Programm-Nummer richten will, wird er zuerst den portmap-Server kontaktieren, um die Nummer des Ports zu erfahren, auf dem dieses Programm läuft. Dann kann der Client die RPC-Packets an den entsprechenden Port schicken. Das YP Client/Server-Modell ist also nur ein Sonderfall des RPC Client/Server-Modells. </p> <P>Die Datei <FONT face="Courier New,Courier">yp_prot.h</FONT> enthält die Strukturen und die Prototypen für 11 Funktionen, die das RPC-Protokoll definieren.</P> <UL> <LI>YPPROC_DOMAIN und YPPROC_DOMAIN_NOACK ermöglichen den Clients, zu einer gegebenen Domain den richtigen Server zu finden.</LI> <LI>Die Funktionen YPPROC_MATCH, YPPROC_FIRST, YPPROC_NEXT und YPPROC_ALL ermöglichen es, auf die Daten der Maps zuzugreifen.</LI> <LI>YPPROC_XFR wird von <FONT face= "Courier New,Courier">yppush</FONT> aufgerufen, um den Slaves anzuzeigen, daß sich die Map auf dem Master geändert hat und die Kopien auf den neuesten Stand gebracht werden müssen.</LI> <LI>YPPROC_CLEAR löscht den Inhalt des Caches und der File-Handles. Diese Funktion wird aufgerufen, nachdem eine Map upgedated wurde, z.B. nach dem <FONT face= "Courier New,Courier">makedbm-c</FONT> Kommando.</LI> <LI>YPPROC_MASTER, YPPROC_ORDER und YPPROC_MAPLIST ermöglichen es, spezielle Informationen über die Maps zu erhalten. Wenn zum Beispiel auf einem Client ein Paßwort geändert wird, ruft das Programm <FONT face= "Courier New,Courier">yppasswd</FONT> die Funktion YPPROC_MASTER auf, um den Server zu bestimmen, bevor dort die Datenbank geändert wird.</LI> </UL> <A NAME="148lfindex5"> </A> <H2>Schluß</H2> Nun kennen wir das generelle Prinzip, der nächste Artikel wird die Client-Seite der Yellow-Pages beleuchten. Wie sie funktionieren, wie sie zu konfigurieren sind, welche Tools zur Anwendung kommen, etc.... Wir werden auch einen Blick auf die Tools werfen, die nötig sind, um unseren Client korrekt zu konfigurieren, sowohl für die RPC's, als auch für die YP's. <!-- 2pdaIgnoreStart --> <A NAME="talkback"> </a> <h2>Talkback für diesen Artikel</h2> Jeder Artikel hat seine eigene Seite für Kommentare und Rückmeldungen. Auf dieser Seite kann jeder eigene Kommentare abgeben und die Kommentare anderer Leser sehen: <center> <table border="0" CELLSPACING="2" CELLPADDING="1"> <tr BGCOLOR="#C2C2C2"><td align=center> <table border="3" CELLSPACING="2" CELLPADDING="1"> <tr BGCOLOR="#C2C2C2"><td align=center> <A href="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=148&lang=en"><b> Talkback Seite </b></a> </td></tr></table> </td></tr></table> </center> <HR size="2" noshade> <!-- ARTICLE FOOT --> <CENTER><TABLE WIDTH="95%"> <TR><TD ALIGN=CENTER BGCOLOR="#9999AA"> <A HREF="../../common/lfteam.html">Der LinuxFocus Redaktion schreiben</A> <BR><FONT COLOR="#FFFFFF">© Frédéric Raynal, <a href="../../common/copy.html">FDL</a> <BR><a href="http://www.linuxfocus.org">LinuxFocus.org</a></FONT> <BR><a href="http://cgi.linuxfocus.org/cgi-bin/lfcomment?lang=de&article=article148.shtml" target="_TOP">Einen Fehler melden oder einen Kommentar an LinuxFocus schicken</A><BR></TD> <TD BGCOLOR="#9999AA"><!-- TRANSLATION INFO --> <font size=2>Autoren und Übersetzer:</font><TABLE> <tr><td><font size=2>fr</font></td> <td><font size=2>-></font></td> <td><font size=2>--</font></td> <td><font size=2><a href="mailto:pappy@users.sourceforge.net"><FONT COLOR="#FFFFFF">Frédéric Raynal</FONT></a></font></td> </tr> <tr><td><font size=2>fr</font></td> <td><font size=2>-></font></td> <td><font size=2>en</font></td> <td><font size=2><a href="mailto:rainbow@linuxfocus.org"><FONT COLOR="#FFFFFF">Johan Decock</FONT></a></font></td> </tr> <tr><td><font size=2>en</font></td> <td><font size=2>-></font></td> <td><font size=2>de</font></td> <td><font size=2><a href="mailto:dieter.b@web.de"><FONT COLOR="#FFFFFF">Dieter Breitenstein</FONT></a></font></td> </tr> </TABLE></TD> </TR></TABLE></CENTER> <p><font size=1>2001-07-19, generated by lfparser version 2.17</font></p> <!-- 2pdaIgnoreStop --> </BODY> </HTML>