orm@doc-tcpip.org | Erstellt: August 1998 - Letzte Modifikation: Juli 2004 |
Dieses Kommando fragt über RPC Calls lokal oder über das Netz die gewünschten Information ab. Das Kommando kennt folgende Flags (spezifiziert man keinen Server im Aufruf, so wird der Localhost angesprochen):
-a server - Ausgabe aller remote Mounts dieses Servers (geht auch von remote). Format ist Hostname:Verzeichnis. Dieser Schalter funktioniert nur auf oder gegen den NFS-Server, da der nfsd dafür laufen muß.
-d server - Wie bei Schalter -a, listet aber nur die Verzeichnisse (keine Maschinennamen).
-e server - Listet alle exportierten Verzeichnisse des Servers auf.
Sinvollerweise nutzt man den Schalter -e auf dem Client gegen einen Server, und die Schalter -a und -d auf einem Server, um zu sehen wer welches Verzeichnis aktuell gemountet hat bzw. einen Überblick über die aktuell exportierten Verzeichnisse zu erhalten.
Hier die Ausgabe von nfsstat -m. Dieses Kommando ist sehr nützlich bei Mount- und Performance-Problemen, da es alle aktuellen Parameter angibt.
%nfsstat -m /mnt from /mnt:nimmaster Flags: vers=3,proto=tcp,auth=unix,hard,intr,link,symlink,rsize=32768,wsize=32768,retrans=5 All: srtt=0 (0ms), dev=0 (0ms), cur=0 (0ms)
In der ersten Zeile wird der Mountpunkt und der Server, von dem man mountet, angeführt. Die Ausgabe ist etwas verwirrend, da beide Male der lokale Mountpunkt erscheint. Das erklärt sich, wenn man von diesem Client aus die Sache betrachtet: Auf dem Mountpunkt /mnt liegt der Server Nimmaster bzw. das von ihm exportierte Verzeichnis.
Dann folgen die Flags: Die Version ist NFSv3, das benutzte Übertragungsprotokoll ist TCP (Standard bei Version 3), der Mechanismus der Authentifizierung ist Standard-Unix (Keywörter vers, proto und auth). Der Mount ist ein Hard-Mount, ein Zugriffs-Fehler wird also nicht an die Applikation weitergegeben. Stattdessen wird es solange probiert, bis es geht (Verhalten eines Systems bei einer kaputten Platte, Keywort hard).
Mit intr ist es möglich, den Mount mit CTRL C zu unterbrechen - was bei einem Hart-Mount normalerweise nicht möglich ist. Die Keywörter link und symlink zeigen anr, das der Server symbolische Links und harte Links unterstützt.
Mit rsize und wsize kann man die Größe der Segmente bezüglich Schreiben und Lesen einstellen. Zum Schluß gibt retrans die Anzahl der NFS-Retransmissions an, also wie oft es der Client versucht.
Ob der Mount geklappt hat, sieht man sofort mittels des mount-Kommandos. Ohne Schalter oder Argumente gibt das Kommando die aktuellen Mounts aus, jeweils unter Angabe der Maschine, von der gemounted wurde (leer, wenn es der Localhost ist), das gemountete Verzeichnis, der Mountpunkt, Type des Filesystems, Datum und die Optionen des Mounts. Hier ein Beispiel:
%mount node mounted mounted over vfs date options -------- --------------- --------------- ------ ------------ --------------- /dev/hd4 / jfs Mar 07 15:31 rw,log=/dev/hd8 /dev/hd2 /usr jfs Mar 07 15:31 rw,log=/dev/hd8 /dev/hd9var /var jfs Mar 07 15:31 rw,log=/dev/hd8 /dev/hd3 /tmp jfs Mar 07 15:31 rw,log=/dev/hd8 /dev/hd1 /home jfs Mar 07 15:32 rw,log=/dev/hd8 /dev/dce_var_lv /var/dce jfs Mar 07 15:32 rw,log=/dev/hd8 /dev/dfs_var_lv /var/dce/adm/dfs/cache jfs Mar 07 15:32 rw,log=/dev/hd8 DFS /... dfs Mar 07 15:34 rw /etc/auto.direct /autofs/tmp_nim autofs Mar 07 15:34 ignore /etc/auto.direct /autofs/intern autofs Mar 07 15:34 ignore /etc/auto.direct /autofs/cdrom autofs Mar 07 15:34 ignore /etc/auto.direct /autofs/testy autofs Mar 07 15:34 ignore nimmaster /tmp /mnt nfs3 Mar 29 17:11 ro
Natürlich werden alle Mounts aufgeführt, also auch die Systemeigenen - für das System ist es egal, ob es ein NFS-Mount oder sonst etwas ist. Die ersten Zeilen (/dev/hdxxx) sind die systemeigenen Mounts. So ist /dev/hd4 am Mountpoint / eingehängt. Der FS-Typ ist JFS, also ein AIX-Journaled Filesystem. Das Datum ist das Datum dieses Mounts, also der letzte Reboot. Danach kommen die Permissions (hier rw, Lesen und Schreiben) sowie das Device, auf dem das JFS-Log sitzt: Standard AIX, also /dev/hd8.
Die Mounts nach /var/dce und /... kommen daher, weil diese Maschine in einer DCE-Zelle integriert ist und das $HOME der User unter DFS (Distributet File System) verwaltet wird (Typ ist dfs...).
Dann kommen 4 Zeilen, die anzeigen, das auf dieser Maschine ein Automounter seinen Dienst tut (eigentlich AutoFS..). Wenn ich in das Verzeichnis /autofs/tmp_nim gehe, springt der Automounter-Deamon an und sieht, das er den Anweisungen in der Datei /etc/auto.direct folgen soll. Dort steht dann, welches Verzeichnis wie und von wem an diesen Mount-Point (/autofs/tmp_nim) gemountet werden soll. Das Filesystem ist autofs, und Optionen sind momentan keine gesetzt, weil ja nichts gemounted ist. Wechselt man in so ein Verzeichnis und macht ein Listing, dann mountet der Automounter sofort das entsprechende, remote Verzeichnis, und in der Ausgabe des mount-Befehles sieht man einen neuen Eintrag für einen normalen Mount, der dann einen FS-Typ und Optionen hat. Hier mehr zum Automounter.
Die letzte Zeile ist der einzige, "normale" NFS-Mount. Zuerst wird
der NFS-Server angegeben, von dem wir mounten. Dann das Verzeichnis auf
dieser Maschine, was wir mounten, der Mountpoint, Typ, Zeit und
Permissions. In diesem Fall haben wir am 29. März um 17:11 Uhr von
dieser Maschine aus vom Server "nimmaster" das /tmp-Verzeichnis in
unseren lokalen Dateibaum unter /mnt eingehängt. Das Filesystem
ist für uns nfs3, wir dürfen nur lesen (read only).
Der benutzte Befehl sah wahrscheinlich so aus:
mount nimmaster:/tmp /mnt
(Die Settings sind Standard...)
Das NFS-Protokoll ist stateless, zumindest vom Design her. Trotzdem müssen Vorkehrungen getroffen werden, wenn einmal eine Maschine crashed und neu gebootet werden muß.
Diese Information hält der Server in zwei Files vor: /etc/rmtab und /etc/xtab. Im File rmtab (ReMote table) finden sich die aktuell von verschiedenen Clients gemounteten Verzeichnisse. Führt ein Client einen umount aus, so wird der erste Buchstabe durch ein Kommentar-Zeichen ersetzt. Hier ein Beispiel:
# cat /etc/rmtab #fsclient:/download nfsclient:/download nfsclient2:/export/home2
Im File xtab (eXport table) trägt der Server alle von ihm exportierten (also zum Mounten freigegebenen Verzeichnisse) ein. Zusätzlich sind die Zugriffrechte verzeichnet, also welche Maschinen in welchem Modus (lesen, schreiben) auf diesen Export zugreifen können.
Dazu dienen die Befehle exportfs und die Datei /etc/exports. Man kann ein Verzeichnis mit entsprechenden Optionen auf der Kommandozeile exportieren - die Einstellungen gehen über einen Boot natürlich verloren. Trägt man den gewünschten Export in die /etc/exports ein, so werden die Exports beim Starten des nfsd automatisch eingerichtet. Mit dem Befehl exportfs -a kann die /etc/exports jederzeit eingelesen werden.
Auf dem Server wird die Datei /etc/exports entsprechend eingerichtet. Jeder Export/Mount kann mit Optionen (lesen, schreiben ..) und Zugriffsgruppen (nach Maschinen und Netzgruppen) versehen werden:
# cat /etc/exports /download -ro,root=nfsclient /tmp -rw=nfsclient:nfsclient1 /tftpboot -access=einclient /bin -anon=100 #
Folgende Optionen stehen zur Verfügung:
ro - Read only. Rein lesender Zugriff.
rw=client1:client2 - Schreibender Zugriff für diese Maschinen. Lesender Zugriff für alle anderen.
anon=UID - Falls der Root-User den mount ausführt, so wird er auf dem Server als diese UID geführt (100 ist in der Regel guest).
root=client1:client2 - Root-Zugriff ist nur von diesen Maschinen möglich.
access=client1 - Zugriff ist nur von dieser Maschine möglich.
Das oben gezeigte File exports wird mit dem Kommando exportfs -av eingelesen und führt zu folgender Ausgabe von showmount -e:
export list for nfsserver: /download (everyone) /tmp (everyone) /tftpboot einclient /bin (everyone)
Der Client erhält per showmount-Befehl diesselbe Sicht der vorhandenen Exports wie der Server:
root@nfsclient:/> showmount -e nfsserver export list for nfsserver: /download (everyone) /tmp (everyone) /tftpboot einclient /bin (everyone)
Das mounten eines vom Server exportierten Filesystemes geschieht durch den Aufruf des mount-Kommandos. Die Syntax wird durch den Namen des Servers, der das Verzeichnis exportiert hat, erweitert:
root@nfsclient:/> mount nfsserver:/tftpboot /mnt mount: 1831-011 access denied for nfsserver:/tftpboot mount: 1831-008 giving up on: nfsserver:/tftpboot The file access permissions do not allow the specified action.
In diesem Fall wird versucht, das Verzeichnis tftpboot zu mounten. Dieses Verzeichnis ist laut der Ausgabe des showmount-Kommandos nur für User auf der Maschine einclient exportiert. Der Server hat die Berechtigung des Client nfsclient geprüft und dabei festgestellt, das keine Berechtigung vorliegt. Der Client wird abgewiesen.
Jetzt mounten wir etwas, was wir dürfen: Das Verzeichnis
/bin ist für Jederman (everybody) zugänglich.
Der Mount erfolgt mit folgendem Kommando:
mount nfsserver:/bin /mnt
Dieser Mount wird auf Clientseite wie jeder andere Mount behandelt:
root@nfsclient:/> mount node mounted mounted over vfs date options -------- --------------- --------------- ------ ------------ --------------- /dev/hd4 / jfs Sep 03 21:05 rw,log=/dev/hd8 /dev/hd2 /usr jfs Sep 03 21:05 rw,log=/dev/hd8 /dev/hd9var /var jfs Sep 03 21:05 rw,log=/dev/hd8 /dev/hd3 /tmp jfs Sep 03 21:05 rw,log=/dev/hd8 /dev/hd1 /home jfs Sep 03 21:06 rw,log=/dev/hd8 /proc /proc procfs Sep 03 21:06 rw /dev/hd10opt /opt jfs Sep 03 21:06 rw,log=/dev/hd8 /dev/tmplv /download jfs Sep 03 21:06 rw,log=/dev/hd8 nfsserver /bin /mnt nfs3 Sep 05 03:27
Es wird zusätzlich angegeben, von welchem Server gemountet wird. Das Dateisystem ist nfs3. Eigenartigerweise werden die Optionen des Mounts in der rechten Spalte nicht aufgeführt - ein Bug in AIX 5.1?
Der Client kann es nicht sehen, aber das Verzeichnis /bin ist zwar mit Lese- und Schreibrechten exportiert, mapped aber die UID des darin stehenden Users auf die UID 100, in diesem Fall der User guest mit wenig Rechten. Jetzt gehört das Verzeichnis /bin dem User desselben Namens, und eine UID wie 100 darf dort nichts schreiben.
root@nfsclient:/> cd /mnt root@nfsclient:/mnt> touch ein.file touch: 0652-046 Cannot create ein.file.
[ Allgemein | UNIX | AIX | TCP-IP | TCP | ROUTING | DNS | NTP | NFS | FreeBSD | Linux | RPi | SMTP | Tracing | GPS | LW ]
Copyright 2001-2021 by Orm Hager - Es gilt die GPL